Json Configuration Files: app.json and launch.json in AL Project

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!

Add comment