Showing posts with label Microsoft. Show all posts
Showing posts with label Microsoft. Show all posts

Tuesday, November 24, 2020

Business Central - Automation APIs

Business Central provides automation APIs which can be used to create a new company on the tenant, running RapidStart packages, installing extensions, adding users to user groups and assigning permission sets to users.

Delegated admin credentials and Dynamics 365 Business Central users with permissions, can call the APIs.

For delegated admin access, you must add the Azure Active Directory (Azure AD) application to the AdminAgents group. If the Azure AD application is not added, the consent flow will show an error such as Need pre-consent. For more information, see Pre-consent your app for all your customers in the Graph documentation.

Automation APIs are placed in the microsoft/automation API namespace. In all the examples below, parameters are marked in parenthesis {}. Make sure that only valid parameters are passed.

Create a Company

To create a company, an automationCompany endpoint is available. To create a Company issue a POST request as shown in the following example.

POST https://api.businesscentral.dynamics.com/v2.0/{environment name}/api/microsoft/automation/{apiVersion}/companies({companyId})/automationCompanies
Authorization: Bearer {token}

Content-type: application/json
{
    "name": "CRONUS India",
    "displayName": "CRONUS India Ltd.",
    "businessProfileId": ""
}

The {companyId} must be the ID of an valid company on the tenant. Issue a GET automationCompany request to fetch existing companies. 

For Example: Retrieves the properties and relationships of an automationCompany object for Dynamics 365 Business Central.

Http Request: 

GET /microsoft/automation/{apiVersion}/companies({{companyid}})/automationCompanies
Header: Authorization
Value: Bearer {token}

Http Response:

If successful, this method returns a 200 OK response code and list of automationCompany objects in the response body. For example:

{
    "id": "3496bbf8-fcae-4e48-a4f8-cb17c27de0b3",
    "name": "CRONUS India",
    "evaluationCompany": true,
    "displayName": "CRONUS India Ltd.",
    "businessProfileId": ""
}

Note: The company which is created will not be initialized.

To rename a company, issue a PATCH automationCompanies.

Upload and apply a RapidStart package

RapidStart is uploaded, installed, and applied using the APIs described below. RapidStart operations can be time consuming. To get the current status of the RapidStart packages and running operations issue a GET configurationPackages as shown in the following example.

GET https://api.businesscentral.dynamics.com/v2.0/{environment name}/api/microsoft/automation/{apiVersion}/companies({companyId})/configurationPackages
Authorization: Bearer {token}

In the response, status for the import and apply status will be shown, as well as information about the RapidStart package.

Insert RapidStart

First step is to create the configuration package, by issuing a POST configurationPackages in the Dynamics 365 Business Central tenant. Once the configuration package is created, the RapidStart package can be uploaded. See the example below.

POST https://api.businesscentral.dynamics.com/v2.0/{environment name}/api/microsoft/automation/{apiVersion}/companies({companyId})/configurationPackages

Authorization: Bearer {token}
Content-type: application/json
{
    "code":"{SAMPLE}",
    "packageName": "{SAMPLE}"
}


Upload RapidStart package

Once the configuration package is created, a RapidStart package can be uploaded with a PATCH configurationPackages. See the example below.

PATCH https://api.businesscentral.dynamics.com/v2.0/{environment name}/api/microsoft/automation/{apiVersion}/companies({{companyId}})/configurationPackages('{SAMPLE}')/file('{SAMPLE}')/content

Authorization: Bearer {token}
Content-type: application/octet-stream
If-Match: *
Body: RapidStart file.


Import and apply RapidStart package

Once uploaded, the RapidStart package needs to be imported by issuing a POST on the bound action Microsoft.NAV.import.

POST https://api.businesscentral.dynamics.com/v2.0/{environment name}/api/microsoft/automation/{apiVersion}/companies({{companyId}})/configurationPackages('SAMPLE}')/Microsoft.NAV.import

Authorization: Bearer {token}

When the RapidStart package is imported it can applied with a POST on bound action Microsoft.NAV.apply.

POST https://api.businesscentral.dynamics.com/v2.0/{environment name}/api/microsoft/automation/{apiVersion}/companies({companyId})/configurationPackages('SAMPLE}')/Microsoft.NAV.apply

Authorization: Bearer {token}


Managing users, user groups, and permission sets

The automation APIs enable users to be set up in Dynamics 365 Business Central.

