Business Central CU05 TearDown - huge update

I am sorry I have not been able to write this blog post shortly after the appearance of CU05. Well, better late than never, so here it is!
Business Central CU05 is a huge update. This update includes a lot of Integration publisher functions, translation changes and ToolTip updates.
I compared Integration functions from CU04 (3477 pcs) to CU05 (3607 pcs), so this version has 130 new Integration functions!
The schedule for this CU was delayed to late March, so I did not have much time to examine it thoroughly. Also the Changelog is almost 2 Megabytes of text, so it is not a small release at all.
There is also some performance boosting changes, like new keys and added fields to old keys. With new Integration functions it is possible for us to develop modifications by using extension technologue, so this is very important update to have if you are going to develop hybrid or AL code.

Changes include also a lot of VAR settings to helper functions, for example Codeunit 7171 "Sales Info Pane Management" has received a lot of these. It is possible that at some point also these Info Pane codeunits get Integration functions, and then it is obligatory to have variables modifiable. At first thought it seems odd anyways.

Table changes

MS introduced recently a new function in various Document Header tables; TestStatusOpen. This change is now being implemented throughout the old code, and calls for it have been applied to the places that used to have very common "TESTFIELD(Status,Status::Open)". TestStatusOpen function is a bit more elaborated, and also contains test for global boolean "StatusCheckSuspended" and the most importantly call for new Integration publisher functions "OnBeforeTestStatusOpen" and "OnAfterTestStatusOpen", so this change is quite nice addition. I strongly suggest everyone to start using TestStatusOpen function instead of own code.
Document Headers have new way of finding out if the text that is saved in "Work Description" field (for example in Sales Invoice Header) is in OEM or UTF-8 format. This functionality is replaced in CU06 with simpler approach, yet the code is very interesting. More about the deleted code in my post over CU06.
A word of warning though: be very careful when you want to subscribe this function. It is run on a very many occasions, and sometimes even multiple times in one function just to be sure the status is Open! I counted that just on Sales Header table the function is called in 33 places.

Table 36 Sales Header and Table 39 Purchase Header

GLSetup."Bill-to/Sell-to VAT Calc." -setting is now respected throughout Header tables. Another of my standard change not needed anymore. Good work MS!

Table 313 Inventory Setup

This table has a new Boolean field: 51 "Copy Item Descr. to Entries". The new setup is used in Codeunit 22 "Item Jnl.-Post Line" and it deletes ItemLedg.Entry.Description field if it is same as Item.Description. Earlier if the Item.Description and ItemLedgEntry.Description matched, then ItemLedgEntry.Description was cleared straightaway.

Table 372 Payment Buffer

Field "Bal. Account No." has been extended from Code10 -> Code20

Table 1511 Notification Entry

This table now has a new Code50 field "Sender User ID" with tablerelation to UserSetup."User ID". Now receiver of the message knows where the message came from.

MultiLanguage Translations

For some reason translation for word "Codeunit" is now changed from correct Finnish term "Koodiyksikkö" to Engish term "Codeunit". This is a bit strange, but I guess nobody notices beacuse that term is widely used in finnish spoken language. Some other translations have also been changed from correct Finnish to English. For example T9178 Application Area Setup term "Laskutus" has been replaced with English translation "Invoicing". Some of the old wrong translations have also re-appeared, for example Vendor card talks about Customer in tooltips (Vendor = toimittaja and Customer = asiakas in finnish).
Maybe some issues with MultiLanguage Option field handling? Or just Find&Replace gone bad? Go figure.

Functionality change in reports

Notice! Following reports (and codeunit) use now "Document Date" as their date filter instead of "Posting Date". This change can lead into unexpected results with some customers who have been using Document Date and Posting Date correctly all the time.
R2 "General Journal - Test"
R317 "Vendor Pre-Payment Journal"
R402 "Purchase Document - Test"
R412 "Purchase Prepmt. Doc. - Test"
Cu12 "Gen. Jnl.-Post Line"

Codeunit changes

Not a lot happened here, set aside the Integration functions. Some fixes, functionality moved to own functions, and something worth mentioning.

Codeunit 43 "LanguageManagement"

This codeunit has now a nice TryFunction to get Language Code with .NET CultureInfo function. Check this code for a good sample how to use .NET to find something that just is not available in BC.

Codeunit 231 "Gen. Jnl.-Post"

This codeunit now has global boolean "HideDialog" which controls -surprise surprise- the appearance of some of the confirmation dialogs. This is a nice pattern that should always be used with long processes that can be automatized.

Sales and Purchase Document lines

Sales and Purchase document lines have a new function, called DeltaUpdateTotals. This function is called from the document line page, and it calculates document totals on-the-fly, and should be quite a bit faster than calculating all of the lines whenever user for example changes a price of an item line, especially with an order with thousands of lines.
The result is used for example page 508 "Blanket Sales Order Subform" where is new field for SubTotalExclVAT.

Page 2355 "O365 To D365 Trial"

This is a new page to help customers to see some promotional videos about Business Central.
Comment List