BC14, BC15, BC16, BC17, Business Central, Cumulative Updates, Dynamics 365, How To, Information, Instalation & Configuration, NAV 2016, NAV 2017, NAV 2018, on-premises, Updates, Wave 1, Wave 2

Cumulative Updates for Microsoft Dynamics NAV 2016/2017/2018 And BC Released in Jan 2021

Update 17.3 for Microsoft Dynamics 365 Business Central 2020 Release Wave 2 (Application Build 17.3.20605, Platform Build 17.0.20517)

It may be necessary to update your license after you install this hotfix to gain access to new objects that are included in this or a previous update. (This only applies to customer licenses.)

For a list of updates that were released for Microsoft Dynamics 365 Business Central 2020 Release Wave 2, see released updates for Microsoft Dynamics 365 Business Central 2020 Release Wave 2. Updates are intended for new and existing customers who are running Microsoft Dynamics Released Updates for Microsoft Dynamics 365 Business Central 2020 Release Wave 2.

How to obtain the Microsoft Dynamics 365 Business Central 2020 Release Wave 2 files

This update is available for manual download and installation from the Microsoft Download Center.

Update 17.3 for Microsoft Dynamics 365 Business Central  2020 Release Wave 2

How to install a Microsoft Dynamics 365 Business Central on-premises 2020 Release Wave 2 update

See How to install a Microsoft Dynamics 365 Business Central 2020 Release Wave 2 update.

Prerequisites

You must have Microsoft Dynamics 365 Business Central 2020 Release Wave 2 installed to apply this hotfix.

Update 16.9 for Microsoft Dynamics 365 Business Central 2020 Release Wave 1 (Application Build 16.9.20537, Platform Build 16.0.20513)

How to obtain the Microsoft Dynamics 365 Business Central 2020 Release Wave 1 files

This update is available for manual download and installation from the Microsoft Download Center.

Update 16.9 for Microsoft Dynamics 365 Business Central  2020 Release Wave 1

How to install a Microsoft Dynamics 365 Business Central on-premises 2020 Release Wave 1 update

See How to install a Microsoft Dynamics 365 Business Central 2020 Release Wave 1 update.

Prerequisites

You must have Microsoft Dynamics 365 Business Central 2020 Release Wave 1 installed to apply this hotfix.

Update 15.14 for Microsoft Dynamics 365 Business Central 2019 Release Wave 2 (Application Build 15.14.46107, Platform Build 15.0.46099)

How to obtain the Microsoft Dynamics 365 Business Central 2019 Release Wave 2 files

This update is available for manual download and installation from the Microsoft Download Center.

Update 15.14 for Microsoft Dynamics 365 Business Central 2019 Release Wave 2

How to install a Microsoft Dynamics 365 Business Central 2019 Release Wave 2 update

See How to install a Microsoft Dynamics 365 Business Central 2019 Release Wave 2 update.

Prerequisites

You must have Microsoft Dynamics 365 Business Central 2019 Release Wave 2 installed to apply this hotfix.

Cumulative Update 20 for Microsoft Dynamics 365 Business Central April’19 on-premises (Application Build 14.21.46103, Platform Build 14.0.46080)

How to obtain the Microsoft Dynamics 365 Business Central Spring 2019 files

This update is available for manual download and installation from the Microsoft Download Center.

Cumulative update CU 20 for Microsoft Dynamics 365 Business Central Spring 2019 Update on-premises

How to install a Microsoft Dynamics 365 Business Central Spring 2019 cumulative update

See How to install a Microsoft Dynamics 365 Business Central Spring 2019 cumulative update.

Prerequisites

You must have Microsoft Dynamics 365 Business Central Spring 2019 installed to apply this hotfix.

Cumulative Update 37 for Microsoft Dynamics NAV 2018 (Build 46142)

How to obtain the Microsoft Dynamics NAV update files

This update is available for manual download and installation from the Microsoft Download Center.

Cumulative update CU 37 for Microsoft Dynamics NAV 2018

How to install a Microsoft Dynamics NAV 2018 cumulative update

See How to install a Microsoft Dynamics NAV 2018 cumulative update.

Prerequisites

You must have Microsoft Dynamics NAV 2018 installed to apply this hotfix.

Cumulative Update 50 for Microsoft Dynamics NAV 2017 (Build 30428)

How to obtain the Microsoft Dynamics NAV update files

This update is available for manual download and installation from the Microsoft Download Center.

Cumulative update CU 50 for Microsoft Dynamics NAV 2017

How to install a Microsoft Dynamics NAV 2017 cumulative update

See How to install a Microsoft Dynamics NAV 2017 cumulative update.

Prerequisites

You must have Microsoft Dynamics NAV 2017 installed to apply this hotfix.

Cumulative Update 63 for Microsoft Dynamics NAV 2016 (Build 52055)

How to obtain the Microsoft Dynamics NAV update files

This update is available for manual download and installation from the Microsoft Download Center.

Cumulative update CU 63 for Microsoft Dynamics NAV 2016

How to install a Microsoft Dynamics NAV 2016 cumulative update

See How to install a Microsoft Dynamics NAV 2016 cumulative update.

Prerequisites

You must have Microsoft Dynamics NAV 2016 installed to apply this hotfix.

AL, API, Application, AppVersion, BC14, BC17, Business Central, Code, Codeunit, DataVersion, Dependencies, Development Tips, Dynamics 365, Extension, GetCurrentModuleInfo, GetModuleInfo, How To, Information, Instalation & Configuration, Install, Name, on-premises, OnInstallAppPerCompany, Publisher, Tip & Tricks, Version.Create, Visual Studio Code, Wave 1, Wave 2

Extension Install Code

Extension install code is executed when:

  • An extension is installed for the first time.
  • An uninstalled version is installed again.

This gives you control to write different logics for first time installation of extension and reinstallations of uninstalled extensions.

This is achieved by defining Install Codeunit in your Extension.

