All Around Microsoft Dynamics Business Central

Business Central 140 Symbols

Business Central 140 has two ways to work with symbols.

Way 1 – The default way

Business Central used the symbols containing in the extension Application of the database. This is the best way if the target database has no C/AL changes.

If you are updating the database to a newer CU release you need to update the Application version also.

The Application extension can be built manually from the source code of the database by using the Microsoft.Dynamics.Nav.SymbolReferenceGenerator.exe which can be found in the RTC folder. This makes sense if you have your own solution with C/AL changes, but customer changes will be only added with extensions.

Syntax example:

Microsoft.Dynamics.Nav.SymbolReferenceGenerator.exe <SourcePath> <NewAppPath> <SymbolsName> <Version>

SourcePath: Path to all exported objects as one text file, excluding the system objects  (Id >= 2000000000)
NewAppPath: Path there the app will be saved
SymbolsName: Should be Application
Version: Current application version of the database

Example:

Microsoft.Dynamics.Nav.SymbolReferenceGenerator.exe c:\temp\AllObjectsExceptSystemObjects.txt C:\temp\Application.app Application 14.0.392770

To use this Application.app unpublish the current from the database and publish the new one with the additional argument “-packageType SymbolsOnly”

 

Way 2 – The Hybrid way

Business Central can generate the Symbols dynamically from the current Object Metadata. This feature makes sense, if you still change C/AL on customer side. To use this feature, the Parameter “Enable loading application symbol references at server startup.” needs to be enabled on the service tier. The “Dynamics NAV Development Enviroment” must be started with the command line argument “generatesymbolreference=1”, if you want to create the new symbols after compiling of an object.

It is also possible to recreate all symbols by using the following command:

finsql.exe Command=generatesymbolreference, Database=<DatebaseName>, ServerName=<ServerName>\<Instance>

More information can be found here:

https://docs.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/devenv-running-cside-and-al-side-by-side

 

Troubleshooting

After update of a customer DB it is often impossible to publish an extension to the database with some strange symbols issues.

Check the following list to solve this issue.

  • Make sure the Application extension matched the used CU version.
  • Recreate all symbols and restart the service tier, leave the service tier time to load the symbols before retrying to publish the extension.
  • As last way delete all symbol references that are stored in the “Object Metadata” table. Connect to the database with the SQL Management Studio and execute the following SQL command in the BC database:
    UPDATE [Object Metadata]
    SET [Symbol Reference] = NULL

    Now recreate all symbols references by compiling all objects or using the command line option of the finsql.exe and restart the service tier.