Modifying user properties

Get the current user properties by issuing a GET users. This will get the UserSecurityId needed on subsequent requests.

To modify the user, create a PATCH user request as shown in the example below.

PATCH https://api.businesscentral.dynamics.com/v2.0/{environment name}/api/microsoft/automation/v1.0/companies({id})/users({userSecurityId})
Content-type: application/json
If-Match:*
{
    "state": "Enabled",
    "expiryDate": "2025-10-01T00:10:59.999Z"
}


Assign user permissions and user groups

To assign users to a user group, issue a POST request against the userGroupMembers entity. See the example below.

POST https://api.businesscentral.dynamics.com/v2.0/{environment name}/api/microsoft/automation/{apiVersion}/companies({companyId})/users({userSecurityId})/userGroupMembers

Authorization: Bearer {token}
{ 
    "code": "D365 EXT. ACCOUNTANT",
    "companyName" :"CRONUS Inida"
}

To retrieve the list of user groups issue a GET userGroups. This will return the information that you need for the payload above.

Assigning permission sets is identical to adding users to user groups. GET permissionSet returns information about the available permission sets. To assign a permissionSet issue a POST userPermission as shown in the following example.

POST https://api.businesscentral.dynamics.com/v2.0/{environment name}/api/microsoft/automation/{apiVersion}/companies({companyId})/users({userSecurityId})/userPermissions

Authorization: Bearer {token}
{ 
    "id": "SECURITY"
}

Removing the permissionSet from the user is done by issuing a DELETE userPermissions on the users entity.

Handling tenant extensions

Add-on extensions which are already published to the tenant can be installed and uninstalled. Per-tenant extensions can be uploaded and installed. To get the list of all extensions on the tenant, issue a GET extensions. This will return the packageId needed for installing and uninstalling extensions.

Installing and uninstalling published add-on extensions

There are two bound actions available on the extensions endpoint: Microsoft.NAV.install and Microsoft.NAV.uninstall.

Issue a POST extension using the bound actions. See the example below.

POST https://api.businesscentral.dynamics.com/v2.0/{environment name}/api/microsoft/automation/{apiVersion}/companies({companyId})/extensions({packageId})/Microsoft.NAV.install

Authorization: Bearer {token}


Upload and install a per-tenant extension

Issue a PATCH against the extensionUpload endpoint to upload and install the extension.

Note: Installing per-tenant extensions using Automation APIs is only possible in SaaS.

Uninstalling the extension can be done through the bound action Microsoft.NAV.uninstall, as with the add-on extensions.

Monitoring extension installation progress

To view ongoing extension installation status, issue GET extensionDeploymentStatus as shown in the following example.

GET https://api.businesscentral.dynamics.com/v2.0/{environment name}/api/microsoft/automation/v1.0/companies({companyId})/extensionDeploymentStatus


Blog Source: Microsoft Docs

Thursday, June 25, 2020

Business Central Integration with Rest API – Part 3 (OnPrem & SaaS)

Dear Reader’s, I am sharing simple REST API integration with Business Central 2020 Wave 1 release. In previous Part-1 & Part-2, I have demonstrated GET method of API. In this Part, I will explain POST method, where a data request & response will be handled. I want to thank the creator of API and available for us to check & learn the POST method (Request & Response handling).

Below sample will run on both OnPrem & SaaS as well. In the following example we will call an API request to Create resource by supplying Name & Job details. And in response API will return Id & Created At along with the request info Name & Job.

API URL: https://reqres.in/api/users

Sample Request: { “name”: “Your Name”, “job”: “Your Job Name” }

Response: {“name”:”Your Name”,”job”:”Your Job Name”,”id”:”Numeric”,”createdAt”:”DateTime in YYYY-MM-DDTHH:MM:SS.sssZ”}

Click hear to read more

Sunday, May 24, 2020

Dynamics 365 Business Central 2020 release wave 1 Capability

New capability highlights

The 2020 release wave 1, brings to market significant new services and capabilities to enable digital transformation for businesses. For Dynamics 365 Business Central, these new capabilities include:

Improved usability

• Search for features in the role explorer

• Enable non-interactive printing

• Import profiles and UI customizations

• Show parts that are hidden on pages

• Go to related records from list pages

• Improve pages that have multiple parts

• Bookmark reports

• Categorize data

