Breaking Changes
This page contains lists of breaking changes in the current and previous releases. The lists are work in progress and will be updated as new issues are discovered.
Click the heading(s) below to expand and collapse.
In LS Central version 28.0, the POS Transaction codeunit was refactored as part of our ongoing effort to improve the architecture of the POS transaction framework.
As part of this work, many integration events were updated, resulting in breaking changes.
To support the transition:
- The affected events have been marked as obsolete.
- Updated versions of the events have been introduced.
- Parameters previously passed directly are now handled through the POS Transaction Context record, which centralizes transaction state management.
- A comprehensive list of affected events is included in an Excel spreadsheet you can download from the LS Retail Portal. See: Excel file on the portal
See announcement: https://lsretail.cmail20.com/t/j-e-ydidlrtk-l-n/
Tip and Surcharge customization access points changed in card payment functionality
- All functionality around calculations and creation of income/expense lines for tips and/or surcharge amounts around card payments was removed from POS EFT Utility functionality to it's own implementation.
- All functions within the POS EFT Utility implementation now returns an error if used but the IEFTUtility interface remains as it was, but the POS will not call these functions anymore:
- AllwaysIncludeTips
- AskToIncludeTips
- GetTip
- ProcessServiceChargeAmount
- ProcessServiceChargeAmount
- SetSurcharge
- If functions ProcessServiceChargeAmount or ProcessServiceChargeAmount were implemented in a custom implementation then adding a new enum value and implementation to LSC Card Tips Line Creation is needed where these functions are now implemented.
- The option to select to use the customization instead of the default functionality is called Tip Line Creation Method and is on the Terminal card in the EFT fast tab.
- If SetSurcharge was only implemented then event OnBeforeProcessSurchargeAmount should be implemented where the Surcharge amount can be set for the rest of the Service charge functionality.
- AllwaysIncludeTips, AskToIncludeTips functions have been replaced by the LSC Tips Handling enum which can be set on the POS Terminal Card.
-
GetTip was deprecated and POS Card Entry.Tip value should be used to view/retrieve the tip amount that was returned by the Payment terminal.
The default implementation of the LSC Card Tips Line Creation also has events to give access points for customizations if a new enum implementation is not required.
There was a breaking change in Business Central 25.3 upon which LS Central 25.2 is built. Before you upgrade to BC 25.3, please make sure to upgrade LS Central to LSC 25.0.25, 25.1.13, or 25.2.0 first.
BC event OnBeforeGetDatabaseTableTriggerSetup was removed in Business Central 25.3.
Deprecation of Windows Authentication for web services in LS Central version 22.0
Windows authentication is currently one of the authentication methods used for web service authentication in LS Central. The Windows authentication is based on Business Central Windows Authentication code. The Business Central Windows authentication code is marked as OnPrem and can therefore not be used by applications where Target=Cloud in the app.json file. Setting Target=Cloud is a requirement to make apps Universal Code Compliant.
Therefore, the option to use Windows authentication for web services will be removed in LS Central version 22.0. This does not effect SaaS customers as the only authentication method supported in SaaS is Oauth authentication. On-premises customers must switch from Windows authentication to either Basic authentication (Web Service Access Key) or OAuth authentication before upgrading to version 22.0.
Upgrading to the new Comments module
If you have been using dining reservations and Bookings, you must go to Comment Setup and follow the steps required to move existing comments to the new structure. The potential size of the database tables involved makes the upgrade process not feasible for this purpose. The upgrade process takes care of moving existing Hotels comments to the new structure.
Changes to primary keys in essential tables in Hotels
Changes to primary keys affect the following tables, a period (.) was added after the table name:
| Table | Replaced by |
|---|---|
| LSCHT Detailed Rev Entry | LSCHT Detailed Rev Entry. |
| LSCHT Hotel Res. Entry | LSCHT Hotel Res. Entry. |
| LSCHT Res. Payment Entry | LSCHT Res. Payment Entry. |
| LSCHT Room Blocking Entry | LSCHT Room Blocking Entry. |
| LSCHT Room Type Block | LSCHT Room Type Block. |
| LSCHT Detailed Rev Entry Log | LSCHT Detailed Rev Entry Log. |
| LSCHT Reservation History | LSCHT Reservation History. |
| LSCHT Hotel Reservation Log | LSCHT Hotel Reservation Log. |
To support localization of VAT %, the system now uses temp Sales Header (Document Type Quote) and Sales Line to get the Detailed Revenue Entry VAT%.
Obsolete code marked with tag 19.0 and below removed
Our solution gets bigger with every release, but we intend to clean up by removing obsolete code in major releases as soon as the code has been marked obsolete for at least a year.
In release 21.0 we removed constructs like procedures and events, but there are no breaking schema changes yet, like Tables and Table fields.
Recommended action: Check if you are using a feature that has been marked obsolete for more than a year. The warning should state the reason and the alternative that is intended to be used.
OnPrem-only procedures are now obsolete
All procedures and objects that are marked #if _IS_SAAS_, previously marked [Scope('OnPrem')], will become internal.
From 21.0 these procedures and objects will be marked Obsolete for OnPrem extensions, until they will finally become internal in 22.0.
If your extension is using any of these, they will now get a warning.
Recommended action: If you have an OnPrem extension, check if there are any warnings. Usually, there are alternative procedures available, but partners can also request that a list of these is made public through the same flow as event requests.
Autotest object names now have an LSC prefix
In version 17.4 we added an LSC prefix to LS Central, but this was not done for our Autotests extension, which we include in our releases.
From version 21.0, autotests will have a prefix as well.
Recommended action: If you are using or extending the LS Central Autotests extension, be aware of this change.
Integration event triggers are now internal/local
In rare cases, it has been technically possible to trigger some of our events from an extension.
These cases are usually an oversight, since the internal/local keyword was missing for the IntegrationEvents so they became public, by default.
This has prevented us from adding new arguments to existing events, and therefore unnecessarily forcing new versions for events where a breaking change would not have been needed.
Recommended action: This should not require any work. There is a chance that somewhere an upgrade might fail, if it is calling an event function, for example in POS Transaction Event, which usually has no effect. Instead, the events are intended to be subscribed to, with an EventSubscriber.
Click here for a printable version of this notification.
Breaking changes in release 21.0
Obsolete code marked with tag 19.0 and below removed
Our solution gets bigger with every release, but we intend to clean up by removing obsolete code in major releases as soon as the code has been marked obsolete for at least a year.
In release 21.0 we removed constructs like procedures and events, but there are no breaking schema changes yet, like Tables and Table fields.
Recommended action: Check if you are using a feature that has been marked obsolete for more than a year. The warning should state the reason and the alternative that is intended to be used.
OnPrem-only procedures are now obsolete
All procedures and objects that are marked #if _IS_SAAS_, previously marked [Scope('OnPrem')], will become internal.
From 21.0 these procedures and objects will be marked Obsolete for OnPrem extensions, until they will finally become internal in 22.0.
If your extension is using any of these, they will now get a warning.
Recommended action: If you have an OnPrem extension, check if there are any warnings. Usually, there are alternative procedures available, but partners can also request that a list of these is made public through the same flow as event requests.
Autotest object names now have an LSC prefix
In version 17.4 we added an LSC prefix to LS Central, but this was not done for our Autotests extension, which we include in our releases.
In version 21.0, autotests will have a prefix as well.
Recommended action: If you are using or extending the LS Central Autotests extension, be aware of this change.
Integration event triggers are now internal/local
In rare cases, it has been technically possible to trigger some of our events from an extension.
These cases are usually an oversight, since the internal/local keyword was missing for the IntegrationEvent so they become public, by default.
This has prevented us from adding new arguments to existing events, and therefore unnecessarily forcing new versions for events where a breaking change would not have been needed.
Recommended action: This should not require any work. There is a chance that somewhere an upgrade might fail, if it is calling an event function, for example in POS Transaction Event, which usually has no effect. Instead, the events are intended to be subscribed to, with an EventSubscriber.
Mobile Phone No. field in Customer extension table renamed to LSC Mobile Phone No. and obsoleted
There is a new field in Business Central Base app Customer table named Mobile Phone No. The LS Central app Customer extension table had a field with exactly the same name. The purpose of the field is the same in both tables, to capture the customer mobile phone number. Because a table and extension tables cannot have identical names, the field in the LS Central Customer table has been renamed to LSC Mobile Phone No. The upgrade codeunit that comes with LS Central 17.0 migrates values from the LS Central Customer Extension table Mobile Phone No. field to the BC Base app Customer table Mobile Phone No. field. The Mobile Phone No. in the LS Central Customer Extension table has been marked as ObsoleteState = Pending.
Statement field in Gen Journal Line extension table renamed to LSC Statement
The field Statement in the LS Central Gen Journal Line extension table has been renamed to LSC Statement, because in one of the Business Central localizations, the Gen Journal Line in the base app has a field named Statement.