24 December 2019

Report back from Directions EMEA 2019: Technical

The first-day keynote was packed with stats and exciting announcements from Microsoft. As for the Microsoft general manager Toby Bowers,
  • 1400+ partners selling Business Central worldwide.
  • 4000+ customers actively using Business Central.
  • 450+ business central solutions are available on AppSource.
  • The number of users doubled compared to last year.    
This clearly indicates that Business Central is picking up the momentum and moving in the right direction.

The wind direction has changed!
Two years ago, most of the partners were a bit skeptical about the business decision Microsoft made to take Microsoft Dynamics NAV into the cloud. A lot of NAV (back then) partners were still doubting and considering to-go (or not go) with Business Central SaaS. However, statistics from Toby Bowser clearly indicate that the decision took by Microsoft is paying off and more and more partners and customers want to go into cloud offering as it opens a totally new world of opportunities.
Many partners were very curious about the transformation journey and to share their experience with the other partners.  There were multiple sessions where world-leading partners (ISV) together with Microsoft share their success stories with the other partners. I attend a few of those sessions and must mention that I am very impressed with the technologies and processes we use and follow during our Business Central implementations.

New Improvements
During the technical keynote, Microsoft presenters talked about the key improvements they have implemented with the Wave 2 release. This was one of the most awaited sections of the daily keynotes
-  Reduction of noisiness.
-  Intelligent load balancing.
-  Better and fewer error messages.

-  Non-blocking number series.
-  Page background tasks.
-  General Journal background posting.
-  Improved lookup speed in the client.
-  Automatic index tuning in Azure SQL.
-  Supportability
-  Supportability
-  Partner telemetry available to the partner.
-  Create a support ticket directly from the admin center.
-  Better experience for maintaining support details for customers and partners
-  Security
-  ISO27001
-  ISO27017
-  ISO27018
-  SOC 1 & Type 2
Other key points
-  Easy and quick creation of new user roles: Users can easily customize actions on the Role Centre home page by simply doing drag-and-drop.
-  Seamless experience even when working on multiple windows.
-  New keyboard shortcuts.
-  Cloud migration wizard which enable the business to move not just the data, but also templates, setups, and users to the cloud.
-  Ability to create multiple production environments.
-  Ability to select the localization at the time of creating the environment.
New Logo

Jennik Bausager and Mike Cardona from Microsoft did a great demo on the Business Central Wave 2 release. Most of the functionalities they demonstrate are from the requests that came from Partners and customers. This clearly shows that Microsoft listens to the community.

Goodbye old friend, we had a good run!
The era of C/SIDE, C/AL came to an end with the release of Wave 2. During the past 2 years, Microsoft was always advising the partners to move into the AL and use only extensions to build solutions. It seems that now Microsoft feels the community is ready to move on from C/AL and start a new journey with AL.
Not only the C/AL and C/SIDE, but Windows clients also retiring from work. During the conference, Microsoft speakers explained how much effort they put in to develop the web client and universal client to have the like to like capabilities as Windows clients. Even after such an effort, there are few gaps, but with the use of Azure technologies, these gaps can be easily overcome.
There were many sessions on how to use Azure services with Business Central to provide a seamless experience to users. Wagner and I were conducting 3 of them and we were on this path for the past a couple of years as we realize Azure services are the best way to enhance the product capabilities with a minimum effort.
  • Development Environment: Visual Studio Code
  • Programming Language: AL
  • Client: Web and Universal.

Investment from Microsoft
I had few discussions with the Microsoft product team during the conference and as per them product team’s focus for the next financial year would be to work on application enhancements. There will be new/improved migration tools, more support to Power Platform, adding more supported countries.
One of the questions I raised was the CDM/CDS and product team feedback was they are going to work on that after the next financial year because the current focus is to enhance the product before building support into CDM.

This announcement was part of the keynotes and Microsoft is currently working on the certifications for consultants and will be ready by 2020. This will be a piece of good news for the consultants who are eagerly waiting to get themselves certified for Business Central. Microsoft didn’t mention if the certifications will play a role in deciding the partner competency level as it used to be.

Architectural Changes
All this time the Business Central code base was on C/AL. However, this time Microsoft lead it with the example by converting the entire base application into AL. They did not stop from there, to make it easy to manage, they split the AL codebase into 2 different extensions.
With this new change partners only be able to use AL for the development. This rule applies for the on-premise installations as well which means any rule that applies to SaaS will apply to On-Premise as well.