• Enter data more easily

• Filter data and create views

Enhanced application features

• Use resources in purchase documents

• Send the right documents to your contacts

• Receive more goods than you ordered

• Undo shipment or receipt lines for non-items

Better tool for admins and partners

• Integrate with Common Data Service

• Manage permissions with deeper insight

• Sync users with the Microsoft 365 admin center

• View data sizes per table

• Cancel sessions

• Use AL interface objects

 

Improved usability

Search for features in the role explorer: The Business Central Role Explorer has a new addition that complements manual navigation and expanding or collapsing menu groups. Users can now open the Role Explorer, with either the "hamburger" icon or the Shift-F12 keyboard shortcut, and then start typing what they are looking for.

The Role Explorer does not filter the results but instead highlights the hits, as shown in the next image. Also, when a result is contained in a collapsed group, the Find function annotates that group using a teal-colored circle. Users can browse through the results using arrows or Ctrl+Up/Down keyboard keys. The Esc key closes the Find box and removes the value typed, so that new searching or browsing can be started. Note also that switching to the Explore all view retains the find value making it easy to navigate.

Enable non-interactive printing: Users can print reports directly from the desktop using the predefined printers configured on the Printer Management page. If the printers are selected and set up properly, then no additional steps, such as downloading files or navigating through previews, are necessary. In addition, administrators can have the power to configure print jobs for specific tasks, users, orfor more complex printer setups.

Complex printing scenarios where labels must be sent to one printer and a packing slip to another are common in many businesses. Users expect to be able to configure, save, and retain certain properties describing such flows, and they expect to print each report directly to a predefined printer.

Printing directly to a printer is now possible from the modern desktop clients. The setup that you make on the Printer Management page allows you to control which device to print to, including to cloud printers as defined by extensions. Using the Business Central modern clients, users who work in the browser can set up a printer selection for each report so that documents, labels, and other content are printed automatically on the selected printer. Administrators can manage a list of printers (including cloud printers), for example, by creating a friendly name for each and setting defaults. Additionally, for on-premises installations, any network printer that the server has access to will be available on the Printer Management page.

Import profiles and UI customizations: Administrators and consultants benefit from a rich toolset that supports role-tailoring in Business Central. By having both an export and import function for profiles (organizational roles) and their corresponding user interface customizations, customers can easily back up their profile customizations before making further changes, replicate profiles across environments, or safely explore possibilities in an online sandbox before importing into production. All this without requiring the assistance of developers.

Show parts that are hidden on pages: Business Central is able to adapt to the unique needs of the user, department, or organization.

When personalizing pages in Business Central, users can show a hidden part on any page, such as a

FactBox on a sales document. This unlocks two common scenarios:

Business users can personalize their pages and bring back a part that they have previously hidden. Similarly, power users and consultants can unhide parts that they have previously hidden.

Developers can now choose to place secondary content on a page object and hide it, giving their customers a simple starting point with the page and the ability to unhide that content if it is relevant to their business processes.

Go to related records from list pages: Navigating through your business data, jumping from one context to the other or simply drilling through data is essential fora busy professional.

We are adding capabilities for users to navigate via links to even more places than today. This allows you to open a related card from a list, such as a customer or item card from a sales order.

Improve pages that have multiple parts: Some business tasks require advanced screen layouts that reflect the nature of the task and the volume of data associated with the task. By having highly optimized layouts, users get the best overview of their data to quickly make decisions and act, reducing the need to scroll and navigate to get the task done.

Improvements to pages composed of multiple parts

The desktop client adds full support for page objects that are composed of multiple parts, such as ListParts or CardParts. This capability was already possible on a Role Center or FactBox pane. But the canvas of other page types wasn't optimal for displaying parts alongside other content, resulting in overlapping UI elements or unreachable data.

Developers are now able to implement pages by choosing from prescribed AL patterns that give predictable outcomes. For example, they can display two lists side by side on a ListPlus page. Or, have multiple dependent lists shown above each other on a Document page. Pages already using these control patterns will automatically benefit from this change with no further development effort needed.

Available April 2020: Optimizations for ListParts as used on List pages, Document pages, Card pages, and ListPlus pages.

Available after April 2020: Optimizations for List Parts as used on Worksheet pages, and CardParts as used on various page types.

