Business Central Build Numbers


Now and then, I get questions about the build numbers - what do they all mean? I always try to tell people that they don't really need to know but for some reason, that just makes people more curious. So instead of answering the same question over and over again - here is what I know...

As you might know, I wrote this blog post a while back, trying to describe that you shouldn't really care about the build numbers, you should always go for the latest unless instructed otherwise.

But let me try to shed some light over the version numbering of these Docker Images. In order to do so, I will have to talk about public and insider builds separately, but before I do that, let me shortly describe what they are doing in Windows (as our strategy isn't that different).

Windows Build numbers

Windows 10 and Windows Server uses the same build numbers, i.e. 10.0.<build number>.<revision>. The major and the minor version number doesn't change and the build numbers are public (https://www.microsoft.com/en-us/itpro/windows-10/release-information), the revision not so much.

Build 17763 is Windows 10 Fall Update 2018, also called 1809 and build 17763 is also Windows Server 2019.

Build 17134 is Windows 10 Spring Update 2018, also called 1803.

etc.

With Business Central we also use the major and the minor version numbers.

Business Central Build numbers

In October 2018 we shipped Business Central Fall 2018 release.

Fall 2018 release, update 19, 13.0, rtm

There are a lot of names for the Business Central Fall 2018 release, lets explain them:

  • Fall 2018 release - obviously because the release is a major release from fall of 2018.
  • Internally (and sometimes externally) this is called update 19 because it is month 19 since we started our online services and this the 19th update to our SaaS offerings.
  • Dynamics NAV 2018 was 11.0, Business Central Spring 2018 was 12.0, Business Central Fall 2018 is 13.0
  • rtm is only used for the on-premises release of Business Central as this was the first release of that

Business Central Fall 2018 release is major release 13, minor release and build number 24630 was the golden build.

Putting these numbers together gives 13.0.24630.0 which indeed is the version number for Business Central Fall 2018. If you want to pull the on-premises Docker image for this release you can use:

docker pull mcr.microsoft.com/businesscentral/onprem:13.0.24630.0[-country][-os]

where

  • country is one of the countries shipped for on-premises: w1, at, au, be, ch, cz, de, dk, es, fi, fr, gb, is, it, na, nl, no, nz, ru, se. Default is w1.
  • os is either ltsc2016 or ltsc2019. Default is ltsc2016.

The on-premises release is also tagged with rtm instead of 13.0.24630.0.

If you want to pull the sandbox  Docker image for this release you can use:

docker pull mcr.microsoft.com/businesscentral/sandbox:13.0.24630.0[-country][-os]

where

  • country  is one of the countries shipped online: w1, at, au, be, ca, ch, de, dk, ee, es, fi, fr, gb, hk, hr, is, it, jp, kr, lt, lv, mx, nl, no, nz, pl, pt, rs, se, si, tw, us. Default is w1.
  • os is either ltsc2016 or ltsc2019. Default is ltsc2016.

For sandbox builds you will also find a country called base. Currently, this is the on-premises w1 database running in sandbox mode. This image is build as foundation for all the country versions.

The sandbox release is not tagged with any extra release tags

Update 20, 13.1, cu1

One month after Business Central Fall 2018 release, in November, we shipped the first minor update. Internally, this is known as update 20. As it is a minor release, the minor part of the version number is updated to 1 and for on-premises we also call this cu1.

The build number for update 20 golden build was 25940 giving us this image for the onprem Docker image:

docker pull mcr.microsoft.com/businesscentral/onprem:13.1.25940.0[-country][-os]

and this image for the sandbox Docker image:

docker pull mcr.microsoft.com/businesscentral/sandbox:13.1.25940.0[-country][-os]

country and os have the same meaning as with the fall release, but we are likely to add new countries at minor updates as well.

Update 21, 13.2, cu2

In December 2018, we will ship update 21. Another minor release, as cu2 on-premises. I do not have the build numbers for this yet, but you probably get the picture by now.

What about revisions?

For Business Central online, we also ship revisions or hotfixes. These hotfixes will keep the same Major and Minor version number and also the same build number. It will however add a revision number. The revision number is not a counter starting from zero - it is an internal build number added as revision number to indicate that it is a newer revision.

We do NOT build Docker images of all these revisions as we also don't roll out all revisions to our Business Central online servers.

For Fall release, we did create Docker images of 3 revisions: 24844, 25242 and 25789. You probably already guessed that this means that the latest sandbox Docker image you can get from update 19/13.0 is:

docker pull mcr.microsoft.com/businesscentral/sandbox:13.0.24630.25789[-country][-os]

For update 20, we have created Docker images of 2 revisions: 26108 and 26323, meaning that currently the latest sandbox Docker image available is:

docker pull mcr.microsoft.com/businesscentral/sandbox:13.1.25940.26323[-country][-os]

which is the same version you get by using:

docker pull mcr.microsoft.com/businesscentral/sandbox:[country][-][os]

These images are ONLY available for sandbox - we will not release revisions of the on-premises Docker images.

Build numbers of insider builds

If you are in the ReadyToGo program, you have access to Microsoft Collaborate and should have access to our insider builds.

Note: When you signed up for ReadyToGo, you signed a Non Disclosure Agreement (NDA) preventing you from telling about what you see and find in the insider builds. We (Microsoft) want to be the one disclosing our new features, but we would like you to know about it early and be ready with your offerings before we ship. You should be working on finding ways to leverage the innovations in the product instead of blogging about them.

Insider builds come in two flavours: bcsandbox and bcsandbox-master

  • bcsandbox contains functionality, which will ship in our next minor release. (While writing this blog post, this is January)
  • bcsandbox-master contains functionality, which will ship in our next major release. (While writing this blog post, this is Spring 2019)

Now you might wonder why the functionality from bcsandbox won't be in the December release (13.2 / cu2)? The reason is simple, we branched out for the 13.2 / cu2 release a few days ago and are running final tests and quality assurance before shipping - this does take some time.

Even more confusing is it, that the version number of the current bcsandbox insider build (right now) is 13.2.26500.0. The reason is again simple, we haven't updated the version number yet in the branch.

And to complete the confusion. The version number of the current bcsandbox-master insider build (right now) is 14.0.26496.0, indicating that bcsandbox-master is older than bcsandbox. The reason is as usual simple, the build number is a number series shared between all branches (Dynamics NAV 2017 and up) and it just means that the daily bcsandbox-master build was build before the daily bcsandbox build. You might have noticed that the Major and Minor version number has been updated to 14.0 though.

Revision is always 0 as we are not shipping the insider builds and the build number will just be updated.

If you are working on an app for AppSource, you should consider setting up daily builds checking that your app doesn't break on the next minor update (bcsandbox). You should also consider setting up weekly builds to check that your app doesn't break on the next major update (bcsandbox-master). This is one of the next blog posts in the CI/CD series.

Remember that you will always get the latest bcsandbox image by using:

docker pull bcinsider.azurecr.io/bcsandbox:[country][-os]

and the latest bcsandbox-master by using:

docker pull bcinsider.azurecr.io/bcsandbox-master:[country][-os]

For the list of countries, available you should check Microsoft Collaborate (until we ship)

More version numbers

If you run docker inspect on a Docker image, you will under the Labels section under Config find not one, not two, not three, but four version numbers. Before getting that question, let me also describe the meaning of these

     "osversion": "10.0.17763.134"
     "tag": "0.0.8.0"
     "version": "14.0.26445.0"
     "platform": "13.0.26325.0"

osversion is the version of the Operating System. Which Windows Server Core version was used to build this image. Read more here.

tag is the version of the Generic Image used to build this mage. You will find the source for the generic image here together with information about what's included in the version.

version is the version of Business Central. This version can be used as the tag to pull this image at a later time. This is the version number this blog post is all about.

platform is the version number of the platform (version of the Business Central binaries). These are following a different version numbering and the same platform version might be used for several releases of Business Central (especially on insider builds). We are likely to specify on our monthly developer preview blog posts which platform version is needed for the features included and we need to know the platform version when you ask questions on AL issues. Note also that when an issue has been fixed, the AL Bot will add a reply to the issue with a text like this:

“ The fix for this issue has been checked in to the master branch. It will be available in the bcinsider.azurecr.io/bcsandbox-master Docker image starting from platform build number xxxxx.”

This means that you can check whether the fix is in your version of docker image. Unfortunately we cannot give any build version or date when this the fix will be in bcsandbox-master.

Now you know... - but do you really need the info?

If you are developing a per tenant customization for an online tenant, you should always be using the latest public sandbox version - as this is what is being rolled out on our online servers. If your extension doesn't run on the latest sandbox, it will not run on an online tenant.

If you are developing an app for AppSource, you should be developing either on the latest public sandbox version or using insider builds. If you are using insider builds you should follow the insider builds (at least monthly).

If you are lifting a Dynamics NAV vertical (https://docs.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/readiness/readiness-embed-apps) you might need to use a specific build, but you should be in contact with Microsoft on which build to use.

If you are developing for on-premises, they should use rtm or cu1 tags - not the version numbers and you should use the onprem container, NOT the sandbox containers. Here you also have the option of downloading the DVD.

 

Enjoy

Freddy Kristiansen
Technical Evangelist

Comments (17)

  1. Pallea says:

    Perfect! Thanks for info – very much appreciated.

  2. Especially with all the new ltsc builds, it had started to get confusing. Another post all developers should read.

  3. Thanks for the update, this helps a lot.

  4. Do you really need the info ? Yes we do. We cannot always develop on the latest version because our delivery cycles are not always based on the saaS version. When you need to develop a core model for 20 countries over the next 2 years deployed in IaaS initially, you need to maintain specific versions and therefore provision the corresponding dockworkers. That’s why 😉

  5. The Nav Guy says:

    As usual another great blog to read and always refer to whenever creating new container.

  6. Hi Freddy, there are no tags on microsoft/bconprem. Will there be a cu2 container released soon ? Or can that be pulled from bcinsider.azurecr.io ? Is it possible to see the available tags available through a docker command ? I am trying to pull bconprem:13.0.26413.0-na to no avail…

    1. FreddyDK says:

      docker pull mcr.microsoft.com/businesscentral/onprem:cu2-na-ltsc2019 (or ltsc2016) as it states in the text on microsoft/bconprem

      1. Anonymous says:
        (The content was deleted per user request)
      2. thank you. I had missed that part. That page has an empty tags tab. That would make it clearer I think.

  7. MicAlter31 says:

    Thank you very much for this blog post.

    We developed an app with the latest “bcsandbox:base” container (always pull). The container was created yesterday and contains the 13.2 version of BC. When we compiled and tested the app using the VSIX from the container and send it off to go through the AppSource publishing process, we got the feedback that the app cannot be installed because of a wrong runtime information.
    We were told to set the “Runtime” to “2.0”/”2.1″. The default of the current container (VSIX) is “2.2”.

    I was wondering because of this:
    “If you are developing an app for AppSource, you should be developing either on the latest public sandbox version or using insider builds.”

    1. FreddyDK says:

      I got an email from the validation team two days ago, that the 13.2 build was published on docker too early.
      Unfortunately I couldn’t pull it back – but if you are in the situation, that you are submitting right now, you can use this instead:

      microsoft/bcsandbox:13.1.25940.26678-base

  8. Staedter says:

    Hi Freddy. Thanks for all the help so far. Without your blog I would have been lost in this new strange containerized world.

    Now my questions:

    1. We are having trouble finding a docker image for the very first BC on-prem release, which we installed on day after its initial release on Oct. 1 2018 (build number for the install media we used is 13.0.24623.0 however I can not find the original version on partnersource although I found a link to it on his blog https://mbs.microsoft.com/partnersource/global/support/support-news/bconpremdownload). Unfortunately we can not find this image on docker hub or mcr and after reading this post i am assuming that is, because the first image released for bc on-prem is the version 13.0.24630 (rtm) and earlier builds are not available as docker images. Is that correct? Or is there any way to get an image for this build number?

    2. While trying to spin up a container from the “inital” image I ran into a weird problem. This problem occurred every time i tried to spin up a container from an image with the imageids 2189807a060e or 2d6730e0ef0c which are the on-prem images with the flags: rtm-de-ltsc2019, 13.0.24630.0-de-ltsc2019, rtm-de, 13.0.24630.0-de

    Spinning up containers from images without the rtm flag respectively the corresponding build number was successful and i had no problems using this command:

    New-NavContainer -containerName MKO-BC-01 -imageName mcr.microsoft.com/businesscentral/onprem:13.0.24630.0-de -Credential Administrator -isolation process -accept_eula -updateHosts -includeCSide -licenseFile C:\tmp\company_onprem.flf -auth NavUserPassword

    But every time I used one of the mentioned images i got the following errors after the Creating SUPER user step:

    ————————————
    Creating SUPER user
    The license information is not valid.
    at , C:\Run\SetupNavUsers.ps1: line 20
    at , C:\Run\navstart.ps1: line 175
    at , C:\Run\start.ps1: line 121
    at , : line 1

    TimeGenerated : 1/4/2019 10:27:05 AM
    EntryType : Error
    Message : Type: System.ServiceModel.FaultException`1[[Microsoft.Dynamics.
    Nav.Types.ServerFault, Microsoft.Dynamics.Nav.Types,
    Version=13.0.0.0, Culture=neutral,
    PublicKeyToken=31bf3856ad364e35]]
    Action: http://www.microsoft.com/Dynamics/NAV/51/ServerFault
    Message: The license information is not valid.
    StackTrace:

    Server stack trace:
    at System.ServiceModel.Channels.ServiceChannel.HandleReply
    (ProxyOperationRuntime operation, ProxyRpc& rpc)
    at
    System.ServiceModel.Channels.ServiceChannel.Call(String
    action, Boolean oneway, ProxyOperationRuntime operation,
    Object[] ins, Object[] outs, TimeSpan timeout)
    at System.ServiceModel.Channels.ServiceChannelProxy.Invoke
    Service(IMethodCallMessage methodCall, ProxyOperationRuntime
    operation)
    at System.ServiceModel.Channels.ServiceChannelProxy.Invoke
    (IMessage message)

    Exception rethrown at [0]:
    at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnM
    essage(IMessage reqMsg, IMessage retMsg)
    at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke
    (MessageData& msgData, Int32 type)
    at
    Microsoft.Dynamics.Nav.Types.INCLAdminService.NewUser(String
    userName, String fullName, NavUserState state, DateTime
    expiryDate, String sid, Boolean changePassword, LicenseType
    licenseType, String passwordHash, String authenticationKey,
    Boolean webServicesKey, DateTime webServicesKeyExpiryDate,
    String authenticationEmail, String contactEmail, String
    profileId, Guid applicationId, String company, String
    languageId)
    at Microsoft.Dynamics.Nav.Management.Cmdlets.NewNavServerU
    ser.InternalProcessRecord()
    at
    Microsoft.Dynamics.Nav.Management.NavCommand.ProcessRecord()
    Source: mscorlib
    HResult: -2146233087
    StackTrace:

    Server stack trace:
    at System.ServiceModel.Channels.ServiceChannel.HandleReply
    (ProxyOperationRuntime operation, ProxyRpc& rpc)
    at
    System.ServiceModel.Channels.ServiceChannel.Call(String
    action, Boolean oneway, ProxyOperationRuntime operation,
    Object[] ins, Object[] outs, TimeSpan timeout)
    at System.ServiceModel.Channels.ServiceChannelProxy.Invoke
    Service(IMethodCallMessage methodCall, ProxyOperationRuntime
    operation)
    at System.ServiceModel.Channels.ServiceChannelProxy.Invoke
    (IMessage message)

    Exception rethrown at [0]:
    at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnM
    essage(IMessage reqMsg, IMessage retMsg)
    at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke
    (MessageData& msgData, Int32 type)
    at
    Microsoft.Dynamics.Nav.Types.INCLAdminService.NewUser(String
    userName, String fullName, NavUserState state, DateTime
    expiryDate, String sid, Boolean changePassword, LicenseType
    licenseType, String passwordHash, String authenticationKey,
    Boolean webServicesKey, DateTime webServicesKeyExpiryDate,
    String authenticationEmail, String contactEmail, String
    profileId, Guid applicationId, String company, String
    languageId)
    at Microsoft.Dynamics.Nav.Management.Cmdlets.NewNavServerU
    ser.InternalProcessRecord()
    at
    Microsoft.Dynamics.Nav.Management.NavCommand.ProcessRecord()

    TimeGenerated : 1/4/2019 10:27:05 AM
    EntryType : Error
    Message : Server instance: NAV
    Category: Security
    ClientSessionId: 540a8d4d-8d50-4fdc-baa2-9d9512225ef5
    ClientActivityId: 0c38df6d-8eff-4950-9b8d-97f33ae2fdbd
    ServerSessionUniqueId: 7f4cf7a3-459c-46ed-b278-5dfb4d4488c5
    ServerActivityId: 86f45052-7d75-4c3a-b1a8-61a975de40dd
    EventTime: 01/04/2019 09:27:05
    Message NewUser(String, String, NavUserState, DateTime,
    String, Boolean, LicenseType, String, String, Boolean,
    DateTime, String, String, String, Guid, String, String)
    FAILURE.
    ProcessId: 5628
    Tag: 00000ZX
    ThreadId: 9
    CounterInformation:

    Initialization of container MKO-BC-01 failed
    In C:\Program Files\WindowsPowerShell\Modules\navcontainerhelper\0.4.2.6\ContainerHandling\Wait-NavContainerReady.ps1:45 Zeichen:17
    + … throw “Initialization of container $containerName failed” …
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : OperationStopped: (Initialization …KO-BC-01 failed:String) [], RuntimeException
    + FullyQualifiedErrorId : Initialization of container MKO-BC-01 failed

    ——————————-

    Mind you, I got this error with or without specifying our company’s bc license file and as I mentioned I did not encounter it with other images. Do you know what could be the problem there?

    Thanks in advanced. Any help would be much appreciated 🙂

    1. FreddyDK says:

      I didn’t see the question before today, you should post questions and issues on GitHub: https://github.com/Microsoft/navcontainerhelper/issues instead of here.

      If you inspect the rtm docker image, you get:

      “Labels”: {
      “country”: “W1”,
      “created”: “201812131754”,
      “cu”: “”,
      “eula”: “https://go.microsoft.com/fwlink/?linkid=861843”,
      “legal”: “http://go.microsoft.com/fwlink/?LinkId=837447”,
      “maintainer”: “Dynamics SMB”,
      “nav”: “”,
      “osversion”: “10.0.17763.134”,
      “platform”: “13.0.24623.0”,
      “tag”: “0.0.8.1”,
      “version”: “13.0.24630.0”
      },

      As you can see, 13.0.24630.0 is using platform version 13.0.24623.0 (which is the file version of the binaries)
      I think the issue you are facing here though is, that license files for cu1 are incompatible with rtm.

      1. Staedter says:

        Hi Freddy. First of all sorry for posting in the wrong venue. I will surely post all further problems and or questions in Github.

        Furthermore you were completely right. It was a problem with our new BC-onprem license file. Using an older one or just starting the container without license and importing the new one after seems to work. I don’t know what I did wrong the first time around, because I thought I had ruled it out.

        So again thank you very much, your help was greatly appreciated.

Skip to main content