When publishing or repairing a Business Central extension from your Sandbox connector, Popdock will compile a new custom extension and attempt to publish it to your environment. On your connector Extension page, you have the option of downloading the custom extension from the Download button at the top right. This will download a zip file of the custom extension with all the queries that are getting compiled and published. Inside this zip file contains the following:
- al-compiler-errors.json – this is the error log that stores the errors if any when you are publishing to your sandbox environment. This will contain the errors in JSON format which I will go into detail how to decode and troubleshoot the errors.
- app.json – this file contains the details about your extension in JSON format. For example, the file will show the version of the extension and dependencies that you have included.
- Query AL files (ex. Query77000.al) – this is the AL code that builds the query that you have put together in Popdock. It takes the QueryBuilder list and writes it in the AL required for Business Central to query data directly from your environment tables.
Reading AL Compiler Errors
You can open the compiler error JSON file when a text editor to view the text in the file. If you have no errors, the file will read like this:
{
"version": "0.2",
"toolInfo": {
"toolName": "Microsoft (R) AL Compiler",
"productVersion": "14.0.15",
"fileVersion": "14.0.15"
},
"issues": [
]
}
Under the “issues” section there is no issues showing so this was a successful publish.
Here is an example of one showing an issue (highlighted in the white is the important pieces you would want to look for):
{
"version": "0.2",
"toolInfo": {
"toolName": "Microsoft (R) AL Compiler",
"productVersion": "14.0.15",
"fileVersion": "14.0.15"
},
"issues": [
{
"ruleId": "AL0345",
"locations": [
{
"analysisTarget": [
{
"uri": "C:\\home\\site\\wwwroot\\2c2ab86d-9e6c-4e25-bb62-839e7a98c4af\\Query77000.al",
"region": {
"startLine": 18,
"startColumn": 33,
"endLine": 18,
"endColumn": 49
}
}
]
}
],
"fullMessage": "The source of a Column or Filter must be a field defined on the table referenced by its parent DataItem",
"properties": {
"severity": "Error",
"defaultSeverity": "Error",
"category": "Compiler",
"helpLink": "https://learn.microsoft.com/dynamics365/business-central/dev-itpro/developer/diagnostics/diagnostic-al345?wt.mc_id=d365bc_inproduct_alextension",
"isEnabledByDefault": "True",
"isSuppressedInSource": "False",
"customTags": "Compiler;Telemetry;NotConfigurable"
}
}
]
}
- Query77000.al – this is the query that the error is happening in.
- startLine – is the line number of where the error occurs.
- fullMessage – is the actual error message of what it is trying to describe is causing the error. In this case, this error references a column that is not defined on the table referenced. This means one of the fields I have added to my query is not in the table by default and there is probably a dependency that this field is dependent on so it needs to be included with the Popdock extension or the extension will continue to fail to publish.
- severity – in this example, this is an Error and not a Warning so it must be resolved or the extension will not publish successfully.
Locating The Reference Error In the Log
Now that you know how to read the AL compiler error log, we can locate the reference line number in the query file and try to identify what actions need to be taken. In this example above, I know I included a column that is in the Business Central Sales Header table by default in most cases, but it is only there because Business Central has another extension installed by default that adds the columns. This would be the Shopify Extension so I included from the Sales Header on my QueryBuilder list, the field Shpfy Order Id.

And just like the error log shows, startLine is Line 18. By identifying the exact line number, we can find the specific column and knowing that the error message for this reads “The source of a Column or Filter must be a field defined on the table referenced by its parent DataItem“. This determines that a field that I have added from this table requires a dependency because it is not a normal default field in this table. In this case the Shopify Extension adds this field to the Sales Header table so it is required for the Popdock Extension to be able to reference that field in the table.
If you have any questions or have a log that you are not quite sure how to read, please reach out to our Support Team at eOne: support@eonesolutions.com.