First thing first:

  1. Subtype property of codeunit need to be set to Install
  2. OnInstallAppPerCompany trigger is triggered when the Extension is Installed first time or subsequent install of same version on Extension.
  3. DataVersion property one of the important properties which tells you what version of data that you’re dealing with.
  4. AppVersionDataVersionDependenciesIDName, and Publisher. These properties are encapsulated in a ModuleInfo data type. You can access these properties by using the NavApp.GetCurrentModuleInfo and NavApp.GetModuleInfo methods.
  5. If the DataVersion property equals Version.Create(0,0,0,0), then it’s the first time that the extension is installed because no data exists in the archive.

Sample codeunit can be similar to below:

codeunit <ID> “Name of Codeunit

{

    // Install Logic

    Subtype = Install;

    trigger OnInstallAppPerCompany();

    var

        myAppInfo: ModuleInfo;

    begin

        NavApp.GetCurrentModuleInfo(myAppInfo);

// Get info about the currently executing module

        if myAppInfo.DataVersion = Version.Create(0, 0, 0, 0) then

// A ‘DataVersion’ of 0.0.0.0 indicates a ‘fresh/new’ install

            HandleFreshInstall

        else

            HandleReinstall;

// If not a fresh install, then we are Reinstalling the same version of the extension

    end;

    local procedure HandleFreshInstall();

    begin

        // Logic to execute on first time this extension is ever installed for this tenant.

        // Some possible usages: – Initial data setup for use

    end;

    local procedure HandleReinstall();

    begin

        // Logic to execute on reinstalling the same version of this extension back on this tenant.

        // Some possible usages: – Data ‘patchup’ work, for example, detecting if new ‘base’

// records have been changed while you have been working ‘offline’.

    end;

}

Happy Learning.

AL, Array, BC14, BC17, Business Central, Collection, Development Tips, Dictionary, Dynamics 365, How To, Information, List, Modern Development Tool, on-premises, Tip & Tricks, Visual Studio Code, Wave 1, Wave 2, Web Client

Working with Collections

Today we will learn three types of collections supported by AL.

A collection is a complex type that contains multiple values in one variable.

You can’t have values with different types in the same collection. For example, you can’t add date values in a collection that only allows integer values.

The three types of collections that AL supports are:

  • Array
  • List
  • Dictionary

We will discuss about each type of collections in this post with examples.

Let’s start with most familiar collection we have used with old versions of Navision too, yes you are right, I am talking about Arrays.

Arrays

Arrays are complex variables that contain a group of values with the same data type.

An array holds multiple values, and these values are stored in the elements of the array. You can access these values by using the index, which can also be a value that is stored in another variable. With this design, you can create a loop where you increment a certain variable to loop through every element in an array.

By using the Dimension property, you can define how many dimensions that the array will hold.

When creating a variable of an array data type, you first need to define how many elements that you’ll have in the array. The most commonly used array is the one-dimensional array, which is a list of elements with the same data type.

You can represent an array as a row of values.

To create an array, use the following code:

SalesAmount: array[10] of Integer;

To access an element in an array, use the array element syntax:

SalesAmount[5] := 0;

Unlike other programming languages array index don’t starts with 0 rather with 1. In above example first element will be 1 and last 10.

Having only one element between the square brackets indicates that you are using a one-dimensional array. If you want to have a multi-dimensional array, use a comma-separated list between the brackets, as follows:

SalesAmount: array[6,9] of Integer;

To access an element in an array, use the array element syntax:

SalesAmount[5,3] := 0;

Lists

The List data type can be compared with an array. The List type can only be used with fundamental types and represents a strongly typed list of values that can be accessed by index.

Therefore, you can have a List type of [Integer], but you cannot have a List type of [Blob].

List data type doesn’t require you to define how many elements you want to store up front (while an Array data type does).

The List data type has some methods that are used frequently. The methods that are available for a List data type will discuss in a later post.

To create a list, use the following code:

CustomerNames: List of [Text];

To access an element in a list, use the following methods:

To store/add values to list

CustomerNames.Add(‘KSD Consultancy’);

CustomerNames.Add(‘Microsoft India’);

CustomerNames.Add(‘Ashwini Tripathi’);

To retrive values from list

CustomerNames.Get(1);

Dictionary

The Dictionary data type represents a collection of keys and values.

Every key that you create in this dictionary must be unique. The main benefit is that you can immediately get the value for a specific key.

The value can be a type, but it can also be a List or another Dictionary data type.

Blow code sequence will give you idea how to use dictionary data type:

//Declaring List

CustomerNamesIN: List of [Text];

CustomerNamesUS: List of [Text];

CustomerNamesCA: List of [Text];

//Declaring Dictionary

CountryWiseCustomer: Dictionary of [Code[20], List of [Text]];

//Assigning values to List

CustomerNamesIN.Add(‘KSD Consultancy’);

CustomerNamesIN.Add(‘Microsoft India’);

CustomerNamesIn.Add(‘Ashwini Tripathi’);

CustomerNamesUS.Add(‘Paul’);

CustomerNamesUS.Add(‘Linda’);

CustomerNamesCA.Add(‘Eddy’);

CustomerNamesCA.Add(‘Mark’);

//Assigning values to Dictionary

CountryWiseCustomer.Add(‘IN’,CustomerNamesIN);

CountryWiseCustomer.Add(‘US’,CustomerNamesUS);

CountryWiseCustomer.Add(‘CA’,CustomerNamesCA);

//Retrieving value from Dictionary

CountryWiseCustomer.Get(‘IN’).Get(1);

Here is the complete code:

Created new codeunit and declared variables & procedures to manipulate values in Collections.

Added Code to call procedures defined in codeunit, to assign and retrieve values from collections.

Now its time to check output of above code.

Hope you get idea how to work with Collections, you may find more posts in coming days where we may discuss about methods available for collection.

AL, BC14, BC17, Business Central, Development Tips, Dynamics 365, Enum, Extension Package, How To, Modern Development Tool, Option, Visual Studio Code, Wave 2, Web Client

Options VS Enums

To define a variable of type Option, you can’t use the OptionMembers property that’s used on a field of data type Option. You need to list the available options as a comma-separated list after your variable definition.

