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

Bare Minimum Steps to Start with fresh Extension Project for Business Central

Step-1 Create Project Folder

To create a Project Folder press <Ctrl> + <Shift> + <P> to open command Palette or alternatively you can choose from Menu View -> Command Palette.

Now Select Al: Go!

BMS-1

Enter your Forder & Project Folder Name and press <Enter>

BMS-2

Wait for few seconds and choose “Your Own Server” option.

BMS-3

Step -2 Complete your Extension settings & Cleanup

You will land to your project Folder, where few files are created for you by default.

BMS-4

Now we will set our Server connection related changes and remove HelloWorld.al File.

BMS-5

Next we will check our Extension related settings.

BMS-6

Next our Task is to Download Symbols. If Symbol files are missing you will not be able to compile your project. Also any objects referenced for extension will say invalid object.

To Download Symbols again Go to you command pallet out of any 2 methods explained above you are comfortable with.

Step – 3 Download Symbols

BMS-7

Wait for few seconds, if settings of server in launch.json file is correct it should download your symbols.

BMS-8

You will see notification in right bottom corner, else can check the errors in Output Tab of Debugger Window.

You will notice new folder [.alpackages] with 2 files are created. These file contains the definition of your Navision objects.

Next I will prepare my Project Folder for getting started for my Extension development.

Step -4 Prepare your Project Folders to arrange you’re working Files.

BMS-9

Now my Project Folder is ready to start working with Extensions.

We will start creating Files/Objects in our next post.

 

 

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.

AL, Business Central, C/AL, C/AL Editor, Development Tips, Dynamics 365, Extension Package, How To, Information, Instalation & Configuration, Modern Development Tool, Tip & Tricks, V2, What's New

Quick Start with Extensions for Business Central

Today I am going to give you a tip for getting started with Extension Building for Business Central.

As AL have newly introduced so it is going to take time to learn and be comfortable with programming using AL codes.

Best way of learning anything is learning by examples. What if we first learn what will be equivalent to actions we perform in Navision designer.

So to demonstrate this I will start with creating a small customization directly in Navision then convert it to Extension.

Are you ready? Let’s start with this exciting journey of 1-2-3 step.

Step 1.

Saving my Base Line Object (Prior to performing any Modification).

In this example I am going to Modify Table – Item & Page Item Card.

Let’s export this two object as FOB, Later we will require this to revert our customization.

Also export this two objects as txt. This we will require in our Extension building process. But need to follow instructions explained in below step, else this file will be rejected by the tool when we try to convert to AL. Follow the process of exporting text file explained after completing the Customizations in Step 3.

Step 2.

I will create one Table 50000 – Product Range as below:

1

Next I will create one List Page on above Table, Page 50000 – Product Range as below:

2

Also will Add Table Property as below to enable Lookup & DrillDown

3

Save your objects.

Now I will add one field to Table Item & Page Item Card as below:

4

5

Now I am done with my all customization and saved my modified & New Objects.

Step 3.

Now we will export these objects All New & Modified into Text File.

But we will not do it from Object designer rather will do it from command prompt.

Preparing for AL Conversion.

Run Command Prompt as Administrator.

Change to RTC folder.

6

Check your folder where you have installed, default location is as one I am using.

You can export all objects in one single file or one file per object. I am exporting one object per file, you can explore command parameter to use accordingly.

I will be using below commands.

First we will create 4 Folders namely Original, Modified, Delta & Result

Note: Make sure ExportToNewSyntax with command parameter is used else txt2al (which we will use below) will reject your files, it is mandatory.

Below command is to export Original objects before modification: (Save in Original Folder)

1. finsql.exe Command=ExportToNewSyntax, File=G:\RND\Txt2ALTest\exportedBaselineObjectsT27.txt, Database=”Demo Database NAV (13-0)”, ServerName=”KSD-DESKTOP” ,Filter=Type=table;ID=27

2. finsql.exe Command=ExportToNewSyntax, File=G:\RND\Txt2ALTest\exportedBaselineObjectsP30.txt, Database=”Demo Database NAV (13-0)”, ServerName=”KSD-DESKTOP” ,Filter=Type=page;ID=30

Below command is for New Objects: (Save in Modified Folder)

3. finsql.exe Command=ExportToNewSyntax, File=G:\RND\Txt2ALTest\exportedNewObjectsT50000.txt, Database=”Demo Database NAV (13-0)”, ServerName=”KSD-DESKTOP” ,Filter=Type=table;ID=50000

4. finsql.exe Command=ExportToNewSyntax, File=G:\RND\Txt2ALTest\exportedNewObjectsP50000.txt, Database=”Demo Database NAV (13-0)”, ServerName=”KSD-DESKTOP” ,Filter=Type=page;ID=50000

Below command is for Modified Objects: (Save in Modified Folder)

5. finsql.exe Command=ExportToNewSyntax, File=G:\RND\Txt2ALTest\exportedModifiedObjectsT27.txt, Database=”Demo Database NAV (13-0)”, ServerName=”KSD-DESKTOP” ,Filter=Type=table;ID=27

6. finsql.exe Command=ExportToNewSyntax, File=G:\RND\Txt2ALTest\exportedModifiedObjectsP30.txt, Database=”Demo Database NAV (13-0)”, ServerName=”KSD-DESKTOP” ,Filter=Type=page;ID=30

Our Next step will be to create DELTA files.

Open Business Central Administration Shell

Import your Microsoft.Dynamics.Nav.Model.Tools Module using below syntax

import-module “C:\Program Files (x86)\Microsoft Dynamics 365 Business Central\130\RoleTailored Client\Microsoft.Dynamics.Nav.Model.Tools.psd1” -force –verb

