Change standard reports in BC?

First of all, you cannot make changes in standart reports. You cannot change the dataitem, the code behind. But it’s possible to change the layout by creating a custom layout with BC using MS Word or the RDLC Report Designer. There you can use the available fields from the standard report. It’s not possible to add new fields.

To add new fields, additional code, following has to be done: Copy the existing Standard report, create a new report extension and add the dataitem and the code to the extension by using the “AL Object Designer” in Visual Studio Code.

(AL Object Designer)

For version 15 or newer:

  • Start with a new extension in BC
  • Install or use installed “AL Object Designer”
  • Download symbols from a sandbox
  • Open the “AL Object Designer”: type “AL Object Designer” in the search box.
  • Search for the report, click on the report name. A new tab will be opened, the code incl. dataitem of the report is then shown.
  • Copy the code to the new .al file, change ID and name. Make then the needed changes, add fields and code, what ever, save.
  • Upload and publish the extension to the sandbox.
  • Goto “Report layouts/Custom layouts”, download the original layout and upload it to the new report, press update layout.
  • Download the report layout from the new report, change the layout according to your needs, add e.g. the new fields.
  • Upload the changed report layout, select the new report in report selections and use it, where needed.  

For older Releases do the following: Install a local version of BC on your laptop or use a docker container for that. Export the report object using finsql as .txt file. Then convert it to AL code using the Txt2Al conversion tool.

Create recurring sales invoices automatically

A common issue is to generate invoices per month for items and services automatically, which are being sold periodically.

You can use report “Create recurring Sales Invoice” to generate sales invoices with the needed lines manually. The parameters “Order Date” and “Posting Date” in the request page are mandatory. So, the report cannot be used to generate invoices automatically without setting the mandatory parameters.

But one step after the other.
First goto “Recurring sales lines” and create a new record, set code and description and add a line with the item, which should be added in the sales invoice, when a new sales invoice will be created.

Next open the customer, for which the sales invoices with recurring lines should be created for. There goto Navigate/Sales/”Recurring sales lines” and add a new record with code “LIC”. Set additional values if needed.
Now, if a new sales invoice with that customer is created, the recurring lines are added automatically. That’s fine.

Next run report 172 “Create recurring sales invoices” to create sales invoices with recurring lines, semi-automatically. In the Request page set “customer no.” with the customer’s no. from above, also set the Code from the “Recurring sales lines”.

Fields “Order Date” and “Posting Date” are mandatory to run the report. Therefore it cannot run automatically without setting both date fields.

What to do now?
To run the report automatically e.g. monthly, the best choice is using a job queue entry. There the request page default values can be set. Set the filter fields like above, additional you could set a default value for the date fields. Doing that, the job queue entry can be run with no problem, but all invoices get then the default date value, what we do not want. It would be nice, if the current date is used.
To solve that  it could be an option to extend table “Standard Customer Sales Code”, if there would be a kind of “OnBeforeCreateSalesInvoice” event to replace the dates, but there isn’t.

So i decided to create a copy of report 172 and make one change.

trigger OnPreReport()  begin  //-  if (CurrentClientType = ClientType::Background) or (CurrentClientType = ClientType::NAS) then begin    OrderDate := Today;    PostingDate := Today;  end;   //+   if (OrderDate = 0D) or (PostingDate = 0D) then     Error(MissingDatesErr);end;
Ok, preparation ready.
Now create a new “job queue entry” as above described and leave the date fields empty.
The job queue entry:
To run the report monthly on every 1st of the month set a dateformula in “Next Run Date Formula”, here use “CM+D1”.

Business Central Cloud in non supported countries.



Today i watched a live web session about BC Cloud Update strategies. The participants had the option to ask questions, which were answered immediatly.

One of the most asked questions was: How can companies get access to BC Cloud in non supported countries? The answers were in my opinion not really satisfying, because the answer was simply “Not now, maybe in the future….”. UK is supported, but not Ireland, the neighbor country, means North Ireland is, Republic Ireland is not. The Microsoft Headquarter Europe is settled in Dublin, Republic Ireland. 😉 Bit strange. Microsoft adds new countries over the time. Support for India is planned, but with no details about the release date. Till then indian companies can use ITAX.

So what can companies and CSPs/ASPs do now, to provide BC Cloud or kind of … ?

Current Availability for BC Cloud:

Country/RegionLocalized byAvailability
Hong Kong SARPartnerAvailable
New ZealandMicrosoftAvailable
Russia (on-premises only)MicrosoftAvailable
South AfricaPartnerAvailable
South KoreaPartnerAvailable
United Arab EmiratesPartnerAvailable
United KingdomMicrosoftAvailable
United StatesMicrosoftAvailable