For example:- Color: Option Red,Green,Yellow;

If you want to reuse the same Option type in other objects (like other codeunits, pages, or tables), you have to redefine all available values. Later, if you decide to add an extra value, you need to modify all objects with this extra value. Options in a table are not extendable with a table extension.

Solution to this is now available as enum.

An enum is a separate object with its own number and name. You can use an Enum object in other object without the need to redefine it at each object level. The Enum object can also be extended with enum extensions.

Lets see example defining and using enum.

I have created a EnumDefinition.al to define my custom enum Color.

I have defined one Function SelectColor to access values.

To call the Function and test result created extension of Customer List page and added code to access the value.

Now we can use this Enum throughout the extension in any objects without redefining it as in case of Option.

Let’s Publish the extension and see the result.

As you can remember from above code, I have selected color Green and have put the code to call of function on trigger of Customer List page, OnOpenPage.

The Enum object can also be extended with enum extensions.

Extending the Enum

Lets create new Extension, app.json file set dependencies to earlier/above Extension.

Next let’s extend our enum Color.

Next let’s create codeunit for function to access value of enum.

To call the Function and test result created extension of Customer List page and added code to access the value.

Let’s Publish the extension and see the result.

As you can remember from above code, I have selected color Red & Brown and have put the code to call of function on trigger of Customer List page, OnOpenPage.

Red is from earlier defined Color enum (Red, Green, Yellow), & Brown from extended enum (Blue, Black, Brown).

BC14, Business Central, Cumulative Updates, Dynamics 365, How To, Information, Instalation & Configuration, NAV 2016, NAV 2017, NAV 2018, Updates, Wave 1, Wave 2

Cumulative Updates for Microsoft Dynamics NAV 2016/2017/2018 And BC Released in Dec 2020

Update 17.2 for Microsoft Dynamics 365 Business Central 2020 Release Wave 2 (Application Build 17.2.19367.19735, Platform Build 17.0.19353.19730)

This update replaces previously released updates. You should always install the latest update.

It may be necessary to update your license after you install this hotfix to gain access to new objects that are included in this or a previous update. (This only applies to customer licenses.)

For a list of updates that were released for Microsoft Dynamics 365 Business Central 2020 Release Wave 2, see released updates for Microsoft Dynamics 365 Business Central 2020 Release Wave 2. Updates are intended for new and existing customers who are running Microsoft Dynamics Released Updates for Microsoft Dynamics 365 Business Central 2020 Release Wave 2.

How to obtain the Microsoft Dynamics 365 Business Central 2020 Release Wave 2 files

This update is available for manual download and installation from the Microsoft Download Center.

Update 17.2 for Microsoft Dynamics 365 Business Central  2020 Release Wave 2

How to install a Microsoft Dynamics 365 Business Central on-premises 2020 Release Wave 2 update

See How to install a Microsoft Dynamics 365 Business Central 2020 Release Wave 2 update.

Prerequisites

You must have Microsoft Dynamics 365 Business Central 2020 Release Wave 2 installed to apply this hotfix.

Update 16.8 for Microsoft Dynamics 365 Business Central 2020 Release Wave 1 (Application Build 16.8.19389, Platform Build 16.0.19389)

How to obtain the Microsoft Dynamics 365 Business Central 2020 Release Wave 1 files

This update is available for manual download and installation from the Microsoft Download Center.

Update 16.8 for Microsoft Dynamics 365 Business Central  2020 Release Wave 1

Update 15.13 for Microsoft Dynamics 365 Business Central 2019 Release Wave 2 (Application Build 15.13.45740, Platform Build 15.0.45731)

How to obtain the Microsoft Dynamics 365 Business Central 2019 Release Wave 2 files

This update is available for manual download and installation from the Microsoft Download Center.

Update 15.13 for Microsoft Dynamics 365 Business Central 2019 Release Wave 2

Cumulative Update 19 for Microsoft Dynamics 365 Business Central April’19 on-premises (Application Build 14.20.45823, Platform Build 14.0.45810)

How to obtain the Microsoft Dynamics 365 Business Central Spring 2019 files

This update is available for manual download and installation from the Microsoft Download Center.

Cumulative update CU 19 for Microsoft Dynamics 365 Business Central Spring 2019 Update on-premises

Cumulative Update 36 for Microsoft Dynamics NAV 2018 (Build 45821)

How to obtain the Microsoft Dynamics NAV update files

This update is available for manual download and installation from the Microsoft Download Center.

Cumulative update CU 36 for Microsoft Dynamics NAV 2018

Cumulative Update 49 for Microsoft Dynamics NAV 2017 (Build 30392)

How to obtain the Microsoft Dynamics NAV update files

This update is available for manual download and installation from the Microsoft Download Center.

Cumulative update CU 49 for Microsoft Dynamics NAV 2017

Cumulative Update 62 for Microsoft Dynamics NAV 2016 (Build 52006)

How to obtain the Microsoft Dynamics NAV update files

This update is available for manual download and installation from the Microsoft Download Center.

Cumulative update CU 62 for Microsoft Dynamics NAV 2016

Business Central, Dynamics 365, Information, Wave 2, What's New

Dynamics 365 Business Central 2019 wave 2 – Released

The 2019 release wave 2 for Business Central delivers plenty of new features and capabilities.

Dynamics NAV customers upgrading to Business Central on premises will enjoy the unique flexibility to continue running on premises, move to the cloud, or adopt a hybrid approach.

You can download the product ​​​from Microsoft Product Download Page. Select your desired country link to download product specific to your country. You will require partner source or customer source login to access.

Direct link to W1 Product is here.

With the 2019 release wave 2, users access Business Central in the browser, Windows 10 desktop app, mobile apps on Android and iOS, or in Outlook.

The 2019 release wave 2 is the first version that does not include the classic development environment (also known as C/SIDE) or the Dynamics NAV Client connected to Business Central (also known as the Windows client).

