Hey D365 Lovers,
In this article, I am going to talk about .json files where all the configuration set by the developer for an extension. To be able to develop an extension and then build and deploy to our testing environment, we first have to provide the right configuration in both the app .json file and the launch .json file. Let's know more about this, we have 2 different types of .json file in an AL project or in an extension:
- app.json file
- launch.json file
JSON stands for JavaScript Object Notation, which is a lightweight data interchange format, often used for storing and transporting data. These files are automatically created when you start a new AL project. These files are used to store configuration data about your AL project. The app.json file contains information about the extension you are building, such as publisher information, the name and the version of the extension, and the launch.json file contains the server information where we deploy the extension.
App.json file
The app.json file contains information about the extension that you are building, such as publisher information, name and the minimum supported version. Often the app.json file is referred to as the manifest. This file is very important because if you did any mistake in this you can't able to publish your extension, relevant configuration done in this.
---

Fig 1: app.json file snippet
---
| Setting |
is_Mandatory |
Value |
| id |
Yes |
The unique ID of the extension. When the app.json file is automatically created, the ID is set to a new GUID value |
| name |
Yes |
The unique extension name |
| publisher |
Yes |
The publisher name |
| brief |
No* |
Short description of the extension |
| description |
No* |
Longer description of the extension |
| version |
Yes |
The version of the app package |
| platform |
Yes |
The minimum supported version of the platform symbol package file |
| application |
Yes |
The minimum supported version, for example, “application”: “11.0.0.0”, latest is: “15.0.0.0” |
| idRange |
Yes |
A range for application object IDs. Objects outside the range will raise a compilation error. A new ID is automatically suggested. The allowed range is provided to you from Microsoft. |
* Required for AppSource submission
Launch.json file
The launch.json is a configuration file that contains information about the server that the extension launches on. There are two configurations depending on whether the extension is published to a local server or to the cloud.
---

Fig 2: launch.json file snippet for Microsoft cloud sandbox
---

Fig 3: launch.json file snippet for Your own server
---
launch.json file depends upon the cloud sandbox and local server for both cases this file accepts different values. So let’s discuss some important and mandatory properties.
Publish to Microsoft cloud sandbox settings:
| Setting |
is_Mandatory |
Value |
| name |
Yes |
Name of your configuration, for example "Local development server" |
| type |
Yes |
Must be set to “.al”. Required by Visual Studio Code |
| request |
Yes |
Must be set to “launch”. Required by Visual Studio Code |
| serverInstance |
Yes |
The instance name of your server, for example: “US” |
| startupObjectId |
Yes |
Specified the ID of the object to open after publishing. Only objects of type Page and Table are currently supported |
| startupObjectType |
Yes |
Specifies with type of object to open after publishing. This is used in combination with the setting “startupObjectId”. Only objects of type Page and Table are currently supported |
Publish to your own local server settings:
| Setting |
is_Mandatory |
Value |
| name |
Yes |
Name of your configuration, for example "Local development server" |
| type |
Yes |
Must be set to “.al”. Required by Visual Studio Code |
| request |
Yes |
Must be set to “launch”. Required by Visual Studio Code |
| server |
Yes |
The HTTP URL of your server, for example “http://localhost” |
| serverInstance |
Yes |
The instance name of your server, for example: “D365” |
| authentication |
Yes |
Specified the server authentication method |
| startupObjectId |
Yes |
Specified the ID of the object to open after publishing. Only objects of type Page and Table are currently supported |
| startupObjectType |
Yes |
Specifies with type of object to open after publishing. This is used in combination with the setting “startupObjectId”. Only objects of type Page and Table are currently supported |
| schemaUpdateMode |
No |
Specifies the data synchronization mode when you publish an extension to the development server: "Synchronize” or “Recreate". The default value is Synchronize. With Synchronize the existing data is kept, while Recreate will delete the existing data. |
I hope you understand what are .json files in an AL Project and why these files are required.
In the next articles, I will tell you how you can create a Sandbox Environment and deploy your first extension in Dynamics 365 Business Central that we created in this article and test.
Stay Tuned!
![]()
