Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 73 Next »


Who is affected?


Breaking changes in MOB5.14 affects specifically environments with customizations to ReferenceData using the events originally introduced in MOB5.00.
The database schema is still backwards compatible.

If you have no customizations to ReferenceData you will not be affected and should have no issues upgrading.


What has changed?

Version MOB5.14 includes refactored functionality for creating ReferenceData Headers and -Steps (headerConfigurations and registrationCollectorConfigurations).
We are introducing a new syntax that will allow our partners to work with ReferenceData without knowing or understanding the specifics of the underlying Xml-response.

Unfortunately those changes are not backwards compatible and may break certain existing customizations to Mobile WMS implemented prior to MOB5.14:

  • Table "MOB RefD Header Config Element" is marked REMOVED since MOB5.14.
  • Existing functions from "MOB RefD Header Config Element" is moved to new table "MOB HeaderField Element"
  • Existing functions "CreateConfigurationKey(...)" renamed to "InitConfigurationKey(...)
  • Existing functions "AddField_..." and "AndList_..." renamed to "Create_...Field_..."

  • Also, the event previously introduced in MOB5.00 OnGetReferenceData_OnAfterCreateHeaderConfigurations was removed and replaced by two new events:

          OnGetReferenceData_OnAddHeaderConfigurations
          OnGetReferenceData_OnAfterAddHeaderField

When will I need to update my existing customizations?

When installed on-premise:

  • The next time you intends to upgrade the standard Mobile WMS al extension to a version MOB5.14 (or never) you may need to rework your own existing customizations to work with the syntax changes.
  • As long as your existing Mobile WMS al extension remains compatible with the underlying Business Central base application you are not forced to update.

For cloud environments: 

  • In general you manually controls when an extension is updated in an existing environment (by uninstalling/reinstalling/upgrading the extension).
  • However, during next major version deployment you will likely be auto-updated to latest Mobile WMS al extension version (April, October).
  • It is recommended to update your Mobile WMS al extension to latest version prior to next major launch to avoid issues during that upgrade process.

How to rewrite your existing customization

Rewrite your existng OnGetReferenceData_OnAfterCreateHeaderConfigurations eventsubscriber to use OnGetReferenceData_OnAddHeaderConfigurations instead.

All references to Record "MOB RefD HeaderConfig Element" should now be Record "MOB HeaderField Element".
Existing calls to helper methods on this input parameter table must be changed to follow new naming conventions (see examples below).

Example - existing code from MOB5.00 - MOB5.13

    [EventSubscriber(ObjectType::CodeunitCodeunit::"MOB WMS Reference Data", 'OnGetReferenceData_OnAfterCreateHeaderConfigurations''', true, true)]

    local procedure OnGetReferenceData_OnAfterCreateHeaderConfigurations(var _HeaderConfigurationElement: Record "MOB RefD HeaderConfig Element")
    begin
        with _HeaderConfigurationElement do begin
            Create('CustomPrintLabel')// New ConfigurationKey


            // ItemNumber
            Add_TextValue(
                1//id
                'ItemNumber'//name
                CopyStr(MobWmsLanguage.GetMessage('ITEM'':'1100)//label
                100//label width
                true, //clear on clear
                true, //accept barcode
                30//length
                false, //optional
                'ItemSearch'//search type
                CopyStr(MobBaseToolbox.GetItemNoGS1Ai()130)//ean GS1Ai
                false)//locked

                // Lot Number
            Add_TextValue(
                2//id
                'LotNumber'//name
                CopyStr(MobWmsLanguage.GetMessage('LOT_NO_LABEL'':'1100)//label
                100//label width
                true, //clear on clear
                true, //accept barcode
                30//length
                false, //optional
                ''//search type
                CopyStr(MobBaseToolbox.GetLotNoGS1Ai()130)//ean GS1Ai
                false)//locked
        end;
    end;


Example 1 - new code (1:1 conversion)

   [EventSubscriber(ObjectType::CodeunitCodeunit::"MOB WMS Reference Data", 'OnGetReferenceData_OnAddHeaderConfigurations''', true, true)]
    local procedure My01OnGetReferenceData_OnAddHeaderConfigurations(var _HeaderFields: Record "MOB HeaderField Element")
    var
        MobToolbox: Codeunit "MOB Toolbox";
        MobWmsLanguage: Codeunit "MOB WMS Language";
    begin
        with _HeaderFields do begin
            InitConfigurationKey('CustomPrintLabel')// New ConfigurationKey


            // ItemNumber
            Create_TextField(1'ItemNumber');
            Set_label(MobWmsLanguage.GetMessage('ITEM'':');
            Set_clearOnClear(true);
            Set_acceptBarcode(true);
            Set_length(20);
            Set_searchType('ItemSearch');
            Set_eanAi(MobToolbox.GetItemNoGS1Ai());
            // Default values no longer needs to be set:
            // Set_labelWidth(100);
            // Set_optional(false);
            // Set_locked(false);

            // LotNumber
            Create_TextField(2'LotNumber');
            Set_label(MobWmsLanguage.GetMessage('LOT_NO_LABEL'':');
            Set_clearOnClear(true);
            Set_acceptBarcode(true);
            Set_length(20);
            Set_eanAi(MobToolbox.GetLotNoGS1Ai());
            // Default values no longer needs to be set:
            // Set_searchType('');
        end;
    end;



Example 2 - new code using templates - then setting only properties different from the template (if any)

    [EventSubscriber(ObjectType::CodeunitCodeunit::"MOB WMS Reference Data", 'OnGetReferenceData_OnAddHeaderConfigurations''', true, true)]
    local procedure My02OnGetReferenceData_OnAddHeaderConfigurations(var _HeaderFields: Record "MOB HeaderField Element")
    begin
        with _HeaderFields do begin
            InitConfigurationKey('CustomPrintLabel')// New ConfigurationKey


            // ItemNumber by template
            Create_TextField_ItemNumber(1);
            Set_length(20);

            // LotNumber by template
            Create_TextField_LotNumber(2);
            Set_length(20);
        end;
    end;



  • No labels