The modern developer experience based on Visual Studio Code now supports developing large apps such as the base application from Microsoft, and so C/SIDE is discontinued for Business Central going forward.

Business Central 2019 release wave 2 moves to the Modern Support Lifecycle Policy effective October 1, 2019. This policy requires that the customer maintain the Enhancement Plan and deploy updates as noted in the servicing policy.

The Modern Lifecycle Policy requirements are defined below:

  1. Customers must stay current as per the servicing and licensing requirements published for the product or service.
  2. Customers must have the rights to use the product or service.
  3. Microsoft must currently offer support for the product or service.

BC Product Life Cycle

DYNAMICS 365 BUSINESS CENTRAL LICENSING PROGRAMS

License for Dynamics 365 Business Central will be sold through the following programs:

– Cloud Solution Provider Program (CSP) – Dynamics 365 Business Central

– D​​ynamics Price List (DPL) – Dynamics 365 Business Central on-premises ​

This section lists features that are planned to release from October 2019 through March 2020. Because this topic lists features that may not have released yet, delivery timelines may change and projected functionality may not be released

This colour (This feature is released. ) dates shows which features have been released for public preview or early access and for general availability. Below list is updated as per information available at the time of writing this post.

Application enhancements

Feature Enabled for Public preview General availability
Allow non-sequential numbering End users, automatically Oct 1, 2019
Cancel reminders and finance charge memos End users, automatically Aug 1, 2019 Oct 1, 2019
Carry line descriptions to G/L entries when posting End users, automatically Aug 1, 2019 Oct 1, 2019
Create records and convert prospects with better templates End users, automatically Aug 1, 2019 Oct 1, 2019
Use the Copy Document function on blocked lines End users, automatically Aug 1, 2019 Oct 1, 2019
Aged Accounts Payable includes External Document Number field End users, automatically Sep 1, 2019 Oct 1, 2019
Batch-post sales and purchases as scheduled End users, automatically Sep 1, 2019 Oct 1, 2019
Reconcile payables with the External Document Number field End users, automatically Sep 1, 2019 Oct 1, 2019

Application lifecycle management

Feature Enabled for Public preview General availability
Detailed notifications for update events Admins, makers, or analysts, automatically Oct 1, 2019
Multiple production environments Admins, makers, or analysts, automatically Oct 1, 2019
Report production outage in the Business Central Administration Center Admins, makers, or analysts, automatically Oct 2019
Support for performant data upgrade from C/AL tables to AL tables Admins, makers, or analysts, automatically Aug 1, 2019 Oct 1, 2019
Ability to download a database export file Admins, makers, or analysts, automatically Nov 2019

Empower ISV acceleration

Feature Enabled for Public preview General availability
Design for extensibility Admins, makers, or analysts, automatically Aug 1, 2019 Oct 2019

Migrations to Business Central online

Feature Enabled for Public preview General availability
Enhancements for customer migration tools Admins, makers, or analysts, automatically Oct 2019

Modern clients

Feature Enabled for Public preview General availability
Add links to your navigation menu End users, automatically Aug 1, 2019 Oct 1, 2019
Add notes and links to data End users, automatically Aug 1, 2019 Oct 1, 2019
Enhancements to Excel integration End users, automatically Aug 1, 2019 Oct 1, 2019
Filter reports more efficiently End users, automatically Aug 1, 2019 Oct 1, 2019
Full keyboard shortcut support End users, automatically Aug 1, 2019 Oct 1, 2019
General user experience adjustments End users, automatically Aug 1, 2019 Oct 1, 2019
Get an overview of all business features End users, automatically Aug 1, 2019 Oct 1, 2019
Identify the company by a badge End users, automatically Aug 1, 2019 Oct 1, 2019
Longer timeout period for the server connection End users, automatically Aug 1, 2019 Oct 1, 2019
Modern clients only for Business Central Admins, makers, or analysts, automatically Aug 1, 2019 Oct 1, 2019
Personalize actions on your Role Center End users, automatically Aug 1, 2019 Oct 1, 2019
Resize columns with fewer clicks End users, automatically Aug 1, 2019 Oct 1, 2019
Save and personalize list views End users, automatically Aug 1, 2019 Oct 1, 2019
Switch between companies in your business inbox in Outlook End users, automatically Aug 1, 2019 Oct 1, 2019
Multitask across multiple pages End users, automatically Aug 15, 2019 Oct 1, 2019
Customize user profiles without writing code End users, automatically Sep 1, 2019 Oct 1, 2019
Enter data with speed and agility End users, automatically Sep 1, 2019 Oct 1, 2019
Filter option fields by multiple values End users, automatically Sep 1, 2019 Oct 1, 2019

Modern developer tools

Feature Enabled for Public preview General availability
Translating other extensions Admins, makers, or analysts, automatically Oct 1, 2019
Access modifiers Admins, makers, or analysts, automatically Aug 1, 2019 Oct 1, 2019
Attach and debug next Admins, makers, or analysts, automatically Aug 1, 2019 Oct 1, 2019
Base application delivered as AL applications Admins, makers, or analysts, automatically Aug 1, 2019 Oct 1, 2019
Convert tables from C/AL definitions to AL table definitions Admins, makers, or analysts, automatically Aug 1, 2019 Oct 1, 2019
Database insights made available in AL Admins, makers, or analysts, automatically Aug 1, 2019 Oct 1, 2019
Filtering XmlPort Objects End users by admins, makers, or analysts Aug 1, 2019 Oct 1, 2019
Implementing hierarchical menus End users by admins, makers, or analysts Aug 1, 2019 Oct 1, 2019
Improved app dependency handling on build and deploy Admins, makers, or analysts, automatically Aug 1, 2019 Oct 1, 2019
More power to developers using Designer Admins, makers, or analysts, automatically Aug 1, 2019 Oct 1, 2019

Service fundamentals

