AL, Business Central, Development Tips, Extension Package, How To, Information, Language Module, Modern Development Tool, Multilanguage, Tip & Tricks, Translations, V2, Visual Studio Code

Enabling Multilanguage Support to Extensions – Business Central

Microsoft Dynamics 365 Business Central is Multilanguage enabled, which means that you can display the user interface (UI) in different language.

To add a new language to the extension you have built, you must first enable the generation of XLIFF files.

The XLIFF file extension is .xlf.

The support for using the ML properties, such as CaptionML and TooltipML, is being deprecated, so it is recommended to refactor your extension to use the corresponding property, such as Caption or Tooltip, which is being picked up in the .xlf file.

You can use the .xlf translation files approach only for objects from your extension.

It’s an XML-based format used to standardize localization.

Step – 1

To be able to work with translation files, you need to add a Feature to the app.json file.


This Feature is TranslationFile.

Step – 2

When we save our app.json file, we can see immediately that we get some warnings.


This warning is telling us that the Multilanguage syntax is being deprecated and that we have to update to the new syntax.

The new syntax requires us to remove all the ML properties, such as the caption ML and the option caption ML, and we have to use a regular Caption and OptionCaption properties.

We use Labels at place of Text Constants.


Let’s fix these issues. Any ML properties like Caption ML, Option Caption ML or Text Constants. Replace them with Caption and Label.

Before we start some important points:

  • The New translation process decouples translation from development.
  • New Label syntax – Default translation & Some attributes.
  • Translation file can be combined with the extensions to support Multilanguage.
  • Caption & CaptionML cannot be used simultaneously.
  • Label syntax have comment, locked and maxLength optional parameters.
  • Same syntax for Captions and Labels.

Here after fixing the above errors:


All errors resolved from my Project.

In Nutshell use only Caption, OptionCaption & Label, all translation will be done outside developer environment in xlf file, no more defining in objects.

Step – 3

Build your Package, choose AL:Package.


Once your Package is created error free, you will see new Folder Translations with one xlf file is created.

Every time you build your Package this file gets overwritten. So be cautious.

When you perform your translation make a copy of this file and save with new Name then perform your translation.

Means Translation task will be last process in your Extension building process.

If you add more Captions or Labels later then you will have to take care of them and populate in all of your Language translation Files.

No of Languages your extension supports, you will have that much of translation files and is packaged with your package, no separate installation like in older versions is required to enable MultiLanguage.

Step – 4

Let’s see what this xlf file looks like:


It is in xml format.

If you see “<file datatype=”xml”” you will get your Source-language & target-language. Source & Target is set to same Language.

“<trans-unit id” Specifies each of you Caption and Labels defined in you objects.

“<source>” node specifies Caption or Label in source Language.

You will have to add your “<target>” language translation.

Step – 5

Let make copy of this file in all the supported languages you want.

For example:


I have made 2 files en-US & nl-BE. Naming convention is for your understanding purpose only.

Now you can handover these files to translator and he can perform translation in required language outside your development environment.

You code/IP is safe from external agencies whom you give for translation.

Only what is required for this will be:

[1] Update your Target Language in below line as:

<file datatype=”xml” source-language=”en-US” target-language=”en-US” original=”MyFirstExtensionProject”>


<file datatype=”xml” source-language=”en-US” target-language=”nl-BE” original=”MyFirstExtensionProject”>

[2] For every

<source>…</source> add <target>…</target>

<source>Loadout Point</source>


There are number of tools available on internet which supports xlf file and give ease your work of translation.

Step – 5

Once you are done with your translation, copy all the translated file to the Translation folder and Build your Solution and deploy on Server.

Change the Language of Client to Dutch and run your Object:


I have translated only one caption shown in red-box.

Please read the points mentioned in the post carefully.

Now you can enable MultiLanguage support for your Extensions.

I will come up with some other topic in my future post.

Till then keep exploring and Learning. Take Care of yourself.