Execute below Shell Command:

Compare-NAVApplicationObject -OriginalPath G:\RND\Txt2ALTest\Original\*.txt -ModifiedPath G:\RND\Txt2ALTest\Modified\*.txt -DeltaPath G:\RND\Txt2ALTest\DELTA\ -ExportToNewSyntax

7

After this process we will get our Delta files in Delta Folder, this will be input to our next command/tool.

Next we will convert Delta File to AL files.

On Command prompt used above run below command: (This is not Shell Window please make sure)

txt2al –source G:\RND\Txt2ALTest\DELTA\ –target G:\RND\Txt2ALTest\RESULT\

8

Here we will get our *.al files. Which will be used for creating extensions.

Step 4.

Perform clean up to the database.

  1. Import the FOB exported in Step one to restore your original Table 27 & Page 30.
  2. Delete New Created Objects.

Now our database in in original state as before performing customization.

Fresh and Clean Business Central Database without any customizations.

Step 5.

In this step we will create extension in VS Code using above obtained *.al file.

Open VS Code and Press <Ctrl>+<Shift>+<P> and select AL:Go! to create a project Folder

9

Enter your Project Folder and press enter

10

Update your app.json file as below:

Add Name & Publisher, also check available idRange all objects in this project must be in this Range.

11

Update your launch.json file with your server & authentication details accordingly:

12

Remove the HelloWorld.al file created by default by right click and select delete.

Now add your created *.al files

13

You can drag and Drop to your Project Folder.

Now you will get errors, to resolve it we need to download our Symbols from Navision.

To download press <Ctrl>+<Shift>+<P> to open command Pallet and select Al: Download Symbols

14

If your server settings in launch.jason is correct your Symbols will get downloaded.

15

Now let resolve any others errors that may have in your *.al Files.

First I will rename my all Files to meaningful name so that in future it is easy to manage.

To do so, right click the File and select Rename, in my case I have renamed as below:

16

Now we will open each file and perform required action to resolve the errors as below.

After changes don’t forget to save your files.

17

18

19

20

Ensure Object ID you use is within the range of id provided in app.json file. ID is not used in database or any other extensions. Else when you deploy the extension it will give errors, also make sure you give unique object names too.

DataClassification property is not available in Al so we removed it.

Now my all objects are error free, and ready to be packaged.

Step 6.

Now we will Deploy & Test our Extension.

To create a package press <Ctrl>+<Shift>+<P> to open command pallet.

21

You can choose AL:Publish also it will create package and Publish to the server.

Next you choose AL:Publish to deploy your Extension to the Business Central.

You can verify your Extension from Extension Management Page from Navision Client

22

Double click on your extension record to see details:

23

Now let’s see in action our extension.

Open Item Card.

24

Congrats, your First Extension is ready to use.

There is lots of many thing to explain, but in single post everything is not possible. I will come up with basic things and creating Extensions from scratch in some other posts.

It was just a quick idea, as everyone is looking option for upgrade so this information may be handy to plan their next move.

We will learn basics of AL and other fundamental things in our upcoming posts.

Before I close this post will like to share few more details to complete this post.

If you check your Navision you will not find any object or additional fields we added in our extension, then where is my data stored?

Let’s have look in SQL.

25

Item Extension & Product Group table is created with your app id of the extension.

We will discuss in more details about other things in details in our next upcoming posts.

Till then keep learning, and stay safe, take care.

 

AL, C/AL, Development Tips, Extension Package, Information, Modern Development Tool, NAV 2016, NAV 2017, NAV 2018, PowerShell, Tip & Tricks, upgrade, V1, V2, Visual Studio Code

Future of Navision is extensions V2?

With the release of Dynamics 365 Business Central a successor of Dynamics NAV, things are going to change. If I am not wrong from year 2020 Modern Development Environment will be the only platform available to developers.

In every NAV upgrades biggest challenge was customizations, since objects are fully accessible to developers, so we customize the solution as we want as a developer spreading unstructured, difficult to maintain, customized code everywhere and in all objects.

The beauty of product is, it is totally customizable and adaptable to customer’s business. Customizing Navision is easy and quick to deploy. C/AL is easy to learn and code.

Due to these heavy customizations and unstructured codes upgrade to new version of the product required long time and efforts. Hard to merge, too much efforts leading to high cost, usually many customer prefer to stay with their current version, and miss new capabilities of product available in future versions of Navision.

With release of NAV 2016 concept of extension was introduced. This introduced the concept of writing code isolated from the core objects and use events to interact with the standard codes. Now create the extension that can be installed or uninstalled any time without affecting the original base layer of the product. We call it extension V1.

These were also developed using C/AL and deployed using PowerShell. But still it always felt like something is missing. Then last year Microsoft came up with release NAV 2018 which introduced second generation of extension, we call it extensions V2.

This introduced completely new development platform based on Visual Studio Code Modern Development Environment. It uses new AL language an evolution of C/AL. Now this will be the future.

Dynamics 365 Business Central platform (on-premise and SaaS) uses this development model. Probably this will be the only development platform available from year 2020.

In Business central base application is now an entire extension based with some system objects in CSIDE, In future release you may not have any more side by side development, you will only be having AL and extensions.

 

So what next?

 

  • We should now concentrate on learning VS Code and AL as in future this will be the only way to modify the application.
  • Now we need to make our self-familiar with the Web Client as Windows Client will be obsolete soon.
  • We should start moving our all customization to extensions.
  • Now we should start thinking in direction of AL type customization rather than old C/AL type coding practice.

 

What do you think?

I will come up with more details as progress in this direction. Till then keep learning and sharing with others.