Feature Enabled for Public preview General availability
New Support Request option in the Business Central Administration Center Admins, makers, or analysts, automatically Oct 2019
Partners can enter support contact details in the Business Central Administration Center Admins, makers, or analysts, automatically Oct 2019
Lock-free number series End users, automatically Aug 1, 2019 Oct 1, 2019
Page background tasks Admins, makers, or analysts, automatically Aug 1, 2019 Oct 1, 2019
Surrogate keys Admins, makers, or analysts, automatically Aug 1, 2019 Oct 1, 2019
Business Central, Dynamics 365, Information, PowerBI.com, Wave 2

Dynamics 365 2019 release wave 2

Dynamics 365 Business Central: 2019 release wave 2 plan

The first Insider Builds for the Business Central 2019 release wave 2 just became available.

Features that are planned to release from October 2019 through March 2020.

For more information about the above-mentioned features, see the 2019 release wave 2 plan here.

This is also the very first Insider Build that does not include the Windows client (Dynamics NAV client connected to Business Central) as announced earlier.

More features will be unlocked soon along with more information for each one of them.

Dynamics 365 Business Central provides a complete business application solution designed and optimized for SMB organizations. Since its launch in April 2018, Dynamics 365 Business Central has seen increasing adoption by organizations looking to digitally transform their businesses. In the October ’18 update, we updated Business Central to include on-premises deployments as well. The latest version, the April ’19 update, brought an update to Business Central that improves the productivity of users.

The independent software vendor (ISV) ecosystem is important for customers who want vertical or horizontal solutions for Business Central. We will accelerate this ISV ecosystem to begin moving new and existing customers to Business Central online. To achieve that goal, the following development pillars define the 2019 release wave 2 update:

Service fundamentals: Laser focus on performance, reliability, supportability, and security is essential to ensure that service quality remains ahead of the growth in service usage. Accessibility, already in a strong position, must be preserved.

Modern client: With the 2019 release wave 2, users access Business Central in the browser, Windows 10 desktop app, mobile apps on Android and iOS, or in Outlook. We accelerate our investment in speed and productivity features for the modern browser experience, achieving a major milestone in its transformation into a world-class desktop experience for new and expert users alike. 2019 release wave 2 is the first version that does not include the Dynamics NAV Client connected to Business Central (also known as the Windows client). The modern clients now support so many productivity features that the Windows client is discontinued for Business Central going forward. The legacy Dynamics NAV client remains supported in the April ’19 update and earlier versions in alignment with the support lifecycle.

Modern developer tools: the 2019 release wave 2 is the first version that does not include the classic development environment (also known as C/SIDE). The modern developer experience based on Visual Studio Code with Azure DevOps, and an AL language that supports an extension-based approach to customization now supports developing large apps such as the base application from Microsoft, and so C/SIDE is discontinued for Business Central going forward. The classic development environment remains supported in the April ’19 update and earlier versions in alignment with the support lifecycle.

Empower ISV acceleration: The 2019 release wave 2 update delivers a set of features designed to simplify ISV development for new solutions and, specifically, for streamlining the migration from the source code customization model of Dynamics NAV to Business Central. The Dynamics NAV business has been driven by strong vertical ISV solutions, surrounded by add-on solutions. For the 2019 release wave 2 update, our focus will be streamlining the path for ISVs to bring their solutions—and in turn their customers—to Business Central online.

Customer migration tools: After enabling Dynamics NAV ISVs to bring their solutions to Business Central online, the next step is to simplify the journey for existing Dynamics SMB customers coming from Dynamics NAV, Dynamics GP, or Dynamics SL to migrate from their current on-premises solutions to Business Central online. A set of tools already exists; these will be enhanced with the 2019 release wave 2.

Limited extension to the Business Central online localizations is planned for the 2019 release wave 2 in order to prioritize the service fundamentals work ahead of expanding the service footprint. Additional partner-developed localizations will be added following the 2019 release wave 2.

Download the 2019 release wave 2 PDF

New for wave 2: The Power Platform (PowerApps, Microsoft Flow, and Power BI) features coming in the 2019 release wave 2 have been summarized in a separate release plan.

Wave2ReleaseDates

Dynamics 365: 2019 release wave 2 plan

The 2019 release wave 2 enhances artificial intelligence capabilities to help organizations accelerate their transformation of customer service, sales, and marketing functions:

Sales Insights empowers teams with more foresight, to enhance productivity and better anticipate outcomes across the sales lifecycle.

Customer Service Insights provides an actionable view into critical performance metrics, operational data, and emerging trends using industry-leading artificial intelligence.

Virtual Agent for Customer Service enables organizations to create AI-powered bots that chat with customers and provides new opportunities for organizations to improve customer service through digital transformation.

Customer Insights enables every organization to unify and understand their customer data to harness it for intelligent insights and actions.

Market Insights enables business users to gather actionable insights based on what consumers say, seek, and feel about their brands and products.

Fraud Protection enables the e-commerce merchants to drive down fraud loss, increase bank acceptance rates to yield higher revenue, and improve the online shopping experience.

The 2019 release wave 2 continues to add a whole new set of experiences to enhance employee productivity using mixed reality:

Remote Assist empowers technicians to solve problems faster the first time.

Layout provides a new way for space planners to bring designs from concept to completion with confidence and speed.

Product Visualize empowers salespeople to convey the true potential of their products to their customers by harnessing the power of augmented reality on their mobile devices.

Guides is a mixed-reality application for Microsoft HoloLens that enables employees to learn in the flow of work by providing holographic instructions when and where they need them.

Power Platform: 2019 release wave 2 plan

The Microsoft Power Platform enables users and organizations to analyze, act, and automate on the data to digitally transform their businesses. The Power Platform today is comprised of three products – Power BI, PowerApps, and Flow.

For PowerApps, this release wave includes major improvements to enable app makers to build higher-quality apps more easily while still supporting more advanced enterprise and administrator requirements. Improvements in PowerApps focus not only on introducing capabilities but also on simplifying existing concepts to improve maker and end-user productivity in PowerApps and Dynamics 365 apps built upon the Unified Interface.

PowerApps makers can now create a powerful new type of experience called PowerApps Portals, which are web portals that surface data stored in Common Data Service to employees or users outside their organizations.