Corfu Navision 2016, Development Tips, Extension Package, Information, Tip & Tricks

Which Properties are Restricted in Extension Packages

For Overview, please see my earlier posts

Introducing Extensions in Microsoft Dynamics NAV 2016

Which Object types you can Include & Restrictions applicable to C/AL code in Extension Packages

Restricted Properties on Existing Page Modifications

You cannot change the values for the following properties for existing Microsoft Dynamics NAV pages in an extension.

  • AccessByPermission
  • AssistEdit
  • AutoSplitKey
  • CardPageID
  • CharAllowed
  • ContainerType
  • ControlAddIn
  • Data Type
  • DataLength
  • DateFormula
  • DelayedInsert
  • DeleteAllowed
  • DrillDown
  • DrillDownPageID
  • Editable
  • ExtendedDatatype
  • FieldClass
  • GroupType
  • ID
  • InsertAllowed
  • LinkedObject
  • Lookup
  • LookupPageID
  • MaxValue
  • MinValue
  • ModifyAllowed
  • MultipleNewLines
  • Name
  • NotBlank
  • Numeric
  • PageType
  • PartType
  • PasteIsValid
  • Permissions
  • PopulateAllFields
  • RefreshOnActivate
  • SourceExpr
  • SourceTable
  • SourceTableTemporary
  • SourceTableView
  • SubType
  • SystemPartID
  • TableRelation
  • TableType
  • TestTableRelation
  • ValidateTableRelation
  • ValuesAllowed

Most of these are typically not properties changed through customization as they can have a negative effect on the Microsoft Dynamics NAV deployment.



Restricted Properties on Existing Table Modifications

You cannot change the values for the following properties for existing tables and fields in an extension.

Table Properties Field Properties
  • Name
  • DataPerCompany
  • Permissions
  • LookupPageID
  • DrillDownPageID
  • PasteIsValid
  • LinkedObject
  • TableType
  • Name
  • AccessByPermission
  • Compressed
  • Data Type
  • DataLength
  • DateFormula
  • ExtendedDataType
  • FieldClass
  • MaxValue
  • MinValue
  • NotBlank
  • Numeric
  • Owner
  • SQL Data Type
  • SubType (BLOB)
  • TableIDExpr
  • TableRelation
  • TestTableRelation
  • ValidateTableRelation
  • ValuesAllowed Width

You can add table keys, but you cannot delete or modify existing keys.

You can add fields to a table group, but you cannot remove fields or groups.

Corfu Navision 2016, Development Tips, Events, Extension Package

Which Object types you can Include & Restrictions applicable to C/AL code in Extension Packages

For Overview, please see my earlier post Introducing Extensions in Microsoft Dynamics NAV 2016

When you create extension package you can include new as well as modified objects.

In Microsoft Dynamics NAV 2016, these object types can be added and included in an extension:

  • Pages
  • Tables
  • MenuSuites
  • Codeunits

You can modify these existing object types as permitted by your license:

  • Pages
  • Tables
  • Action Items

You will not be able to add or modify any other object types in this version.

You are not allowed to delete any existing objects.

You will also need to be sure not to modify any existing C/AL code, including code in codeunits and in triggers on existing objects.

In case you want to modify existing code, use the new C/AL eventing model.

To know more about Events see by earlier posts:

  1. Events in C/AL Navision 2016
  2. Implementing Events in Navision 2016

This restriction is only on existing code and objects. However New pages, tables, and so on, can contain C/AL code as it is considered part of the new object.

Corfu Navision 2016, Development Tips, Dynamics Content Package, How To, content package for Microsoft Dynamics NAV 2016

Microsoft Dynamics NAV 2016 includes an entirely new integration with Microsoft Power BI.

In Microsoft Dynamics NAV 2016, using the new Power BI Content Pack, Microsoft Dynamics NAV end users can connect a correctly configured Microsoft Dynamics NAV instance to and immediately be able to see full business performance insights in a dashboard.

