Post

The AL-Go artifact setting: every combination that works (and some that don't)

A cookbook of AL-Go artifact settings, grouped by what you want to achieve, with the Business Central version each one actually resolves to.

The AL-Go artifact setting: every combination that works (and some that don't)

🇩🇪 Deutsche Version

The artifact setting decides which Business Central version AL-Go builds and tests your apps against. It lives in your AL-Go settings, usually .AL-Go/settings.json:

1
2
3
4
{
  "country": "de",
  "artifact": "//28.5/de/latest"
}

A value has five parts, and every part can be left empty:

1
<storageAccount>/<type>/<version>/<country>/<select>
PartIf empty
storageAccountbcartifacts (released versions)
typeSandbox
versionany version
countrythe country setting (default us)
selectlatest

That’s why values like ////nextmajor are valid.

The country only selects the localization, not the version: w1, de, us and dk get exactly the same build numbers. w1 is the worldwide base version without country-specific functionality; the localized versions build on it.

All results below were resolved on October 14, 2026, two weeks after the release of 29.0.

Always the current release

SettingResolves to 
(not set)29.0.54011.56330newest sandbox for your country
///w1/latest29.0.54011.56330same, explicit
///de/daily29.0.54011.56262newest build before today
///us/weekly29.0.54011.56119newest build before last Sunday
///dk/current29.0.54011.56330same as latest

All of these switch to the new major on release day. daily and weekly only reduce how often the artifact changes, so caches stay valid. They don’t pin a version.

Pin a version

SettingResolves to 
//28/w1/latest28.5.54151.56322newest build of major 28
//28/de/first28.0.46665.52632oldest build of major 28
//28.5/us/latest28.5.54151.56322newest build of 28.5
//28.5/dk/first28.5.54151.54178oldest build of 28.5
//28.5.54151.56322/w128.5.54151.56322exactly this build
//28.5.54151.0/de/closest28.5.54151.54178first build ≥ the given version within 28.5, otherwise the newest 28.5
///us/secondtolastmajor28.5.54151.56322newest build of the previous major
///dk/first15.4.41023.43755oldest sandbox artifact available
  • The version is a prefix: 28 matches all of 28.x, 28.1 matches 28.1 but not 28.10.
  • Older minors keep receiving builds. 28.5 got a new one two weeks after 29.0 was released, so //28.5/…/latest always gives you the current hotfix level.
  • For majors up to 25, only one build per minor is kept. A pinned exact build number can disappear.

Derive the version from your app

With * as version, AL-Go uses your applicationDependency: the highest application version across your app.json files, but at least the AL-Go setting applicationDependency (default 18.0.0.0).

Settingapp.json applicationResolves to 
//*/w1/first28.0.0.028.0.46665.52632oldest build that satisfies your app
//*/de/latest28.0.0.028.0.46665.56311newest build of 28.0, not 28.5
//*/us/latest28.5.0.028.5.54151.56322newest build of 28.5
(not set) + "updateDependencies": true28.0.0.028.0.46665.52632oldest build ≥ your app’s minimum, falls back to insider builds if there is none

* stays within the major.minor of your applicationDependency and only works with first or latest.

Test the next release

SettingResolves to 
////nextminor29.1.56191.0next minor (insider build)
////nextmajor30.0.56306.0next major (insider build)
///dk/nextmajor30.0.56306.0same, explicit country
bcinsider/Sandbox/30.0/de/latest30.0.56306.0a specific insider version
  • nextminor and nextmajor read from the bcinsider storage account. AL-Go accepts the insider EULA for you.
  • From minor .5 on, nextminor returns the next major, since there is no .6 for sandboxes.
  • nextmajor is empty until Microsoft publishes the first insider build of the next major.
  • The PTE template ships with .github/Test Next Minor.settings.json and .github/Test Next Major.settings.json, which set exactly these values for the matching workflows. Workflow-specific settings files override the project settings.

On-premises

SettingResolves to 
/OnPrem//w1/latest29.0.54011.55407newest on-premises release
/OnPrem/28/de/latest28.6.55443.0newest cumulative update of 28
/OnPrem//dk/weekly29.0.54011.55407daily/weekly are treated as latest
/OnPrem//dech/latest14.53.50097.0German-language Switzerland, ends with 14
  • On-premises has exactly one build per cumulative update, and minors go up to .6.
  • The language variants dech, frbe, frca, frch, itch and nlbe exist only on-premises and only up to 14. na ends with 16.
  • us has far fewer on-premises builds than w1. Everything before 11 and majors 13, 15 and 16 are missing, so /OnPrem/16/us/latest finds nothing while /OnPrem/16/w1/latest returns 16.19.35126.0.

Doesn’t work

SettingError
//28.5/w1/weeklyYou cannot specify version, before or after when selecting Daily or Weekly build
bcinsider///de/nextmajorYou cannot specify storageAccount, type=OnPrem or version when selecting NextMajor release
//*/us/closestVersion can only be '*' if select is first or latest.
//28.5/dk/closestVersion number must be in the format 1.2.3.4 when you want to get the closest artifact Url
/OnPrem/16/us/latestNo artifacts found for the artifact setting
bcpublicpreview/Sandbox//w1/latestthe storage account is empty today

daily and weekly can’t be combined with a version. To stay on an older release, use latest with the version instead.

Reference

Storage accounts

ValueContains
(empty), bcartifactsreleased versions, sandbox and on-premises
bcinsiderpreview builds, sandbox only
bcpublicpreviewnothing at the moment

Types: Sandbox, OnPrem

Countries

TypeCountries
Sandboxat, au, be, bg, br, ca, ch, co, cz, de, dk, ee, es, fi, fr, gb, gr, hk, hr, hu, ie, in, is, it, jp, kr, lt, lv, mx, nl, no, nz, pe, ph, pl, pt, ro, rs, se, si, sk, th, tr, tw, ua, us, vn, w1
On-premisesat, au, be, ca, ch, cz, de, dk, es, fi, fr, gb, in, is, it, mx, nl, no, nz, ru, se, us, w1; up to 16: na; up to 14: dech, frbe, frca, frch, itch, nlbe

For sandboxes, countries without their own localization are mapped automatically, for example ae, lu or my to w1, and fo or gl to dk.

Select

ValueReturnsRestrictions
latestnewest matchdefault
firstoldest match 
allall matches, AL-Go uses the first 
closestfirst build ≥ version within its major.minorversion must be x.x.x.x
secondtolastmajornewest build of the previous majorno version
currentcurrent sandbox releaseno storage account, version or OnPrem
nextminornext minor insider buildno storage account, version or OnPrem
nextmajornext major insider buildno storage account, version or OnPrem
dailynewest build before todayno version; latest for OnPrem
weeklynewest build before last Sundayno version; latest for OnPrem

Instead of a search value, artifact also accepts a full artifact URL starting with https://.

This post is licensed under CC BY 4.0 by the author.