Development of custom localisations


Record Race Condition – 2 users block each other

A forum user needed help for a typical situation in dynamics nav. 2 users are working on the same sales order at the same time. both make changes. as a result one gets the error: the current record has an old load status, record was changed by an other user.

this is a so called race condition, means two persons want to change the same record or the value of the same field. at the time were the second person, who edited the record, wants to save his changes, the system realizes, that the status of the loaded record is old, because the first person has already saved his changes.

the question was: how to lock the sales order, when one user edits the record, so that a 2. user cannot edit the record.

how to solve the problem:

  • the process answer: i most cases that should not be an issue, because only one user should work with one record at a time, e.g. one sales order. it makes no sense that 2 persons work at the same time with the same order. if that occurs, the work process in the company needs some optimization. So some consultancy is needed.
    • situation 1: 2 persons do different things with the same order. In that case a workflow has to be defined, so that person 1 does his work first, then in step 2 person 2 his work step. result: never work 2 persons at the same time with the same order.
    • situation 2: both do the same. then it’s needed to set the field assigned user, so that each person can filter the sales order list by that field and get so the assigned work load. as a result there is never a situation, where 2 persons work with the same order.
  •  tech answer: the issue is also solvable technically, but i recommend the process change.
    • table sales header: add 2 fields InUse – boolean, UsedBy – code.20
    • page 42 sales order, add following code to
      trigger OnQueryClosePage


      UsedBy := ”;
      InUse := FALSE;


      trigger OnAfterGetCurrRecord()

      InUse := TRUE;
      UsedBy := USERID;

      END ELSE

      IF UsedBy <> USERID THEN
      ERROR(‘in use by %1’, UsedBy);


Do you know Uniconta?

Because working with D365 BC is not that fun and the features are for small customers too much (they pay for many, what they don’t need), i started with Uniconta. First of all, it is far away from big ERP Systems like NAV and BC. The marketing propaganda says it’s easy to use … So what is the reality?

Uniconta is a new cloud based ERP System. At first view some nice features, quite cheap, very fast, but lacks in some kind in the areas configuration, usability and business logic. It’s quite hard to customize it in that way we know it from NAV. It’s easy to add fields in tables, but not easy to add a button with it’s on functionality. It’s not possible too change existing code, e.g. the posting routines like in Nav often done.


  • Often needed information is not available on the current point, e.g. item ledger entries (i.e. inventory posting entries in uniconta) are not available in the shipment list.
  • Shipment can be created from an order multiple times without changing anything in the system except that there is a new shipment in the list. That’s really disturbing.
  • Creating a shipment does not reduce the item stock. That’s also really disturbing.
  • To post an order only for delivering, but without invoicing was really hard to find out, how this simple basic erp process works in uniconta. that after some needed configuration (sales preferences, activating of some inventory module features) the item quantity of the sales line is removed from stock immediatly when you set up the quantity in the sales line and not after posting, is quite strange. seems that this is a kind of reservation. is this a well considered erp process? not sure …

I tested a lot, found a huge number of programming/logic/translation failures and irritating and/or not translated error messages (some of them are like “error has occured”), wrote a lot, lot mails to the austrian support. It’s tedious … Nevertheless, maybe i will continue, will see, if i have the time …

In the end, who knows, maybe it will be developed into the right direction. Hopefully the bugs will be fixed and the usability & the business logic will be better.

For more details see:



What i learned from summit emea, bc day, in amsterdam

i visited amsterdam the first time in my life, it was also the first summit i joined. the event is quite well organized, but there are to less nibbles for coffee break. but this is not the point.

so what is the point? a bit surprisingly many sessions were a kind of a marketing show from and for ISVs and/or partners. this can be interesting, if someone has a special interest in the products of the ISV, for sales people, but it’s not really interesting for the public, for techies, for people who are interested in news about BC in general.

or … power bi is a quite interesting tool and it’s nice, that someone can make basic analysis reporting for BC data, but it’s not specific BC. what i saw, there was no session for “BC in the deep”, what are the features in detail, what can be done with BC and what not. there was only the starting session about BC, a very quick, facile overview, no news. the speaker spoke very quiet, a sleeping pill, so the first impession was not so good.

questions like “is a web based client a solution for everyone or not?” were not discussed, should have been. what about the current/future direction of BC, is it stable now or will we have extensions 3.0 in one year and every ISV has to update their addons? will customizations be stable with BC upgrades or not? these are important questions. there was no session about these topics and no tech session, especially a session about standard reporting in BC would have been interesting. the session about bio diesel was quite ok, it showed a successful BC project with quite complicated processes, which were handled as it should be. it was not really great, normal project work, but it showed, that BC projects can be done like NAV projects.