Microsoft Flow is introducing smarter and more powerful experiences in three key areas. Flow makers get smarter and more powerful experiences. End users of flows can leverage world-class business process capabilities, including working with business processes offline. Finally, there is now much richer tooling for administrators, such as PowerShell cmdlets and the new Power Platform Admin center.

AI Builder (preview) is a brand-new Power Platform capability for teams with the business expertise to easily automate processes and predict outcomes to improve business performance. AI Builder is a turnkey solution that brings the power of Microsoft AI through a point-and-click experience and is directly integrated into PowerApps and Microsoft Flow.

Power BI simplifies how organizations derive insights from transactional and observational data. It helps organizations create a data culture where employees can make decisions based on facts, not opinions. For the upcoming release, Power BI is investing in four key areas that drive a data culture: intuitive experiences, a unified BI platform, big data analytics, and pervasive artificial intelligence (AI).

Data integration provides built-in connectivity to the Power Platform and more, with data across hundreds of business systems, enabling rich and intelligent experiences. The Common Data Model provides semantic consistency for canonical business entities across Dynamics 365 and Common Data Service, increasing value and saving time for application developers, ISV partners, and integrators.

This release plan describes functionality that may not have been released yet. Delivery timelines and projected functionality may change or may not ship (see Microsoft policy).

Here are the key dates for the 2019 release wave 2.

Milestone Date Description
Release plans available June 10, 2019 Learn about the new capabilities coming in the 2019 release wave 2 (October 2019 – March 2020) across Dynamics 365 and the Power Platform.
Release plans available in additional 11 languages July 8, 2019 The Dynamics 365 and Power Platform release plans are published in Danish, Dutch, Finnish, French, German, Italian, Japanese, Norwegian, Portuguese (Brazilian), Spanish, and Swedish.
Early access available August 2, 2019 Try and validate the new features and capabilities that will be a part of the 2019 release wave 2, October update, before they get enabled automatically for your end-users.
General availability October 1, 2019 Production deployment for the 2019 release wave 2 begins. Specific deployment dates for each country or region or instance will be communicated in advance.
API, AtomPub, Business Central, Development Tips, Dynamics 365, EDMX, How To, Information, JSON, OData, REST, RPC, SOAP, Tip & Tricks, Web Services, WSDL, XML

Web Services – Business Central Part- 1

You can use web services in Microsoft Dynamics 365 Business Central to expose data to the outside world.

You can use web services to get data from Microsoft Dynamics 365 Business Central and use it in other applications.

Any application, programing language or program that can work with XML and/or JSON for example: – Power BI, Microsoft PowerApps, a custom .NET program, etc. can connect to Microsoft Dynamics 365 Business Central fetch the available data.

A web service can also be used to create new or update existing data in the application.

Both XML (Extensible Markup Language) and JSON (JavaScript Object Notation) are open-standard file formats that are readable by humans. They are used to send information between clients over web services.

In this post we will discuss some terminology and differences between SOAP and OData. We will also learn on how to configure these services in Microsoft Dynamics 365 Business Central.

SOAP relies on HTTP(S), SMTP, FTP for message negotiation and transmission.

The most common type of messaging pattern in SOAP is the Remote Procedure Call (RPC), where one network node (the client) sends a request message to another node (the server), and the server sends a response message to the client. It uses SOAP envelope, which defines the message structure and how to process it.

A SOAP service exposes a WSDL (Web Services Description Language) file that describes how the service can be called, what parameters it expects and what data structure it returns. This file is an XML based document, and is targeted to be read by machines, not by humans.

OData (Open Data Protocol) is an open protocol that is designed to use and query RESTful APIs. An API (Application Programming Interface) is a set of routines and protocols that is used to communicate between different software components.

OData is built upon REST services and can be used to query REST services. By providing extra query parameters to a URL, you can for example limit or filter the result set.

SOAP exposes a WSDL document, OData exposes an EDMX document, which contains metadata for all the published web services.

You can see all the available OData web services by going to the search box and search for web services.  This page is used to enable access to OData and SOAP web services.

ws-001

OData web services can only be used with object types pages and queries, not with codeunits.  There are two versions of OData you can use, version 3 and version 4.  Version 4 is an enhanced version, and important to know is that version 4 returns JSON where version 3 returns AtomPub documents which are XML documents.

From this window you can add new or manage existing Web Services.

It is simple 2 Step task Add new object give service name and enable Publish checkbox. You will get your OData and/or SOAP URL.

For example: – object type page can be used in OData and in SOAP web services.

Let us explore the Web-Service Urls. For test purpose, I have created a Service with the name Customers for Page Customer Card.

https://ksd-Desktop:7748/BC130/ODataV4/Company(‘CRONUS%20International%20Ltd.&#8217;)/Customers

When we open, for example, our Customers web service, we can have a look at the URL.

First we have our server name and the port it’s using.  “https://ksd-Desktop:7748”

Then we have our instance name, which in our case is BC130.

Then our OData version, so version 4.  “ODataV4”

And then our company name, “Cronus International Ltd”.

And then finally our web service name, which is, in our case, “Customers”.

Let’s try this url, when we execute this url in our browser we get json file listing customers similar to below:

WS-003.jpg

Here etag is the unique identifier of each records, it will be required when you update records, will discuss later.

If I remove my service name then:

https://ksd-desktop:7748/BC130/ODataV4/Company(‘CRONUS%20International%20Ltd.&#8217;)