The content package for Microsoft Dynamics NAV 2016 empowers you to share and present data across an organization. Data can be defined centrally but be consumed, modified and presented to the local needs of users, while everybody still sees data from the same overall picture.


  • Business performance dashboard  Data from Microsoft Dynamics NAV is presented in an easy-to-use dashboard, providing a complete overview and important insights
  • Finance and sales insights  Users can drill into more details in the sales and finance reports, facilitating decision making
  • Personalizing the insights  Users can create a personalized dashboard from the existing KPIs and charts in reports
  • Modify and extend With this package, users can start using and exploring their own data using Power BI in just a few minutes. The dashboard gives users KPIs and charts on their sales and finance data. The setup consists of three easy steps:

Users can create their own KPIs and charts, select data from queries, set filters, select visualizations and more to create their own dashboards

  • Sign in to
  • Select the content package for Microsoft Dynamics NAV.
  • Connect a Microsoft Dynamics NAV instance to the content package. Today I will discuss about below:

It takes less than five minutes to get going! Depends upon net speed and volume of data.


Make sure OData Service is enabled and Port for same is defined in your Server Instance of Navision. Also you use valid thumbprint and SSL is enabled.

Check that the Page 197 Service powerbifinance is published in Web Services window. Copy the OData URL we will be requiring it while connecting to content pack for Dynamics 2016 in BI.


Go to and sign in or go through the easy account setup process.

Sign in to Power BI using your credentials.

You first get to a page to select your data source.

The data sources are OData feeds, such as OData web services from any Microsoft Dynamics NAV solution.

  • To import your Microsoft Dynamics NAV data into Power BI, you need to have permissions to the tables where data is retrieved from, in this case sales and finance data. You sign in your account credentials.
  • The Power BI Microsoft Dynamics NAV content pack uses Microsoft Dynamics NAV’s web services to retrieve your data. If you have a lot of data in your Microsoft Dynamics NAV instance, a suggestion to minimize the impact on your web service usage is to change the refresh frequency from the current default which is once a day to only refresh on weekdays or every other day depending on your needs. Another suggestion is to have one admin create the content pack and share it with the rest of the team instead of having every admin in your organization create their own

In this case select Services to get to content packages. Refer below how to connect.

Select the content package for Microsoft Dynamics NAV.

You will be prompted to add the URL to your Dynamics NAV instance. 

An easy way to obtain this URL is in Dynamics NAV to go to Web Services, find the powerbifinance web service and copy the Odata URL, but leaving out the “/powerbifinance” from the URL string. 

When you paste in the copied URL, you must remove the last part of the web service-specific URL: “/powerbifiance” – you only need the company-specific part of it

After entering the URL You will be prompted to select an authentication method. 

Select the appropriate method and provide the relevant user credentials.

Here you provide the OData URL we saved above. Enter your Authentication Mode and provide your User ID and password to get connected to the data.

When you select Log on, it will take a few minutes for the content package to connect to your Dynamics NAV instance, get the data and create the dashboard and reports.



“Parameter validation failed, please make sure all parameters are valid”

If you see this error after typing your Microsoft Dynamics NAV URL. Make sure the following requirements are satisfied:

– The URL follows exactly this pattern https//‘CRONUS%20International%20Ltd.’) replacing ”” with your NAV Server name, “DynamicsNAV90_Instance1” with your NAV Server Instance name and “Company(‘CRONUS%20International%20Ltd.’)” with your NAV Company name.

– Make sure all the letters are lower case.

– Make sure the URL is in ‘https’.

– Make sure there are no trailing forward slash at the end of the URL.


“Login failed”

If you get a “login failed” error after using your Microsoft Dynamics NAV credentials to login, then the account you are using doesn’t have permissions to retrieve the Microsoft Dynamics NAV data from your account. Verify it is an admin account and try again.

Let’s see what data exactly this page provides:

Depending on whether you use your own database or the demo database, the charts in the dashboard might have different content or none at all.

 New Post with details available, please check out :


We will see rest details in my upcoming post.