one exception: the last session i visited was the session of eva dupont, microsft team lead for help/documentation. one word: chapeau!
only 4 people visited the session, what a shame.
mrs. dupont told the history of nav/bc documentation from the beginning, what were the changes, what is now, how can partners/customers use and modify it for their own purposes. all presented with a humour, intelligence and competence of that kind, which are very, very rare. i was fascinated and excited. as always these kind of flowers are not cherished that way it should be.

at last, during one coffee break, i sat in the rest room with my coffee, thinking about whats going on here, suddenly a strange person came to me, sat down, and asked me why i sit here alone and do not talk to others and some more pushy questions. and this person was much too narrow too me. what the hell?! is that the american way to contact a strange person? this was very rude! i can’t stand that at all! we are here in europe, not in the states. this is not the manner how we contact strange persons here! for sure, that is one of the reasons, why the dynamics communities do not work in europe. first of all: keep distance!

so, that was it, this was also my last summit or that kind of event. that’s not that kind of events i like, it costs money, it’s time and power consuming. and in the end, not sure, what it brings. i will also reduce, maybe stop my community activities. spent over the last 5 years huge amount of my spare time, will do other things, which make more sense for me.

Dynamics 365 Business Central October ’18 release

Great news!

  • Cloud and On-Premise: means D365bc can be installed on a local server, you can make then backups of the database.
  • Extended VS-AL experience: support for .Net interop @ on-premise
  • Optimized user interface
  • Flow Filters, Limit Totals
  • Permission sets editable
  • Tenant admin
  • a.m.m.




D365BC – Data Backups

Currently D365BC is missing a couple of things, the licenses could be cheaper. But it’s the successor of Dynamics Nav. Now, some time after the release (name was changed quite often, feature list was changed very often, extension base tech was changed, a.s.o.) i decided to find at least one method for backing up data, a very missed feature. Maybe Microsoft will add that kind of feature in the future, nobody knows. But … in the meantime checkout this.

First i checked out the feature list of current D365BC, what can be used for that functionality or is an extension needed? So in the end i found the “Data Exports” in the finance module, a quite well known feature in NAV, which can be used for exporting data to text files. I worked with D365BC – Austria. Currently i don’t know what in detail are the differences between the localized versions, so please check, if data exports is available in “your” D365BC. 😉 If you cannot find it – should be, because the export report has a object number within the localization range – write to microsoft and let them know, that you want that feature in your localized version. 😀

Ok, starting with page “Data Exports” we can add one new data export, let’s call it BACKUP. Fill out the code and description fields.

Now we add a record definition set called “MASTER” for the master data. For that click on the according button, fill out the code and description fields.

One important thing: the dtd file, the file that contains the data structure. Without a dtd file it’s not possible to export data. In that case this can be done very simple, a concrete structure is not needed, only the xml declaration. Create a new text file, call it default.dtd, add following text line and save the file:

<?xml version=”1.0″ encoding=”UTF-8″?>

Now click on Import in menu group “Dtd File” and import that file. The file’s name is then added to the selected data record defition line.

Now lets go to the details. Click on button “Record Source”.

Here now add the master tables you want to export, e.g. tables 3, 4, 6, 9, 10, 13, 14, 15, 18, 23, 27 using the “New” button. With e.g. date filters you can limit the data to export. In the column “Export Filename” you get a suggested filename for the export file, per default ends with txt. Better change to csv. So the files can after the export easily opened in excel.

Also add all the fields, which you want to export, using the “Add” button in the Fields/Manage menu for the selected table.

That’s it. Go back to the parent page: Data export record definitions. There click on button “Export” in menu group “Process”.

After clicking OK a zip file is created and downloaded containing all the exported csv files. Alternatively you can schedule the export for a later point of time.

Also included is a file index.xml containing base data like company data, export name, list of exported files and the field names.

So, what we get here is a first backup solution for master data. At least we can export the current set of the master data at any time. You could create another data record definition for transaction data. After you have done that you’ll get in the end a complete backup solution for D365BC. 😀

Additional you could create a job queue entry for automatic export. Use report 11015 and set the recurring flags.

Set the request page Options as following:



How to try out Dynamics 365 Financials in countries, where it’s not official published

In countries like Austria Dynamics 365 Financials is not official published. Therefore people in these countries cannot try it out using there local business email account, they cannot learn, how to use it, cannot write postings about Dynamics 365 topics. Also to be an Dynamics NAV MVP does not help here. It would be nice, if Microsoft finds an official solution for that issue. 

I asked MVP colleague Steven Renders, how this could be done and short time later he published a real cool tutorial.

You start with an O365 Account. With that international official business email account you can start to register for all Dynamics 365 apps.

For the whole posting follow this link.