Categorize data: Users get a better overview of their data when it is grouped into categories. Some data is best represented as a deep hierarchical list. Business Central empowers developers to design pages for both of these scenarios, so that users can get the best possible overview and navigate to the relevant records.

On page objects where a repeater control has the Show As Tree property set to True, users will experience a new level of efficiency when working with the data tree. Users can easily drill down and back out again, using a keyboard or mouse, by expanding and collapsing groups or by using the Expand all and Collapse all actions.

Developers can also specify if a tree should start as fully expanded or fully collapsed.

Enter data more easily: Back-office workers often need to capture information or digitize paper material at high speed. For some users, this is their main activity for the whole workday. When this cannot be automated through means like OCR and AI, users require an efficient interface that does not get in the way of quickly typing in data.

Various adjustments that enhance typing or navigating fields in a list.

In editable lists, users will be able to use the left and right arrow keys to navigate to the previous or next cell in a row. This provides a consistent experience between editable and non-editable lists and increases the speed and agility of exploring data in a list or worksheet.

Similar to Microsoft Excel, we've introduced the F2 key that toggles between selecting the entire value of a field and placing the cursor at the end of the value. This allows users to quickly replace the value or add to it. The F2 key is available for editable fields and editable cells in lists.

When typing to fill in a row of data, the Tab key no longer sets focus to the ellipses that bring up the context for the row. This improves efficiency when rapidly entering data and ensures that Tab key presses are predictable. The context menu remains reachable using the left or right arrow keys.

Filter data and create views: As the business grows, so does table data in the database, making quick analysis of the data or even finding records more challenging without the right tools. Defining the perfect set of filters can be a time-consuming, iterative process where the ability to persist filters will save having to recreate them the next time they are needed.

The 2019 release wave 2 eliminated the need to recreate commonly used filters by allowing users to permanently save filters as a view in the web client. Based on community feedback, we're now improving the filter experience further:

When authoring filters that use expressions, such as date ranges or filter tokens, you can toggle the filter field to display either the expression or the corresponding value. To view the expression, simply set the focus to the filter field using a keyboard or mouse. This is particularly useful when saving list views so that date-or time-sensitive expressions can easily be modified when needed.

While on a list page, saving the URL as a browser favourite will include the current view, allowing you to link directly to the view when you navigate to that favourite. Note that the web client URL will only include views and filters that have been saved.

When working with lists, Business Central will help you pick up where you left off if you are disconnected or you reload the web page by trying to return to the last view you visited.


Enhanced application features

Use resources in purchase documents: Most businesses tend to outsource or hire external, named resources on a temporary basis, such as for a particular project or job. The ability to purchase resources allows you to track and process such transactions.

You can now use Resource as a line type of purchase documents. For example, you can add resources on purchase orders, invoices, and credit memos and post purchase transactions for them. You can correct purchase documents with resource lines, copy them, or use resource extended text.

Send the right documents to your contacts: Businesses deal with multiple customer and vendor contacts who are responsible for different areas of operation, such as accountants, purchasers, and warehouse people. Each of these contacts must be sent different sets of documents generated by Business Central.

You can now save time while sending documents to different customer or vendor contacts by setting up specific contacts to use with specific documents. For example, customer statements will be sent to accountant contacts, sales orders to your customers' purchasers, and purchase orders to vendors' salespeople or account managers.

You can now populate the Document Layouts page for vendors and customers based on settings on the Report Selection page. To send specific documents to specific company contacts, choose the company contacts to use for specific document layouts.

The Document Layouts page for a customer now contains additional usage options for reminders and posted shipments. The Document Layout page for a vendor now contains additional usage options for purchase orders and posted return shipment.

Receive more goods than you ordered: When you receive more goods than you ordered and it's cheaper not to return such goods or your vendor offers you a discount, order processors and warehouse workers must be able to handle such receipts without going through a lengthy process of preparing and getting approval for a new purchase order.

You can now receive a quantity higher than the ordered quantity on purchase orders according to an over-receive policy that you set up on the Over-Receipt Codes page. Here you can fill in the Over-Receipt Tolerance % field and select a policy to be used by default.

If your company uses purchase order approval, over-receiving can trigger a re-approval. You define this on the Over-Receipt Codes page. The Approve Over-Receipt workflow response is available in the workflow engine for this purpose.

On the cards for items and vendors, you can select in the Over-Receipt Code field which policy to use by default on purchases.

