Guidelines for Partners
In Dynamics NAV 24 (Business Central), Microsoft announced that Codeunit NoSeriesManagement would be removed. Starting from this version, developers should transition to using the newer “No. Series” and “No. Series – Batch” system modules.
In NAV 27, the NoSeriesManagement codeunit is already fully obsolete.
This article explains the Dynamics NAV NoSeriesManagement migration process and what changes developers must apply when upgrading to newer versions.
Functions that keep the same name (Dynamics NAV NoSeriesManagement migration)
TestManual:
Old:
New:

Code changes:
In the old version, TestManual had two events: OnBeforeTestManual (with the IsHandled pattern) and OnAfterTestManual.
These events have been removed in the new number-series system, so it is no longer possible to customize or override this logic through those events. Keep this in mind when upgrading, as modifications to TestManual can no longer be made.
Functions that changed names but did not have any significant code changes
TestSeries to TestAreRelated:
Old:
New:

SetSeries to GetNextNo
Old:

New:

TryGetNextNo to PeekNextNo
Old:

New:

Functions that have a different name but require no code changes
ManualNoAllowed to IsManual:
Old:

New:

Code changes:
No changes were made that affect users. In the new versions, an additional check was added to ensure that the code being validated is not empty.
TestManualWithDocumentNo to TestManual
Old:

New:
![]()
Code changes:
No changes were made that affect users. In the new versions, one function was introduced that returns different outputs depending on the variables passed to it. In the old version, this behavior was handled by two separate procedures.
SelectSeries to LookupRelatedNoSeries
Old:

New:

Code changes:
No big changes were made in the code. In SelectSeries, there were a few events — OnBeforeSelectSeries with IsHandled and OnSelectSeriesOnBeforePageRunModal — which made customization easy.
In LookupRelatedNoSeries, the event no longer exists, so customization is no longer possible in this function
Functions that have different names and require changes in the code
InitSeries to AreRelated and GetNextNo
Old:

New:

Code changes:
In InitSeries, the old code performed several tasks: it checked whether a related series existed, and if it was not related, it called a function to get a new number in the new series. The old version also had two events: OnBeforeInitSeries (with the IsHandled option) and OnAfterInitSeries.
In the new version:
- You need to check for related series manually using the AreRelated function.
- “If you want to get a new number in the new series, you must call GetNextNo yourself.
- The events have been removed, so it is no longer possible to customize the logic in AreRelated using event subscribers.
SetDefaultSeries to IsAutomatic
Old:
![]()
New:

Code changes:
In the old version, the code checked whether the NoSeries code was not empty and then retrieved the record and assigned it to the variable. It also had the OnBeforeSetDefaultSeries event with IsHandled, allowing for customization.
In the new IsAutomatic code, it only checks whether the series exists and returns a Boolean instead of modifying the variable, so you need to handle the assignment yourself. The function also no longer has an event, which means customization is no longer possible.
Conclusion for the Dynamics NAV NoSeriesManagement migration
When planning your Dynamics NAV NoSeriesManagement migration, make sure to review your customizations and remove any dependencies on old events. The move from NoSeriesManagement to the new “No. Series” and “No. Series – Batch” modules bring some structural changes, but it doesn’t really affect how things work for users. Most functions stay the same or just get new names while keeping the same behavior. The biggest difference is that many events were removed, especially the OnBefore/OnAfter events with IsHandled, which used to make customization easy. Because of this, developers now must handle some logic themselves, like checking related series, setting default series, or initializing number series.
Overall, the new No. Series system is cleaner but offers fewer customization options. When upgrading, developers should review any areas that depend on the old events and adjust their code to make sure number-series logic still works correctly with the new system.