DataHub Error Log
Overview
The DataHub Error Log is the place in 3PL Dynamics where errors from your DataHub integrations are collected, classified, and followed up. When an integration flow fails, the error is brought into Business Central and shown on the DataHub Error List.
From that list you can see what failed, how serious it is, and who should be told. Error Rules classify each error. A condition on a rule can also send an email to the people who need to act on that case, so you do not have to watch the list for every failure.
From a single overview you can:
- Monitor integration errors across your flows
- Track the status and severity of each error
- Open the Flow Run where the error occurred
- Read the error message and stack trace
- Classify errors automatically with Error Rules
- Send an email to the right recipients when a rule matches
- See the number of new errors on the role center
How It Works
Azure Cloud (DataHub)
│
│ Error occurs in a Flow Run
│
▼
Azure Error Queue
│
│ Pulled on Refresh (or scheduled)
│
▼
DataHub Error Log (Business Central)
│
├─ Error Rule Evaluator runs automatically
│ ├─ Assigns Severity based on configured rules
│ └─ Sends an email when a matching rule has Send Email on
│
└─ Error List page shows grouped tree view
When you choose Refresh on the Error List, Business Central fetches pending error messages and stores them in the Error Log. The same import runs on a schedule when the job queue entry from Create Job Queue on DataHub 2 Setup is active. After importing, the rules run automatically. They set the severity, and they send an email for each matching condition that has Send Email turned on.
The Error List
Navigate to the Error List via: Alt+Q → DataHub Error List
The list shows errors as a tree. The first occurrence is the parent and is shown in bold. Later occurrences of that same error are grouped underneath it. The tree starts collapsed. Expand a parent row to see them.
Columns
| Column | Description |
|---|---|
| Date / Hour | The date and hour (YYYYMMDDHH) when the error occurred |
| Status | The current handling status of the error |
| Severity | The classified severity level (Low, Medium, High, Critical) |
| Time Stamp Error | The exact date and time the error was logged |
| Core Version | The DataHub core version at the time of the error |
| Flow Description | The name of the integration flow that failed |
| Exception Message | A preview of the error message |
| Number of Errors | The total count of entries in this group (parent + children) |
| Email Status | The result of the latest error-rule email: Scheduled, Sent, or Failed. Empty when no email was sent for this error |
| Email Error | Why the latest error-rule email could not be sent. Filled only when Email Status is Failed |
| Run Id | The unique identifier of the specific flow run that failed |
| Flow Id | The unique identifier of the integration flow |
| Modified Date/Time | When the error entry was last modified |
| Modified User ID | The user who last modified the entry |
Default View
The page opens with a filter on Status = New so you immediately see only unhandled errors. You can remove this filter to see all error statuses.
Error Status
Each error entry has a Status that reflects its handling lifecycle. Use the Set Status action to progress an error through the workflow.
| Status | Description |
|---|---|
| New | The error has just arrived and has not yet been looked at |
| To Investigate | The error has been flagged for further analysis |
| Investigating | Someone is actively looking into the error |
| Restarted | The related flow run has been restarted from the DataHub portal |
| Resolved | The underlying issue has been fixed |
| No Action Required | The error is known and does not require any action |
| Cannot Reproduce | The error could not be reproduced and is considered closed |
Important
Changing the status of a parent entry also updates all its child entries to the same status.
Error Severity
The Severity indicates how critical an error is. It is assigned automatically by the Error Rule Evaluator when new errors are imported. If no rule matches, the default severity is Medium.
| Severity | Description |
|---|---|
| Low | Minor issue; no immediate action needed |
| Medium | Standard integration error; should be investigated in due course |
| High | Significant error affecting business processes; investigate promptly |
| Critical | Blocking error with direct business impact; requires immediate attention |
The severity is color-coded in the list for quick visual identification: Critical errors are shown in red, High in orange/amber, Medium in yellow, and Low in green.
Note
The severity of a parent entry reflects the highest severity found among itself and all its child entries.
Actions
Set Status
Changes the status of one or more selected error entries. A menu lets you choose from all available statuses. Child entries of a selected parent are updated automatically.
Open Flow Runs
Opens the DataHub Flow Run list filtered to the flow and run associated with the selected error. Use this to inspect the individual action steps and find exactly where the error occurred.
For a full explanation of the Flow Run view, see Data Hub Transactions.
Open Error Message
Opens the full exception message text in a viewer. This contains the detailed description of what went wrong.
Open Stack Trace
Opens the technical stack trace for the error. This is useful when escalating to support as it shows the exact execution path through the DataHub core.
Email Call Stack
Opens the technical details of the latest failed error-rule email. Available only when Email Status is Failed. If the email failed before sending started, for example because no email company is set, there is no call stack. Email Error then explains the reason.
Download Email Call Stack
Saves that same call stack as a text file. Available only when Email Status is Failed.
Error Rules
Opens the Error Rules configuration list. See Error Rules below. From that list you can also choose Initialize Email Template to create the standard notification email.
Refresh
Pulls new error messages from the Azure Queue and runs the Error Rule Evaluator. Use this to manually fetch the latest errors without waiting for the next scheduled run.
Delete
Deletes the selected error entries. When deleting a parent entry, all its child entries are also deleted. A confirmation dialog shows the number of records that will be removed.
Error Rules
Error Rules classify incoming errors by severity, based on the error text or on how often the same error occurs. Without rules, every error is Medium. With rules, you can flag a pattern as Critical, or mark a known harmless error as Low.
Each condition can also send an email. See Email notifications.
Rule Types
There are two levels of rules: General rules and Flow-specific rules.
General Rules
- Apply to all errors, regardless of which flow they come from
- Only one General rule entry is allowed
- Contains multiple individual conditions (see Rule Conditions below)
Flow-specific Rules
- Apply only to errors from a specific flow (identified by Flow Id)
- Multiple flow-specific entries can exist — one per flow
- Can optionally overwrite the General rules (see Overwrite General)
Overwrite General
When a Flow-specific rule has Overwrite General enabled, the General rules are not applied to errors from that flow. Only the conditions in the Flow-specific rule are evaluated.
When Overwrite General is disabled (default), both the General rules and the Flow-specific rules are evaluated together for errors from that flow.
Rule Conditions
Each rule entry (General or Flow-specific) contains one or more conditions. These are the actual matching criteria that determine whether a rule applies to a given error.
Condition Fields
| Field | Description |
|---|---|
| Rule Type | The matching method: Contains, Regex, or Count |
| Value | The value or pattern to match against |
| Priority | Evaluation priority (lower number = higher priority) |
| Severity | The severity level to assign when this condition matches |
| Send Email | Sends an email when this condition matches. You can fill the template and the recipients first, and turn this on later |
| Email Template | The email template used when Send Email is on |
| Mailing Group | Contacts in this mailing group receive the email |
| To Addresses | Extra email addresses. Separate several addresses with a semicolon or a comma |
Rule Types
Contains
Performs a case-insensitive text search in the exception message. The rule matches if the error message contains the specified value anywhere in its text.
Example:
Rule Type: Contains
Value: timeout
Severity: Low
This rule matches any error whose message contains the word "timeout" (regardless of casing) and classifies it as Low severity.
Regex
Evaluates a regular expression pattern against the exception message. Useful for more precise matching, such as specific error codes or structured patterns.
Example:
Rule Type: Regex
Value: ^HTTP 40[134]
Severity: High
This rule matches errors where the message starts with HTTP 401, 403, or 404, and classifies them as High severity.
Note
The regex pattern is checked when you leave the Value field. An invalid pattern cannot be saved.
Count
Matches based on the total number of errors in a group (parent + children). Use this to escalate severity when the same error recurs many times.
Example:
Rule Type: Count
Value: 10
Severity: Critical
This rule matches when a single error occurs 10 or more times, classifying the group as Critical.
Evaluation Logic
When new errors are imported, the Error Rule Evaluator applies the following logic:
Collect applicable rules for the error's Flow Id:
- Always include General rules, unless a Flow-specific rule has Overwrite General enabled
- Include Flow-specific rules for the matching Flow Id if they exist
Evaluate each condition against the error:
- Contains: check if exception message contains the value
- Regex: check if exception message matches the pattern
- Count: check if the total error count meets or exceeds the threshold
Determine the final severity from all matched conditions:
- The condition with the lowest Priority number wins
- If multiple conditions share the same priority, the highest Severity wins
- If no conditions match, the error receives the default severity: Medium
Update both the child and parent error log entry with the determined severity
Send email for every matched condition that has Send Email turned on. Severity and email are separate: the condition that wins the severity is not the only one that can send. See Email notifications.
Email notifications
Use an email when the right person should hear about an error without opening the DataHub Error List.
You choose the recipients on each condition. A general rule can send everyday integration errors to a shared mailbox. A rule for one flow, or for one error text, can send that case to a different address. The people who can fix the error receive it. Other errors stay on the list.
When an email is sent
The check runs when new errors are imported, with Refresh or with the scheduled import. A condition sends an email only when Send Email is on.
| Rule type | When the email is sent |
|---|---|
| Contains or Regex | Once, for the first occurrence of that error. Repeats of the same error do not send another email. |
| Count | Once, when the number of occurrences reaches the number in Value. Later occurrences do not send another email. |
Every matching condition with Send Email on sends its own email. A general rule and a flow rule can therefore notify different people about the same error. If the flow rule has Overwrite General on, the general rule is not used, and only the flow rule can send an email.
The email is created and sent in the company you select as Email Company. The template and the mailing group are read from that company.
What the recipient gets
Initialize Email Template creates a sample you can send as-is or adjust:
| Sample | |
|---|---|
| Code | DH2ERROR |
| Description | DataHub Error Notification |
| Language | English |
| Subject | The flow name and the severity, for example DataHub Error: Order import [High] |
| Body | Flow, flow id, severity, source, time of the error, error id, the exception message, the stack trace, and a link Open this error in Business Central |
On the condition line, Email Template opens the template so you can change the subject and the body. The template source type is DataHub Error Log. For the layout of templates, see E-mail Template.
If DH2ERROR already has text, you are asked whether to replace it with this sample.
See whether the email went out
Email Status and Email Error on the DataHub Error List show the result of the latest email for that error. When several rules send an email, the list shows the latest result.
| Email Status | What it means |
|---|---|
| (empty) | No error-rule email has been started for this error |
| Scheduled | The email is waiting to be sent |
| Sent | The email was sent |
| Failed | The email was not sent. Email Error gives the reason |
When the status is Failed, use Email Call Stack or Download Email Call Stack. Some failures happen before sending starts. Then there is no call stack, and Email Error is the explanation. Two examples:
- No email company is set in DataHub Setup, so DataHub error emails cannot be sent.
- The email company {company id} in DataHub Setup no longer exists.
To analyze the integration error itself, use Open Flow Runs, or follow Data Hub Error Analysis.
How to configure it
Create the template and the mailing group in the company that sends the mail, and select that same company as Email Company. Both belong to one company. A template created in another company is not used, and the email fails. That company must already be able to send email from 3PL Dynamics. If sending fails, Email Status becomes Failed and Email Error shows why.
- Switch to the company that should send the emails.
- Search for DataHub 2 Setup (
Alt+Q). - Under Error Notifications, set Email Company to the company you are in. This setting is the same for every company in the environment.
- On DataHub 2 Setup, or on DataHub Error Rule, choose Initialize Email Template. Template DH2ERROR is created in the current company and opened. Adjust the text if you need to. You can also create your own template and set its source type to DataHub Error Log.
- If a group of people should receive the email, search for Mailing Groups, create the group in this same company, and add the contacts. You can also type addresses on the rule.
- Open DataHub Error Rule, open the general rule or the flow rule, and on the condition line set:
- Email Template
- Mailing Group, To Addresses, or both. Separate several addresses with a semicolon or a comma.
- Send Email
- You can fill the template and the recipients before you turn Send Email on. When you turn it on, a template is required, and at least a mailing group or an address is required.
Note
The error import does not have to run in the email company. The email is still sent from the company you selected.
Example. Everyday errors go to the integration mailbox. A missing customer on the order flow goes to the order desk.
General rule, applies to every flow:
| Rule Type | Value | Send Email | Recipients |
|---|---|---|---|
| Contains | timeout | Yes | Mailing group Integration support |
Flow rule for the order flow, Overwrite General off:
| Rule Type | Value | Send Email | Recipients |
|---|---|---|---|
| Contains | customerId not found | Yes | To Addresses orderdesk@example.com |
A timeout on that flow is mailed only to integration support. A missing customer id is mailed only to the order desk, because the general rule does not match that text. If you also want the order desk to receive timeouts for this flow only, add that condition on the flow rule.
Configuration Guide
Setting Up a General Rule
Use general rules to catch common error patterns that apply across all your integrations.
- Navigate to
Alt+Q→ DataHub Error Rule - Click New
- Set Entry Type to
General - Enter a Description (e.g.
General Error Classification) - In the Conditions subpage, add one or more conditions:
- Choose a Rule Type
- Enter the Value to match
- Set the Priority (start at 1, 2, 3 for multiple conditions)
- Select the Severity to assign when matched
- To notify someone, set Email Template, the recipients, and Send Email. See How to configure it.
- Save the record
Important
Only one General rule entry is allowed. All general conditions must be added as lines within that single entry.
Setting Up a Flow-specific Rule
Use flow-specific rules to override or extend the general classification for a specific integration.
- Navigate to
Alt+Q→ DataHub Error Rule - Click New
- Set Entry Type to
Flow - Use the Flow Id assist-edit button (or type directly) to select the flow
- Enter a Description
- Optionally enable Overwrite General if this flow's rules should replace the general ones
- Add Conditions in the subpage
- Save the record
Example Setup
The following example shows a typical classification setup:
General Rule (applies to all flows):
| Rule Type | Value | Priority | Severity |
|---|---|---|---|
| Contains | timeout | 10 | Low |
| Contains | connection refused | 10 | High |
| Count | 5 | 20 | High |
| Count | 20 | 20 | Critical |
Flow-specific Rule for an order integration flow:
| Rule Type | Value | Priority | Severity |
|---|---|---|---|
| Contains | customerId not found | 1 | High |
| Regex | ^HTTP 5\d\d | 1 | Critical |
| Count | 3 | 5 | Critical |
With Overwrite General disabled, both rule sets are evaluated for that flow. The condition with the lowest priority number (1 in the flow rule) will take precedence when it matches.
Common Scenarios
Scenario 1: All errors arrive with Medium severity
No Error Rules are configured. Configure a General rule with Contains and Count conditions to start classifying errors automatically.
Scenario 2: Known harmless errors show as High severity
Add a Contains or Regex condition for that specific error message with a lower priority number and set Severity to Low. Because it has lower priority, it will take precedence over general Count rules.
Scenario 3: A specific flow needs different thresholds
Create a Flow-specific rule for that flow. Enable Overwrite General if the general rules don't apply at all, or leave it disabled if you want both to be evaluated.
Scenario 4: Recurring errors should escalate automatically
Add a Count condition with the desired occurrence threshold. Set a higher Severity level and a priority number higher than specific message conditions (so message-specific rules can still override when applicable). Turn on Send Email on that Count line if someone should be mailed once, at the moment the threshold is reached.
Scenario 5: Different people should hear about different errors
Leave Send Email off on conditions that only classify severity. Turn it on for the conditions that need a person. Use the general rule for the shared mailbox, and a flow rule for a team that only cares about one flow. Leave Overwrite General off when both should be able to send. Turn it on when this flow should ignore the general recipients.
Show new errors on the role center
These role centers include Integration Activities:
- WMS - TMS Role Center
- WMS Order Processor Role Center
- WMS Air/Ocean Role Center
- TMS - AIR & Ocean Role Center
- WMS Support Role Center
The tile No. of New DataHub Errors counts entries on the DataHub Error Log with status New. 10 or fewer is green, 11 to 20 is amber, and more than 20 is red. Choose the tile to open those errors.
- Search for Role Center Layout List (
Alt+Q). - Choose Initialize. This creates the standard role center layouts, including Integration Activities and the tile No. of New DataHub Errors.
- On the role center, choose Personalize and show Integration Activities.
To change this tile, or to add another one, follow Role Center Layout.