When you have selected an over-receipt code, you can enter a higher-than-ordered quantity in the Quantity to Receive field on released purchase orders and warehouse receipts.

 

Better tools for admins and partners

Integrate with Common Data Service: A new Common Data Service on boarding experience will be provided, where users will be able to connect to a Common Data Service environment and associate a Business Central company with a Common Data Service business unit. This will allow for multiple companies to connect to a Common Data Service instance. During setup, the Common Data Service connection entities from the default Common Data Service database will be synchronized.

This provides extensibility support for developers developing integrations for Common Data Service.

Common Data Service is at the center of the Dynamics 365 suite. Common Data Service enables users to have a 360-degree view of their business as data is available in Common Data Service. Once data is in Common Data Service, users will have a shared, consistent view of data across the Dynamics 365 solution. Dynamics 365 Business Central will support a set of entities in the Common Data Service default database provided in a "Business Central CDS Base Solution," which other integrations will depend on. The base solution will bring the capability to map a Company entity to a Business Unit entity in Common Data Service.

When developing extensions that integrate with Common Data Service, Business Central 2020 release wave 1 will bring extensibility capabilities, where Common Data Service tables and Common Data Service table extensions can be created. This will allow for any custom attribute to be synchronized.

Get telemetry in Application Insights: Partners can monitor performance of web service requests and reports.

The Business Central server will emit telemetry about the execution time and timeouts of web service requests and reports.

Partners and customers can use this to monitor their environments for performance issues caused by web service requests and reports and be more proactive in preventing these issues from occurring.

AL interfaces: An interface is used when you want to decide which capabilities need to be available for an object, while allowing actual implementations to differ, as long as they comply with the defined interface.

This allows for writing code that reduces the dependency on implementation details, makes it easier to reuse code, and supports a polymorphic way of calling object methods, which again can be used for substituting business logic.

Use the new interface object to declare an interface name along with its methods and apply the implements keyword along with the interface names on objects that implement the interface methods.

The interface object itself does not contain any code, only signatures, and cannot itself be called from code, but must be implemented by other objects.

The compiler checks to ensure implementations adhere to assigned interfaces.

A new Quick Fix Code Action can be used to insert interface stubs, if the compiler errors on one or more interface implementations are missing.

You can declare variables as a given interface to allow passing objects that implement the interface, and then call interface implementations on the passed object in a polymorphic manner.

Performance tuning guide: Understand and improve the performance of Business Central. The content is centred on the different ways a functional consultant, a developer, or an administrator can make changes with a performance impact. 

Visit: aka.ms/bcperformancefor more details.

View data sizes per table: When troubleshooting performance issues, sometimes it is necessary to see the distribution of data size across tables. This feature makes it easy for an administrator to look up this information.

A new page called Table Information shows the following:

•Company Name

•Table Name

•Table No.

•No. of Records

•Record Size

•Size (KB)

Information is shown for all companies for which the user has SUPER permissions.

Cancel sessions: Sometimes, cancelling a session is the only way to unblock a customer. For example, a long-running report is locking data in a table, preventing warehouse employees from working.

Prior to this feature, partners would need to contact support to locate and terminate the session.

In the Business Central administration centre, an administrator can see a list of active sessions on an environment and cancel one or more of them. All existing resources consumed by a session will also be cancelled.

For more details, please visit Microsoft’s Business Central page & below are few links which might helpful to understand above in details:

https://www.youtube.com/watch?v=2jqzveL_Nu4&feature=youtu.be

https://docs.microsoft.com/en-gb/dynamics365-release-plan/2020wave1/dynamics365-business-central/planned-features

 


Wednesday, April 29, 2020

Business Central – AL Configuration Files


Business Central – AL Configuration Files

Business Central AL extension contains two JSON (JavaScript Object Notation) files: ”app.json” and “launch.json” file. These files will be automatically created when you create a new AL extension.  These files are used to store configuration data to the Sand Box / Docker Environment or your Local Environment.

launch.json

Launch.json is a configuration file that contains information about the server where the extension will be deployed to test and debug. Two configurations can be used, depending on whether the extension is published to a local server or to the cloud.