{“@odata.context”:”https://ksd-desktop:7748/BC130/ODataV4/$metadata#Company/$entity&#8221;,”Name”:”CRONUS International Ltd.”,”Evaluation_Company”:false,”Display_Name”:”CRONUS International Ltd.”,”Id”:”ab76c7b4-3c72-4805-86f7-7d91a10612ce”,”Business_Profile_Id”:””}

If I remove my Company Name then:

https://ksd-desktop:7748/BC130/ODataV4/

WS-004.jpg

If I open the metadata url

https://ksd-desktop:7748/BC130/ODataV4/$metadata

You will get EDMX file which shows metadata about the information in the OData web service.

ws-002

You can see some properties with our data types.  For example, if we scroll down, if we go to Customers, we have our entity type Customers, we can see some properties which our data types and max lengths.  We can also see what properties are primary key.  So this is number and so on.  So all useful information when you’re creating applications that use these OData web services.

Filtering the OData

You can set filter expression to the url few examples as below:

We will use the filter option top for limiting the result to top 5 records of customer.

After our service name, we type question mark, then the dollar sign, and then the word top equals 5.

For example :

https://ksd-desktop:7748/BC130/ODataV4/Company(‘CRONUS%20International%20Ltd.&#8217;)/Customers?$top=5

Now the query will result in only first 5 records for customer.

If we want to see next 5 records then we can append &$skip=5 on above url

https://ksd-desktop:7748/BC130/ODataV4/Company(‘CRONUS%20International%20Ltd.&#8217;)/Customers?$top=5&$skip=5

If you want to see specific customer you can modify url as:

https://ksd-desktop:7748/BC130/ODataV4/Company(‘CRONUS%20International%20Ltd.&#8217;)/Customers(‘10000’)

Please refer to EDMX file to find correct name of the fields if wants to filter on specific fields.

https://ksd-desktop:7748/BC130/ODataV4/Company(‘CRONUS%20International%20Ltd.&#8217;)/Customers(‘10000’)?$select=Name

You will get the result as below for above url query

“@odata.context”:”https://ksd-desktop:7748/BC130/ODataV4/$metadata#Company(‘CRONUS%20International%20Ltd.&#8217;)/Customers/$entity”,”@odata.etag”:”W/\”JzQ0O044eFNmcWdXV0NpYlhTZDhUdTlrdytZUmdQbWRkL2U4TzZ4UEsxNGtod0

E9MTswMDsn\””,”Name”:”The Cannon Group PLC”}

You can add other fields too by appending the url with ‘,’

Customers(‘10000’)?$select=Name,City,Address……………

As told earlier please refer to EDMX file for correct Fields Name or Property it is case sensitive.

You can remove the Primary Key from the url to get list of selected fields for all customers.

Customers?$select=Name,City,Address……………

https://ksd-desktop:7748/BC130/ODataV4/Company(‘CRONUS%20International%20Ltd.&#8217;)/Customers?$orderby=City&$select=Name,City,Address

You can use orderby to sort the data from other than Primary key, by default it is sorted by Primary Key.

You can use desc for descending sort.

https://ksd-desktop:7748/BC130/ODataV4/Company(‘CRONUS%20International%20Ltd.&#8217;)/Customers?$orderby=City desc&$select=Name,City,Address

You can use filter to filter specific field values as:

https://ksd-desktop:7748/BC130/ODataV4/Company(‘CRONUS%20International%20Ltd.&#8217;)/Customers?$filter=City eq ‘Zutphen’ or City eq ‘Atlanta’&$select=Name,City,Address

you will get output as:

WS-005.jpg

You can use expressions like [filter=Balance_LCY gt 0] or [filter=Location_Filter eq ‘BLUE’] etc.

I stop here for today. We have seen how the Web Services OData can be used to query records.

We will discuss about other stuffs in our next post in more details.

Till then keep exploring and learning, see you in next post. Take Care of yourself.

 

AL, Automated Testing, Business Central, Development Tips, Dynamics 365, Extension Package, How To, Information, Modern Development Tool, Test Codeunit, Tip & Tricks, V2, Visual Studio Code

Automated Testing in Business Central

Testing is the essential part of the software development process and Cover User Scenarios.

Developers take care of their unit tests and perhaps, some wider coverage when they deliver a finished module. When developer tests the software he only tests scenarios for which he have done development.

In manual testing, since there are usually only humans involved, there will without doubt be discrepancies in the burden that test are conducted. There’s is always the trade-off between whether or not to conduct a full test scenarios for every delivery. In most scenarios tests are performed to areas of application, those are relevant for the current release. Like why should you repeat the purchasing scenarios if you only made a change to the sales process for example?

Automated testing brings a level of insistency and repeatability to testing that is impossible to achieve with just humans. By using a tool that facilitates automated testing, you can run as many test, as many times, as you want with a guarantee that each and every test will run exactly the same way as the first time. You can actually prove that a change in the sales process will not affect the purchasing process.

The key to successful automated testing is that you can link test scenarios to user scenarios. To make your development process itself test-based, by writing proper test at the start of the development process will give you clear and concrete requirements that the software has to meet.

Repeatability of running test scenarios is another key ingredient of automated testing. Manual testing can be very tedious task that can cause a human tester to lose focus. Added project pressure can add to the temptation for tester to skip the unimportant pieces of the test scenarios. How many times do you have to make sure that you can’t enter text string in an amount field for example?

Automated testing is a predefined set of Instructions that always run, no matter what time, no matter how eager the project manager wants the results, no matter how hungry you are, the test scenario is defined and it will execute every instruction every time that the test runs.

It will run exactly the same manner each and every time. You can spin as many sessions you need and simulate real load test. You can potentially scale this up to hundreds or even thousands of users at the same time and really test the limits of your software’s capabilities. Even in larger organizations it will never be possible in a manual test situation.

Manual testing is great to prove that a new piece of software meets the requirements. But what is not always clear is whether a new change in the software has had any adverse effects on existing functionality in other areas. Whereas in case of automated testing provides the capability to prove that all test scenarios can still give you the same test results over time, whenever you make any changes to any part of the software. Since you can schedule automated tests, you can run a full system test overnight or weekend, when you come back at your desk in the next morning you can look at the outcome of the latest test run and focus on just the ones that failed.

Test that are included in the standard business central test toolkit, cover the entire application. You can run the full length of thousands of those test in a matter of hours. So, combined with a build script, you can automate the creation of a new tenant, implement your compiled app, run selected tests and then, evaluate the results in a fraction of the time, which it would take a team of manual testers to do the same thing in hours. Automated testing provides the capability to run a full test set every single day or multiple times a day. If you have that capability, why not use it?