Breaking Changes
As mentioned earlier Microsoft completely converted the C/AL code to AL and split the codebase into 2 separate extensions call System and Application. While doing this Microsoft made some significant changes to the functions and schema. These changes result in “breaking changes” which forced most of the partners to do some rework on their extensions.
During the conference, Microsoft promised they will release more breaking changes but this time they will provide notice one year prior to the removal. Which gives more than enough time for the partners to adapt their code to the new structure of standard apps till the next release.
Before going to the conference, I worked on changing the Theta extensions and I must admit I was impressed with the changes Microsoft has added with the Wave 2. Visual Studio Code AL extension was intelligent enough to suggest performance improvements and providing compilation warnings.
As Microsoft mentioned repeatedly throughout the conference, Business Central is all about providing a seamless experience to end-users.

AppSource allows partners to focus on what they excel over the years. This means implementation partners get access over 450+ different solutions (as of October 2019) to select and then build their solution on top of that. Which helps partners to minimize the implementation time and focus on their implementation steps.

Please provide your feedback with a comment. 
Thank you and Regards,
Tharanga Chandrasekara
Read more »

19 December 2019

Report back from Directions EMEA 2019

Starting from the second week of July to today, I had a completely packed schedule. It is a simple explanation about me blogging about the Directions EMEA after two months. August month started with 4 different Dynamics 365 Saturday community events every weekend and then came the Directions EMEA, after a few weeks time NAV TechDays. After all the travelings around the world and sleepless nights and weekends preparing for each session,  I finally manage to book some time to write a blog post about all the conferences I have attended during the past few weeks.

What is Directions EMEA?
Directions EMEA is where Microsoft Dynamics 365 Partners go to learn first-hand from Microsoft about the Roadmap of the Dynamics 365 Business Central and the best practices for migrating existing NAV customers to Business Central. It is an independent conference organized by the partners for partners and from next year onwards Directions will be known as “Directions 4 Partners”. Around 60-70% of the content delivered in the conference is directly coming from Microsoft and rest is by Microsoft MVPs or well-known experts on the technology.

How I got involved?
Wagner Silveira (Microsoft MVP for Azure) from our Theta Integration team and I was sharing the stage for the past few years delivering sessions on the possibilities of extending Microsoft Dynamics 365 Business Central with the use of Azure services. I always felt like this is more of two worlds coming together to deliver one perfect solution. Wagner is bringing his expertise on Azure technologies and integrations while I bring my expertise on Microsoft Dynamics NAV, and Microsoft Dynamics 365 Business Central. Together we manage to come up with very exciting session topics and demos to deliver the content.
Wagner and I were part of the last two Directions ASIA conferences and this time we got the opportunity to attend and conduct 3 different sessions at Directions EMEA, which is the largest Microsoft Dynamics 365 Business Central Partner conference.

Our sessions were around the topic of “Unlocking new integration potential for Microsoft Dynamics 365 Business Central with Azure Integration Services”. The audience was very interactive, and we felt the audience enjoyed our sessions. Session feedback on the conference app from the attendees also agreed with our feeling.

Even though it was my first time at the Directions EMEA, I did not feel new about it as most of the speakers I knew personally or have already worked or engaged with them through e-mails or via twitter. However, it was an exciting conference for me as I was presenting at the “Directions EMEA” and this was kind of on my bucket list for the past 6 years.

A dream came true!
I still can remember when I was back in Sri Lanka a few years ago working for ZILLIONe, I was closely following the conference and going through all the tweets coming out from other MVPs, and dreaming about attending the conference as an attendee. After a few years later down the line, I was conducting 3 sessions at the conference that I was dreamed to attend as an attendee. Special heart whelmed thanks should go to Theta for assisting all the ways possible and Joerg Rau and Craig Barberini for encouraging me to present at community events. It was Joerg Rau who introduced me to Wagner and put the idea of we two deliver joint sessions. It was the starting point of this great journey with Wagner.

Theta Team
It is not just Wagner and me, this time we had 2 other participants from Theta team. Joerg Rau is a regular attendee for the Directions EMEA conference and this year Carl Head also joins with him to the conference. Even though it took over 27 hours to get to Vienna from New Zealand, attending Directions EMEA makes a huge impact on how we engage with new technologies. In Directions EMEA, Theta team has access to the latest tech news related to Microsoft Dynamics 365 directly coming from Microsoft itself. Attending workshops and deep-dive sessions keep us at the cutting edge technology, which makes perfect for us to deliver a perfect solution for our customers when we return back to New Zealand.