Example from Local Server:
{
    "version": "0.2.0",
    "configurations": [
        {
            "type": "al",
            "request": "launch",
            "name": "Your own server",
            "server": "http://localhost",
            "serverInstance": "BC160",
            "authentication": "Windows",
            "port": 7779,
            "startupObjectId": 22,
            "startupObjectType": "Page",
            "breakOnError": true,
            "launchBrowser": true,
            "enableLongRunningSqlStatements": true,
            "enableSqlInformationDebugger": true
        }
    ]
}

Note: Must define “port”, if it is not default one 7049.

Setting
Mandatory
Value
name
Yes
Microsoft cloud sandbox
type
Yes
Must be set to .al. Required by Visual Studio Code.
request
Yes
Must be set to launch. Required by Visual Studio Code.
startupObjectId
No
Specifies the ID of the object to open after publishing.
startupObjectType
No
Specifies the type of object to open after publishing. This setting is used in combination with the startupObjectId setting. Only objects of type Page, Table, Query, and Report are currently supported.
tenant
No
Specifies the tenant to which the package is deployed. If you specify multiple configurations, a drop-down list of options will be available when you deploy. This parameter must contain a tenant Microsoft Azure Active Directory (Azure AD) domain name, for example mycustomer.onmicrosoft.com.
sandboxName
No
Specifies which sandbox to use in cases where multiple sandboxes are owned by the same tenant.
breakOnError
No
Specifies whether to break on errors when debugging or not. The default value is true.
breakOnRecordWrite
No
Specifies if the debugger breaks on record changes. The default value is false.
launchBrowser
No
Specifies whether to open a new tab page in the browser when you are publishing the AL extension (Ctrl+F5). The default value is false. If the value is not specified or set to true, the session is started. If the value is explicitly set to false, the session is not started unless you launch your extension in debugging mode.
enableSqlInformationDebugger
No
Specifies whether the debugger shows the SQL information.
enableLongRunningSqlStatements
No
Specifies whether the debugger enables long-running SQL statements in the debugger window.
longRunningSqlStatementsThreshold
No
Sets the number of milliseconds that are spent before a SQL statement is considered as long-running in the debugger.
numberOfSqlStatements
No
Sets the number of SQL statements to be shown in the debugger.

App.json

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.

Example from Local Server:
{
  "id": "4b0d0d4f-f04b-4c12-b36f-07836ff5229b",
  "name": "ALProject4",
  "publisher": "Default publisher",
  "version": "1.0.0.0",
  "brief": "",
  "description": "",
  "privacyStatement": "",
  "EULA": "",
  "help": "",
  "url": "",
  "logo": "",
  "dependencies": [
    {
      "id": "63ca2fa4-4f03-4f2b-a480-172fef340d3f",
      "publisher": "Microsoft",
      "name": "System Application",
      "version": "16.0.0.0"
    },
    {
      "id": "437dbf0e-84ff-417a-965d-ed2bb9650972",
      "publisher": "Microsoft",
      "name": "Base Application",
      "version": "16.0.0.0"
    }
  ],
  "screenshots": [],
  "platform": "16.0.0.0",
  "idRanges": [
    {
      "from": 50100,
      "to": 50149
    }
  ],
  "contextSensitiveHelpUrl": "https://ALProject4.com/help/",
  "showMyCode": true,
  "runtime": "5.0"
}

Setting
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.  *Required for AppSource submission
description
No*
Longer description of the extension. *Required for AppSource submission
version
Yes
The version of the app package.
dependencies
No
List of dependencies for the extension package. For dependencies to the System Application and Base Application, you must have a reference such as: "dependencies":         
[{"id": "63ca2fa4-4f03-4f2b-a480-172fef340d3f",
"publisher": "Microsoft",
"name": "System Application",
"version": "16.0.0.0"},  {
"id": "437dbf0e-84ff-417a-965d-ed2bb9650972",
"publisher": "Microsoft",
"name": "Base Application",
"version": "16.0.0.0"}]
platform
Yes
The minimum supported version of the platform symbol package file. This setting is needed if system tables are references in the extension.
idRanges
Yes
A range for application object IDs. Objects outside the range will raise a compilation error. A new ID is automatically suggested.
runtime
Yes
The version of the runtime that the project is targeting. The project can be published to the server with an earlier or the same runtime version. The available options are: 1.0 - Business Central April 2018 release, 2.2 - Business Central October 2018 release CU 2, 3.0 - Business Central April 2019 release, 4.0 - Business Central 2019 release wave 2, 5.0 - Business Central 2020 release wave 1.

Content Source: Microsoft Docs