You can organize your development process to include daily build process and include a full sweep of the entire set of tests, and almost guarantee a 100 percent success when you are ready to deliver your software.

Those working on AppSource apps, will not have a choice on matter. Automated testing is mandatory for your app source submission.

Conclusion best way to do testing will be take a fresh demo database of BC, install your app and test the user scenario. If you need to prepare any data is necessary to successfully complete the user scenarios or the test scenarios, the creation of that data should be part of the installation process of your app, and or your test app. Most important feature should be included is the ability to run them in a non-super role, it should not be mandatory to have super rights in order to use your app. Make sure you include the test for non-super users as well.

Oh!! Today lots of lecture. Let’s see how we can implement this, although writing test scripts is not a easy task, require lots of efforts to cover all scenarios and knowing the system well in advance, with clear set of inputs and outputs, else even you pass test scenario chances to fail in real word cannot be avoided.

Below are the steps we follow to create an automated test script. Below is not the full and final, it is just an idea how we can implement this, rest you have to use your experience and skills to complete as per your requirement and project need.

Not compulsory but it will be better if we can use fresh database for this task. We will have only our Extension on which we are going to run this Automated Test and the Extension which we are creating in this post for Auto Test.

Step – 1 : Nav/BC Preparation

If not already imported you need to import Set of objects to enable automated testing. You can find them on installation disk under TestToolKit folder.

tcu001

If creating a Docker Container use option –includeTestToolkit in the new NavContainer Cmdlet.

Once you are done now you can run your Test Tool

tcu002

tcu003

Hold on, we will come to this later in below post.

Step – 2 : VS Code Project Preparation

Create a New project, and add Folder Structure to arrange your files.

You can find steps in this post : Bare Minimum Steps to Start with fresh Extension Project for Business Central

We need to Specify test target as a dependency. For this it is compulsory to have the apps symbols file to make this work. Install your Extension on this database if not already deployed.

We need to import symbols for the Test Framework as well. So need to specify ‘test’ settings to the app.json file of this project. Specify minimum supported value e.g. 12.0.0.0

Once these two settings are done, now when you hit Download Symbols it will include the Symbols for your Extension and Test Toolkit Objects.

tcu004

Now you can see 2 additional package symbol files are downloaded.

  1. KSD Consultancy_MyFirstExtensionProject_1.0.0.0.app
  2. Microsoft_Test_13.0.24209.0.app

And 2 std. symbol file that gets included when you create any new Extension Project.

Step – 3 : Writing Test Codeunits

We will create a codeunit of Subtype = ‘Test

Test procedures are decorated with [Test] attribute

Your OnRun will execute first, followed by other all test procedures.

You can use [TransactionModel] attribute to specify each test procedure is in a separate database transaction.

The output will be Success or Failure.

Failure is any error that is raised by the test code or from the code which is being tested. In either case Other Test procedures will still continue.

Other Features are Test Pages and UI Handlers, we will discuss on same in some other similar post.

AssertError statement is like if I do this error should come, it happens then your test is Success. In this case Failure is actually Success as you knowingly created error.

As I told earlier also this is very complicated area, to write Test Scripts, but if you start practicing from small stuffs eventually you will learn and will able to write a good Test Scripts. You can check out other standard Test Codeunits and update your knowledge how you can write your own Test Scripts.

My sample Test Codeunit looks something like below, it is just for idea in real scenario there should be lots more.

tcu005

Step – 4 : Deploy & Run the Test App

Publish your Test App.

Go to Extension Management

tcu006

You will find 2 Extension, The Initial Extension which we created in earlier posts and the Extension we just deployed.

Now open the Test Toolkit Page – 130401

Click on Get Test Codeunits function then Select Test Codeunits

tcu007

Now Select the Codeunit we just created.

tcu008

You can select other Codeunits as per the requirement, in my case I am just going to select my Codeunit which we created in this post.

tcu009

This will list all the functions available in the Test Codeunit.

Now you can select Run all or Run Selected. To test your App, I will select Run All.

tcu010

Here is the final output of test result

tcu011

Hope you will agree the test we performed, same if done manually no one can test the same in 6 seconds as this did. And we can perform as many times, and any time.

Once your Test Codeunit in place whenever you make changes to app, you can just run the test and verify that any changes you made have not impacted the existing functionality in any manner.

To save the time in testing, you have to pay in other way in creating the test codeunit as it is not that easy to cover every user scenario in your test codeunit and will require lots of efforts.

But when you are working for App Source you have no choice, you will have to do it.

Today the post got bit longer, but this topic is very complicated and require explanation. Hope you got the starting point from this and will put your efforts to reach to your required conclusion, take help of existing codeunit, nothing will be better than those to learn how Microsoft themselves implements it.

See you again with some more topics, and if get some extra time will try to add more to this post as a second part to this post. Fact is one post is not sufficient for such a huge topic.

Till then keep exploring and learning and take care of yourself.

AL, Business Central, Development Tips, Dynamics 365, Extension Package, How To, Information, Tip & Tricks, V2, What's New

AL Basics – Part-1

Programming in AL is very easy, just we need to make up our mind to accept the changes. Till we resist to changes it seems to be hard once we accept it, that becomes easy.

In VS Code, for AL it provides Snippets which help you with creating your base structure following which you can easy build up your complex coding structures.

Few Snippets ready to use are as below:

To Create Structure of Snippet to use
Table ttable
Page tpage
Codeunit tcodeunit
Page Extension tpageext
Table Extension ttableext
Table Field tfield
Page Field tfieldpage
Trigger ttriger
Functions/Procedure tprocedure
Assert error tassert
With Do twithdo
If tif
If Else tifelse
Case of tcaseof
Case else tcaseelse
For tfor
While twhile
Repeat Until trepeat

Today I will explain on conditional and loop statements for others I will do in next post.

These statements are similar as we are familiar with using in our C/AL.

Below are few examples to explain them, since no changes so need not commentary for same.

conditional StatementsLoop Statements

For other Snippets will come in next post.