Directions EMEA Party

After session packed 3 days at Directions EMEA came to an end. Personally, I enjoyed every minute of the conference. Manage to put a face to the names for some of the Business Central giants. Picked up many new concepts and technologies and tasted the Schnitzel. Loved it!

MVP group photo | Photo credit: Directions EMEA

Please provide your feedback with a comment. 
Thank you and Regards,
Tharanga Chandrasekara
Read more »

12 November 2019

How to change the version of the AL Language compiler

Microsoft released a new update to AL Language extension for VS Code. With this new update, the compiler does a few pre-checks before compiling the objects and packages them into a .app file. 

Most probably you will have to do minor changes to your extension codebase to work with the new compiler. Otherwise, you will end up in errors like below:

Waldo already posts a few tweets about this new update. 

If you are not ready to deal with these new warning or error messages, and simply want to compile with using the old version this blog post will help you. 

If you want to go back to a previous version of the AL Language compiler you can use the following method:

But make sure to go back to the latest version and resolve the error as soon as possible, since this is just a workaround.

Please provide your feedback with a comment. 
Thank you and Regards,
Tharanga Chandrasekara
Read more »

24 October 2019

Platform property is still required in app.json

With the Wave 2 release, Microsoft did convert all the C/AL objects into AL. Since they want to lead by example they wanted their own code to be on extensions as well. Plus they wanted to split the objects based on its functionality. After converting to AL, Microsoft put the objects into below two extensions:
  1. System Application
  2. Base Application
If you can remember in the app.json file we had to specify the "platform" and "application" versions to download symbols just like below. 

With the Wave 2 changes, our expectation was that we can simply remove the "platform" and "application" values from the app.json and set the dependency to "System Application" and to "Base Application" extensions. This was completely based on an assumption with "Microsoft completed splitting the objects". 

As soon as we removed the "platform" we get errors on a few tables such as "Date', Integer. It is clear that Microsoft didn't complete on splitting objects into main 2 extensions and there are objects still sitting on the platform. Therefore we had to put back the "platform" into app.json. 

Once you download the symbols you will see 3 AL Packages in your .alpackages folder. 

We will have to keep this till Microsoft completely move tables and functionalities into the main 2 apps.  

Please provide your feedback with a comment. 
Thank you and Regards,
Tharanga Chandrasekara
Read more »

How to handle breaking changes?

Wagner and I are on our way to Vienna to present at Directions EMEA, and now we got into our second flight after flying over 15000Km from Auckland New Zealand, to Dubai. We got another 6 hours to complete on this flight before we step our foot in Vienna. Went through the in-flight entertainment system, but almost all the movies are not my type or watched already. What better way to spend 6 more hours rather writing some blog posts on Wave 2 release. Here we go.

What are these breaking changes?
If there are any schema changes that may result in any data loss, then it can be categorized as a breaking change. Changing the primary key of the table, or changing the data type, reducing the field length can be categorized as breaking changes.

What is the big deal about it as we used to do this all (most) the time?
Exactly! If you are so much used to C/AL then must be wondering is this something even to blog about? Oh yes! Because with the Wave 2 release Microsoft officially stopped shipping C/AL code with the product DVD. Even if you want to run Microsoft Dynamics 365 Business Central on-premise version just because you want to do C/AL changes, you are no longer able to do that with the latest version. This means fob is no longer available and with that force-sync option is gone too.

That is why we need to handle the breaking changes in Microsoft's way. At the start, this whole process will feel like taking to much time, but when you think about it, it is all about giving a better (seamless) experience to the customer.

How do we handle breaking changes?
If your extension is only in sandbox then you are lucky, because you got a couple of easy options.
  1. Drop the sandbox and create a new one. 
  2. In the launch.json file changes the “synchronization” parameter to recreate or force

If the option selected was,

Force: It will force changes regardless of the data loss. This does not guarantee any data loss preventions, it simply applies the changes.

Recreate: It will definitely drop all the tables and table extensions created through the extension. This action will lead to data loss and then create the schema from scratch.

