Tracking schemas for B2B transactions in Standard workflows for Azure Logic Apps (Preview)
Applies to: Azure Logic Apps (Standard)
Note
This capability is in preview and is subject to the Supplemental Terms of Use for Microsoft Azure Previews.
Azure Logic Apps includes built-in tracking that you can enable for parts of your Standard workflow. To help you monitor the successful delivery or receipt, errors, and properties for business-to-business (B2B) messages, this guide helps you better understand the tables that store B2B tracking data for your transactions.
Note
This article applies only to Standard logic app workflows. For information about monitoring Consumption logic app workflows, see the following documentation:
AS2TrackRecords tracking table for AS2
The Azure Database Explorer table named AS2TrackRecords stores all AS2 tracking data. The following sample describes the query that creates this table and the required order for specifying the table columns:
.create table AS2TrackRecords (
IntegrationAccountSubscriptionId: string, // Subscription ID for the integration account.
IntegrationAccountResourceGroup: string, // Resource group for the integration account.
IntegrationAccountName: string, // Name for the integration account.
IntegrationAccountId: string, // ID for the integration account.
WorkflowRunOperationInfo: dynamic, // Operation information for the workflow run. This dynamic type uses a specific JSON schema.
ClientRequestId: string, // Client request ID.
EventTime: datetime, // Time of the event.
Error: dynamic, // Error, if any.
RecordType: string, // Type of tracking record.
Direction: string, // Message flow direction, which is either 'send' or 'receive'.
IsMessageFailed: bool, // Whether the AS2 message failed.
MessageProperties: dynamic, // Message properties. This dynamic type uses different schema based on the tracking record type.
AdditionalProperties: dynamic, // Additional properties.
TrackingId: string, // Custom tracking ID, if any.
AgreementName: string, // Name for the AS2 agreement that resolves the messages.
As2From: string, // Name for the AS2 message sender in the AS2 message headers.
As2To: string, // Name for the AS2 message receiver in the AS2 headers.
ReceiverPartnerName: string, // Partner name for the AS2 message receiver.
SenderPartnerName: string, // Partner name for the AS2 message sender.
MessageId: string, // AS2 message ID.
OriginalMessageId: string,// Original AS2 message ID.
CorrelationMessageId: string, // Message ID for correlating AS2 messages with Message Disposition Notifications (MDNs).
IsMdnExpected: bool // Whether the Message Dispoition Notification (MDN) is expected.
)
Note
The WorkflowRunOperationInfo table column has a dynamic type structure, which uses a specific JSON schema. The MessageProperties table column also has a dynamic type structure, but uses different JSON schema, based on the tracking record type. For more information, see the following sections:
AS2 tracking record - MessageProperties schemas
The MessageProperties table column has a dynamic type structure that uses different JSON schema, based on the tracking record type.
AS2 message - MessageProperties schema
The following syntax describes the MessageProperties schema when the tracking record type is an AS2 message:
{
"direction": "",
"messageId": "",
"dispositionType": "",
"fileName": "",
"isMessageFailed": "",
"isMessageSigned": "",
"isMessageEncrypted": "",
"isMessageCompressed": "",
"correlationMessageId": "",
"incomingHeaders": {},
"outgoingHeaders": {},
"isNrrEnabled": "",
"isMdnExpected": "",
"mdnType": ""
}
Property | Type | Description |
---|---|---|
direction | String | Message flow direction (send or receive ) |
messageId | String | AS2 message ID from AS2 message header |
dispositionType | String | Disposition type for the Message Disposition Notification (MDN) |
fileName | String | File name from the AS2 message header |
isMessageFailed | Boolean | Whether the AS2 message failed |
isMessageSigned | Boolean | Whether the AS2 message was signed |
isMessageEncrypted | Boolean | Whether the AS2 message was encrypted |
isMessageCompressed | Boolean | Whether the AS2 message was compressed |
correlationMessageId | String | Message ID for correlating AS2 messages with Message Disposition Notifications (MDNs) |
incomingHeaders | JToken dictionary | Header details for the incoming AS2 message |
outgoingHeaders | JToken dictionary | Header details for the outgoing AS2 message |
isNrrEnabled | Boolean | Whether Non-Repudiation of Receipt (NRR) is enabled |
isMdnExpected | Boolean | Is the Message Disposition Notification (MDN) expected |
mdnType | Enum | Allowed values: NotConfigured , Sync , and Async |
AS2 MDN - MessageProperties schema
The following syntax describes the MessageProperties schema when the tracking record type is an AS2 MDN:
{
"direction": "",
"messageId": "",
"originalMessageId": "",
"dispositionType": "",
"isMessageFailed": "",
"isMessageSigned": "",
"isNrrEnabled": "",
"statusCode": "",
"micVerificationStatus" "",
"correlationMessageId": "",
"incomingHeaders": {},
"outgoingHeaders": {},
}
Property | Type | Description |
---|---|---|
direction | String | Message flow direction (send or receive ) |
messageId | String | AS2 message ID from AS2 message header |
originalMessageId | String | Message ID for the original AS2 message |
dispositionType | String | Disposition type for the Message Disposition Notification (MDN) |
isMessageFailed | Boolean | Whether the AS2 message failed |
isMessageSigned | Boolean | Whether the AS2 message was signed |
isNrrEnabled | Boolean | Whether Non-Repudiation of Receipt (NRR) is enabled |
statusCode | Enum | Allowed values: Accepted , Rejected , and AcceptedWithErrors |
micVerificationStatus | Enum | Allowed values: NotApplicable , Succeeded , and Failed |
correlationMessageId | String | Correlation ID, which is the ID for the original message that has the MDN configured |
incomingHeaders | JToken dictionary | Header details for the incoming AS2 message |
outgoingHeaders | JToken dictionary | Header details for the outgoing AS2 message |
EdiTrackRecords tracking table for X12
The Azure Database Explorer table named EdiTrackRecords stores all X12 tracking data. The following sample describes the query that creates this table and the required order for specifying the table columns:
.create table EdiTrackRecords (
IntegrationAccountSubscriptionId: string, // Subscription ID for the integration account.
IntegrationAccountResourceGroup: string, // Resource group for the integration account.
IntegrationAccountName: string, // Name for the integration account.
IntegrationAccountId: string, // ID for the integration account.
WorkflowRunOperationInfo: dynamic, // Operation information for the workflow run.
ClientRequestId: string, // Client request ID.
EventTime: datetime, // Time of the event.
Error: dynamic, // Error, if any.
RecordType: string, // Type of tracking record.
Direction: string, // Message flow direction, which is either 'receive' or 'send'.
IsMessageFailed: bool, // Whether the message failed.
MessageProperties: dynamic, // Message properties.
AdditionalProperties: dynamic, // Additional properties.
TrackingId: string, // Custom tracking ID, if any.
AgreementName: string, // Name for the agreement that resolves the messages.
SenderPartnerName: string, // Partner name for the message sender.
ReceiverPartnerName: string, // Partner name for the X12 message receiver.
SenderQualifier: string, // Qualifier for the partner X12 message sender.
SenderIdentifier: string, // Identifier for the partner X12 message sender.
ReceiverQualifier: string, // Qualifier for the partner X12 message receiver.
ReceiverIdentifier: string, // Identiifer for the partner X12 message receiver.
TransactionSetControlNumber: string, // Control number for the transaction set.
FunctionalGroupControlNumber: string, // Control number for the functional group.
InterchangeControlNumber: string, // Control number for the interchange.
MessageType: string, // Transaction set or document type.
RespondingTransactionSetControlNumber: string, // Control number for the responding transaction set, in case of acknowledgment.
RespondingFunctionalGroupControlNumber: string, // Control number for the responding functional group, in case of acknowledgment.
RespondingInterchangeControlNumber: string, // Control number for the responding interchange, in case of acknowledgement.
ProcessingStatus: string // Acknowledgment processing status with these permitted values: 'Received', 'Generated', and 'Sent'
)
X12 tracking record - MessageProperties schemas
The MessageProperties table column has a dynamic type structure that uses different JSON schema, based on the tracking record type.
X12 transaction set - MessageProperties schema
The following syntax describes the MessageProperties schema when the tracking record type is an X12 transaction set:
{
"direction": "",
"interchangeControlNumber": "",
"functionalGroupControlNumber": "",
"transactionSetControlNumber": "",
"correlationMessageId": "",
"messageType": "",
"isMessageFailed": "",
"isTechnicalAcknowledgmentExpected": "",
"isFunctionalAcknowledgmentExpected": "",
"needAk2LoopForValidMessages": "",
"segmentsCount": ""
}
Property | Type | Description |
---|---|---|
direction | Enum | Message flow direction (send or receive ) |
interchangeControlNumber | String | Control number for the interchange |
functionalGroupControlNumber | String | Control number for the functional group |
transactionSetControlNumber | String | Control number for the transaction set |
correlationMessageId | String | Message correlation ID, which combines these values: {AgreementName}{Interchange-or-FunctionalGroup-ControlNumber}{TransactionSetControlNumber} |
messageType | String | Transaction set or document type |
isMessageFailed | Boolean | Whether the X12 message failed |
isTechnicalAcknowledgmentExpected | Boolean | Whether the technical acknowledgment is configured in the X12 agreement |
isFunctionalAcknowledgmentExpected | Boolean | Whether the functional acknowledgment is configured in the X12 agreement |
needAk2LoopForValidMessages | Boolean | Whether the AK2 loop is required for a valid message |
segmentsCount | Integer | Number of segments in the X12 transaction set |
X12 transaction set acknowledgment - MessageProperties schema
The following syntax describes the MessageProperties schema when the tracking record type is an X12 transaction set acknowledgment:
{
"direction": "",
"interchangeControlNumber": "",
"functionalGroupControlNumber": "",
"respondingFunctionalGroupControlNumber": "",
"respondingFunctionalGroupId": "",
"respondingTransactionSetId": "",
"statusCode": "",
"processingStatus": "",
"correlationMessageId": "",
"isMessageFailed": ""
}
Property | Type | Description |
---|---|---|
direction | String | Message flow direction (send or receive ) |
interchangeControlNumber | String | Interchange control number for the functional acknowledgment. This value populates only for the sender when a functional acknowledgment is received for the messages sent to the partner. |
functionalGroupControlNumber | String | Functional group control number for the functional acknowledgment. This value populates only for the sender when a functional acknowledgment is received for the messages sent to the partner. |
respondingFunctionalGroupControlNumber | String | Control number for the responding functional group |
respondingFunctionalGroupId | String | Control number for the responding functional group |
respondingTransactionSetId | String | ID for the responding functional group that maps to AK101 in the acknowledgment |
statusCode | Boolean | Acknowledgment status code for the transaction set |
processingStatus | Enum | Acknowledgment processing status with these permitted values: Received , Generated , and Sent |
correlationMessageId | String | Message correlation ID, which combines these values: {AgreementName}{InterchangeORFunctionalGroupControlNumber}{TransactionSetControlNumber} |
isMessageFailed | String | Whether the X12 message failed |
X12 interchange - MessageProperties schema
The following syntax describes the MessageProperties schema when the tracking record type is an X12 interchange:
{
"direction": "",
"interchangeControlNumber": "",
"isTechnicalAcknowledgmentExpected": "",
"isMessageFailed": "",
"isa09": "",
"isa10": "",
"isa11": "",
"isa12": "",
"isa14": "",
"isa15": "",
"isa16": ""
}
Property | Type | Description |
---|---|---|
direction | Enum | Message flow direction (send or receive ) |
interchangeControlNumber | String | Control number for the interchange |
isTechnicalAcknowledgmentExpected | Boolean | Whether the technical acknowledgment is configured in the X12 agreement |
isMessageFailed | Boolean | Whether the X12 message failed |
isa09 | String | X12 document interchange date |
isa10 | String | X12 document interchange time |
isa11 | String | X12 interchange control standards identifier |
isa12 | String | X12 interchange control version number |
isa14 | String | X12 acknowledgment is requested |
isa15 | String | Indicator for test or production |
isa16 | String | Element separator |
X12 interchange acknowledgment - MessageProperties schema
The following syntax describes the MessageProperties schema when the tracking record type is an X12 interchange acknowledgment:
{
"direction": "",
"interchangeControlNumber": "",
"respondingInterchangeControlNumber": "",
"isMessageFailed": "",
"statusCode": "",
"processingStatus": "",
"ta102": "",
"ta103": "",
"ta105": ""
}
Property | Type | Description |
---|---|---|
direction | Enum | Message flow direction (send or receive ) |
interchangeControlNumber | String | Interchange control number for the technical acknowledgment that is received from partners |
isMessageFailed | Boolean | Whether the X12 message failed |
statusCode | Boolean | Interchange acknowledgment status code with these permitted values: Accepted , Rejected , and AcceptedWithErrors |
processingStatus | Enum | Acknowledgment processing status with these permitted values: Received , Generated , and Sent |
ta102 | String | Interchange date |
ta103 | String | Interchange time |
ta103 | String | Interchange note code |
X12 functional group - MessageProperties schema
The following syntax describes the MessageProperties schema when the tracking record type is an X12 functional group:
{
"direction": "",
"interchangeControlNumber": "",
"functionalGroupControlNumber": "",
"isTechnicalAcknowledgmentExpected": "",
"isFunctionalAcknowledgmentExpected": "",
"isMessageFailed": "",
"gs01": "",
"gs02": "",
"gs03": "",
"gs04": "",
"gs05": "",
"gs07": "",
"gs08": ""
}
Property | Type | Description |
---|---|---|
direction | Enum | Message flow direction (send or receive ) |
interchangeControlNumber | String | Control number for the interchange |
functionalGroupControlNumber | String | Control number for the functional group |
isTechnicalAcknowledgmentExpected | Boolean | Whether the technical acknowledgment is configured in the X12 agreement |
isFunctionalAcknowledgmentExpected | Boolean | Whether the functional acknowledgment is configured in the X12 agreement |
isMessageFailed | Boolean | Whether the X12 message failed |
gs01 | String | Functional group identifier code |
gs02 | String | Application sender code |
gs03 | String | Application receiver code |
gs04 | String | Functional group date |
gs05 | String | Functional group time |
gs07 | String | Responsible agency code |
gs08 | String | Identifier code for the version, release, or industry |
X12 functional group acknowledgment - MessageProperties schema
The following syntax describes the MessageProperties schema when the tracking record type is an X12 functional group acknowledgment:
{
"direction": "",
"interchangeControlNumber": "",
"functionalGroupControlNumber": "",
"respondingFunctionalGroupControlNumber": "",
"respondingFunctionalGroupId": "",
"isMessageFailed": "",
"statusCode": "",
"processingStatus": "",
"ak903": "",
"ak904": "",
}
Property | Type | Description |
---|---|---|
direction | Enum | Message flow direction (send or receive ) |
interchangeControlNumber | String | Control number for the interchange. This value populates for the sender when a technical acknowledgment is received from partners. |
functionalGroupControlNumber | String | Control number for the functional group |
respondingFunctionalGroupControlNumber | String | Control number for the original functional group |
respondingFunctionalGroupId | String | Maps to AK101 in the acknowledgment functional group ID |
statusCode | Enum | Acknowledgment status code with these permitted values: Accepted , Rejected , and AcceptedWithErrors |
processingStatus | String | Acknowledgment processing status with these permitted values: Received , Generated , and Sent |
ak903 | String | Number of received transaction sets |
ak903 | String | Number of accepted transaction sets in the identified functional group |
WorkflowRunOperationInfo schema
The WorkflowRunOperationInfo table column in the AS2TrackRecords table and EdiTrackRecords table captures information about the Standard logic app workflow run. This column has a dynamic type structure that uses the following JSON schema:
{
"title": "WorkflowRunOperationInfo",
"type": "object",
"properties": {
"Workflow": {
"type": "object",
"properties": {
"SystemId": {
"type": "string",
"description": "The workflow system ID."
},
"SubscriptionId": {
"type": "string",
"description": "The subscription ID of the workflow."
},
"ResourceGroup": {
"type": "string",
"description": "The resource group name of the workflow."
},
"LogicAppName": {
"type": "string",
"description": "The logic app name of the workflow."
},
"Name": {
"type": "string",
"description": "The name of the workflow."
},
"Version": {
"type": "string",
"description": "The version of the workflow."
}
}
},
"RunInstance": {
"type": "object",
"properties": {
"RunId": {
"type": "string",
"description": "The logic app run id."
},
"TrackingId": {
"type": "string",
"description": "The tracking id of the run."
},
"ClientTrackingId": {
"type": "string",
"description": "The client tracking id of the run."
}
}
},
"Operation": {
"type": "object",
"properties": {
"OperationName": {
"type": "string",
"description": "The logic app operation name."
},
"RepeatItemScopeName": {
"type": "string",
"description": "The repeat item scope name."
},
"RepeatItemIndex": {
"type": "integer",
"description": "The repeat item index."
},
"RepeatItemBatchIndex": {
"type": "integer",
"description": "The index of the repeat item batch."
},
"TrackingId": {
"type": "string",
"description": "The tracking id of the logic app operation."
},
"CorrelationId": {
"type": "string",
"description": "The correlation id of the logic app operation."
},
"ClientRequestId": {
"type": "string",
"description": "The client request id of the logic app operation."
},
"OperationTrackingId": {
"type": "string",
"description": "The operation tracking id of the logic app operation."
}
}
}
}
}