These options are acceptable since it’s the sandbox and you may be comfortable losing data. However above-mentioned options are not available in the production environment.

Then how to handle breaking changes in production?
It all depends on the change you want to make, if the change is related to a field then your option would be to obsolete the field and create a new field on the table, then write an upgrade codeunit to transfer the data from the old field to the new field during the installation.

Dimitri wrote a very nice blog on how to write an upgrade codeunit to transfer data. I might be creating a similar post on that, but I would suggest you read that and get a good understanding of how things work in SaaS.

What if the change is related to the Primary Key of the table?
Unfortunately, you will have to obsolete the entire table and create a new table. Then write an upgrade codeunit to do the data transfer. There are few things to keep in mind when obsoleting a table of a field. Make sure all the table relationships are commented out in the code.

As an example, you create a table and one of the fields has a table relationship to dimension code. Then you went ahead and obsolete your table. It all looks good and works fine if the user did not delete or rename the dimension code.

As soon as a user rename or delete the dimension code system will try to modify all the related fields, and it will throw an error to the user. This seems to be something Microsoft should fix but for time being just to make sure when you obsolete any field or table, remove the table relationship to be on the safe side.

How to make a field or table obsolete?
If you want to obsolete the entire table then you can add Obsolete Status and Reason just like below.

If you want to obsolete the field, then you need to add the status and reason as below.

Once you do that just make sure to handle the data upgrade as well. You need to write a small codeunit to upgrade the data from your old table/field to the new table/field.

What annoys me the most?
There are few things annoys me with this process,
  1. All the obsolete tables and fields still are in the schema which means it will be in the extension code.
  2. Finding a new name: As a developer what I always struggle is to come up with a shorter but good name to a field or to a table. Then have to drop that field or table? That is just sad. 
Is there any solution for this?
As per this moment we don’t, we will have to come up with new names and to maintain all the obsolete fields and tables on our codebase, but the good news is Microsoft knows this and they are working on the solution. They will release function to clean up the schema. 😊 

As per now, just be careful and think twice before releasing any schema changes to the production environment.

Please provide your feedback with a comment.
Thank you and Regards,
Tharanga Chandrasekara
Read more »

09 October 2019

Directions EMEA 2019 : We safely landed in Vienna

We safely landed in Vienna after flying over more than 18000+ Km. This is just normal to most of us who live on the edge of the world. As our prime minister used says even the shortest flight to our neighbor is more than 4 hours away. So flying for more than 24 hours is quite common for most of us.  
Sometimes it feels New Zealand is far away from the rest of the world, but that is the same feeling that holds us tight to the beautiful island nation. This is my first time in Vienna and also to Directions EMEA. Wagner and I presented in the last two Directions ASIA conferences but I’m sure the vibe is totally different in Directions EMEA. 

We will be conducting 3 sessions and all our sessions are focused on integrating Microsoft Dynamics 365 Business Central with the outer world with the help of Azure integration Services. We are planning to take the audience through some of the very interesting Azure technologies that are built to make the integration life easy. 

If you are planning or already working with integration scenarios you might want to book your slot with us. 

Sessions :
“Logic Apps x Microsoft Flow, which one should I choose?" | Date: Wednesday, October 9, 2019 | From: 15:30:00 to 16:15:00 | Room: HALLG1

Unlocking new integration potential for Dynamics 365 BC with Azure Event Grid and Azure Integration | Date: Thursday, October 10, 2019 | From: 11:00:00 to 11:45:00 | Room: HALLG2

Exploring Azure Integration Services - Extending D365 BC with the power of integration | Date: Thursday, October 10, 2019 | From: 16:00:00 to 16:45:00 | Room: HALLG1

This year we got 4 people attending Directions EMEA representing THETA (NZ). Joerg Rau (Head of Theta ERP) is a frequent attendee to Directions EMEA and together with him Carl Head, Wagner Silveira and myself are planning to attend almost all the possible sessions we can, to grasp the latest technologies related to Microsoft Dynamics 365 Business Central. 

The knowledge we gather during the Directions EMEA helps us to add more value and flavor to the solutions we deliver to our customers back home. Even though we are far away from the rest of the world, this keeps us toe to toe with all the other partners in Europe and the US. 

If you see us during the conference(I’m sure you will) don’t be a stranger and just say hi. I would love to get to know you all and who knows the possibilities that might open with just a small “hi”. 

See you tomorrow!
Read more »