LS Central 29.0 Release Notes

About This Release

Released - October 20, 2026

This version is built on Microsoft Dynamics 365 Business Central 2026, release wave 2.

For more details about this BC major version see: https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/whatsnew/whatsnew-update-29-0

Quick links:

Important Notices! 

New or Enhanced Features

Fixed Issues

Hotfixes

Important Notices! 

The LS Central release plan

  • We will release new features for LS Central in two major release waves every year – scheduled for April and October, coinciding with the general availability of Business Central Release Wave 1 & 2. Our partners will be granted access to a feature-complete release candidate five to six weeks ahead of time.
  • We will continue to release new events and hotfixes on a weekly basis and cumulative updates as needed.

  • Minor versions will be made available when considered to be needed by our Development team.

  • In SaaS, we will support the last minor version of the current major version and two back. With this release of LS Central 29.0 we will support 27.0 until 29.0, other and previous versions will not be supported but an upgrade path will be maintained for versions as Microsoft does (see https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/upgrade/upgrade-paths).

We expect to follow this process for the 2026 wave 2 version, with an official release coinciding with the release of Business Central 2026 wave 2 from Microsoft.

Disclaimer: In alignment with Microsoft's guidance and best practices, we will deprecate obsolete tables and fields. These will be marked as obsolete in version 29 and permanently removed in version 30. Please ensure that any dependencies are updated accordingly before the removal takes effect.

Note: We want to highlight our new Online Help agent. Compass. Look for the icon in the top right corner.

 

New or Enhanced Features

Links to quickly navigate this section:

LS Central POS Pharmacies
Replenishment Hardware Station eCommerce
Bookings KDS and Web KDS Fashion
Hotels Restaurants Self-Checkout Connector
POS Commands Label Management for LS Central Telemetry Framework for LS Retail Solutions

LS Central

Backoffice

API pages and queries

This version of LS Central introduces a number of API pages. The aim is to replace all SOAP webservices with API pages or queries. This work will continue and the remaining APIs will be added in minor versions and is expected to be finalized in LS Central 30.0

Note: The release includes an Open API Document that can be opened in clients such as Swagger, Postman, Scalar, etc. The APIs will also be listed in the online help

API: asnDocuments- replace GetASNDocumentList / GetASNDocumentLines / SendASNScannedLines

Read advanced shipping notice documents and their lines through a new asnDocuments endpoint, and submit scanned receiving lines with its sub mitScannedLines action — together replacing the legacy GetASNDocumentList, GetASNDocumentLines, and SendASNScannedLines services.

Scan submission behaves exactly as before, including barcode resolution, duplic ate-scan detection, and over-receipt handling. Document lines now also carry the vendor trust level from their header. The legacy services stay available and unchanged for an 18-month coexistence window.

API: spgProfiles - replace SPGProfileGet / SecurityCheckProfile

You can now read ScanPayGo profile data - including linked tenders and feature flags - through new REST API endpoints, and resolve the right profile for a store the same way the app already does internally. A related endpoint for logging ScanPayGo security-check results now also accepts new entries, not just reads.

API: kots - replace GetKotStatus

Read kitchen order ticket (KOT) status and line details — sent, started, finished, served — through a new kots endpoint in the LS Central API.

API: mobilePosProfiles - replace MobileGetProfiles

Read mobile POS profile attributes — the private, yes/no club attributes used to personalize the point of sale experience — through a new mobilePosProfiles end point in the LS Central API.

Filter by attribute code or club code to get exactly the profiles you need.

API: salesShipments - replace SalesShipmentListGet / SalesShipmentUpdate

Read sales shipments and update their tracking details through a new salesShipments endpoint, replacing the legacy SalesShipmentListGet and SalesShipmentUpdate services. Everything is read-only except the shipping agent code, shipping agent service code, and package tracking number — the same three fields the legacy update operation allowed. Filter by customer order to pull the shipments for a single order. Both legacy services stay available and unchanged for an 18-month coexistence window.

API: shippingAgents - replace COShipAgentsInfoGet

You can now read each store's default shipping agent and service assignment through the LS Central API call. A new action also resolves the effective default for a store, falling back to the all-stores default when a store doesn't have one of its own — the same logic already used at the POS.

API: vouchers - replace GetVoucherEntries(V2) / SendVoucherEntry / GetDataEntryBalanceV2

LS Central now exposes voucher entry lookup and creation as a modern OData v4 API, replacing three legacy SOAP operations:

  1. GetVoucherEntries
  2. GetVoucherEntriesV2, and
  3. SendVoucherEntry.

Two new read/write endpoints are available under the existing retailCore API group (v1.0), vouchers -- GET and POST.

  • Filter by voucherNo to read voucher entries with the same field coverage as the legacy read operation.
  • POST creates a new voucher entry with the same persisted result as the legacy write operation, including marking the linked POS Data Entry as Applied once its remaining balance reaches zero.

voucherPinLookup -- GET only. Replicates the PIN-protected lookup behaviour of GetVoucherEntriesV2 for voucher types that require a PIN: filter by voucherNo and pin together; an incorrect or missing PIN, or a voucher type that does not use a PIN, returns the appropriate result without ever revealing whether the mismatch was due to the PIN or the voucher itself.

 

Note on the plain vouchers GET: unlike the legacy GetVoucherEntriesV2 call, the plain vouchers entity does not itself enforce a PIN -- access is controlled through standard permission-set gating instead, consistent with every other read API in this release. Callers that need PIN-protected access should use voucherPinLookup instead.

API: validationPeriods - replace GetValidationPeriod

You can now read validation period setup data through a new REST API endpoint, validationPeriods. It returns the same records as the legacy GetValidationPeriod service, so existing time-of-day and date-range validation rules used for offers and discounts are available to integrations without any new setup.

API: vatPostingSetups - replace GetVATPostingSetup

Read VAT posting setup data — VAT percentages, calculation types, and sales/purchase posting accounts by VAT business and product posting group — through a new vatPostingSetups endpoint in the LS Central API.

API: inventories - replace GetInventoryStatus (+ GetInventoryLookup / GetInventoryMultiple(V2) / GetItemInventory / IMDocumentPost)

Read and replicate inventory data through three new endpoints in the LS Central API: inventories for stock levels and delta replication, itemInventories for sourcing-location lookups, and inventoryDocuments for posting inventory management documents. These sit alongside the existing inventory web services, so nothing changes for clients that don't switch over.

API: stores - replace GetStores / GetStoreBuffer / GetStoreOpeningHours / GetStoreImage

Read store data and opening hours through a new API endpoint, or use the getDetail action to pull the same full store details you get today.

New retailCalendars and calendarGroupLinkings endpoints also let you browse any retail calendar directly and see exactly which store uses which shared calendar. These sit alongside the existing store web services, so nothing changes for clients that do not switch over.

API: hierarchies - replace GetHierarchy / GetHierarchyNode / GetHierarchyDeal / GetHierarchyDealLine / GetHierarchyLeaf / GetHierarchyV2(ValSched)

You can now pull your hierarchies — the item, content, and deal trees you use to organize your online store or app — through a new OData v4 API, alongside the hierarchy web service you already use.

  • Query hierarchy details, nodes, deals, and images directly, or fetch a store’s whole hierarchy tree in one call.
  • The existing hierarchy web service keeps working exactly as before, so you can move to the new API on your own schedule.

API: offers - replace GetOfferHTML

You can now read offer HTML content through a new OData v4 endpoint under the retailCore API group (v1.0), replacing the legacy GetOfferHTML SOAP/OData service.

  • The offers endpoint exposes offer number, language, URL, and HTML content (streamed as a BLOB) with full parity to the legacy service.
  • This gives integrations a modern alternative to legacy SOAP services for pulling localized offer HTML.
  • The endpoint is read-only, so you keep managing offer content in the LS Central back office.

API: customers - replace GetCustomer / GetCustomerInvoices / GetCustomerCard

Added a read-only OData V4 API for Customer master data (GET /api/lsRetail/retailCore/v1.0/companies({id})/customers), filterable by No., Name, E-Mail, and Phone No. Replaces the legacy generic SOAP table read for Unified Commerce / ecommerce integrations. Write operations are not yet supported (Phase 1, read-only).

API: items - replace GetItem (+ GetItemWithBarcode, GetItemCard, ItemSalesInfo, GetItemHTML)

You can now pull item HTML content, item variants, extended variant values, variant registrations, and barcode-based item lookups through new read-only OData v4 endpoints. Each endpoint requires a distribution store filter, so results always reflect what’s actually available at that store.

API: publishedOfferItems

LS Central now exposes published-offer item lookup as a modern OData v4 API, replacing LS Omnis bespoke SOAP request LOAD_PUBLISHED_OFFER_ITEMS.

  • The new read-only endpoint publishedOfferItems is available under the existing retailCore API group (v1.0), filtered by publishedOfferNo.
  • The response reflects the same Discount Type resolution logic as the legacy call (Offer, Periodic Discount, and Coupon families), and totalNoOfEntries always reflects the full unfiltered item count, even when the result is truncated with the standard OData $top parameter.

API: mobilePlu / inventoryTerminalStore

LS Central now exposes two additional read-only OData v4 entities under the existing retailCore API group (v1.0), replacing legacy LS Omni lookups: mobilePlu (mobile PLU catalog pages per store) and inventoryTerminalStore (POS terminal to store mapping, including the store name).

API: validationSchedules

LS Central now exposes store validation-schedule resolution as a modern OData v4 API, replacing a legacy SOAP integration path used internally by LS Omni. Four new read-only endpoints are available under the existing retailCore API group (v1.0):

  1. hierarchyDates,
  2. validationSchedules (with expandable validationScheduleLines)
  3. dateSchedules (with dateScheduleLines)
  4. and timeSchedules (with timeScheduleLines).

ValidationScheduleLines additionally nests dateSchedule and timeSchedule directly, so a client can resolve the full four-level graph in a single call instead of chaining three separate requests:

  • $expand=validationScheduleLines($expand=dateSchedules($expand=dateScheduleLines),timeSchedules($expand=timeScheduleLines)).

API: spgSecurityCheckLogs / mobileLicenseRegistrations / posTerminals

You can now read POS terminal setup, feature flag settings, mobile app license registrations, and security check logs through the LS Central API. This adds four new read-only endpoints alongside the existing ones, giving integrations a consistent, modern way to pull this data instead of the older, generic backend lookup.

Action required by partners:

  • Note: the feature-flag endpoint returns rows as configured (terminal-specific, store-level, or global) without resolving fallback precedence — a consumer that needs the effective flag for this terminal must query and merge tiers themselves (terminal-specific overrides store-level overrides global).

API: currencies / shippingAgents / items / itemVariantRegistrations

You can now read item, currency, shipping agent, and item variant registration data through the LS Central API. This adds four new read-only endpoints alongside the existing product group and member endpoints, giving integrations a consistent, modern way to pull this core reference data instead of the older, generic backend lookup.

API: memberAttributes / memberDevices

You can now pull member attribute definitions and registered member devices straight from the LS Central API, alongside the other member data endpoints. This gives integrations reading loyalty profile data — a member's custom attributes or registered self-service devices — a modern OData source instead of the older, generic backend lookup.

Add Retail Product Group, Item Category, and Retail Image Link API endpoints

You can now pull retail product group data through a new API instead of the old generic SOAP table read. Look up a product group by its code or item category, and expand the result to see every item assigned to it.

A companion API returns item category codes and descriptions, with its own expandable link to the product groups in that category.

A separate, generic image-links API lets any integration retrieve the images linked to a product group — or any other record that has linked images.

CustomerGet

Added a read-only OData V4 API for Customer master data (GET /api/lsRetail/retailCore/v1.0/companies({id})/customers), filterable by No., Name, E-Mail, and Phone No. Replaces the legacy generic SOAP table read for Unified Commerce / ecommerce integrations. Write operations are not yet supported (Phase 1, read-only).

Vendors - replace GetVendor / GetVendorItem / GetVendorCard

Read vendor data through three new read-only endpoints — vendors, vendorItems, and a vendor card lookup — replacing the legacy GetVendor, GetVendorItem, and GetVendorCard services. vendorItems returns every item-vendor link rather than just each item's primary vendor, so expect more rows than the legacy service returned, and use the new distributed-to-store filter to narrow results to a single store's distribution. The legacy services stay available and unchanged for an 18-month coexistence window, so you can move across when it suits you.

TenderTypes - replace GetTenderType

You can now read tender type configuration — cash, cards, checks, vouchers, and member points — through the new tenderTypes API. It returns the same data as the GetTenderType service, including POS behavior, rounding and amount limits, and posting accounts, so you can move your integrations over whenever it suits you.

Build LSC Member Point Entry

You can now read the member loyalty point ledger — point sales, redemptions, expiries, adjustments, and transfers, with their source document, point and remaining-point amounts, expiration date, and the club, scheme, store, and POS terminal they came from — through a new OData v4 endpoint.

  • This gives integrations a modern alternative to the legacy SOAP web service for pulling point entries. The endpoint is read-only; point entries are still created by the LS Central point posting routines.
  • The three enum fields come back both by name and as ordinal companions (sourceTypeOrdinal, entryTypeOrdinal, and pointTypeOrdinal), so an integration moving off SOAP can keep the numeric mapping it already uses. Filter and sort on the named field — the ordinal companions support neither.
  • The ledger grows without bound, so scope every request, normally by card or account number.

Build LSC Member Scheme

You can now read Member Scheme setup — card numbering, discount and price group defaults, club linkage, and upgrade or downgrade thresholds — through a new OData v4 endpoint. This gives integrations a modern, documented alternative to the legacy SOAP web service for pulling member scheme data.

Build Currency Exchange Rate

You can now read currency exchange rates — currency code, starting date, exchange and adjustment rate amounts, relational currency and its rate amounts, the fixed-rate setting, and the LS Central POS rate amounts — through a new OData v4 endpoint. Filter by currency code to narrow the result.

  • This gives integrations a modern alternative to the legacy SOAP web service for pulling exchange rate data.
  • The endpoint is read-only, so you keep maintaining exchange rates in the LS Central back office.

Build Data Translation Language API Page

You can now read the languages set up for LS Central data translation — the language code and its name — through a new OData v4 endpoint.

  • This gives integrations a modern alternative to the legacy SOAP web service for pulling the data translation language list.
  • The endpoint is read-only, so you keep maintaining translation languages in the LS Central back office.

API: wishLists - replace WishListGet / WishListCreate / WishListDeleteByID / WishListItemModify / WishListLinking / WishListModifyQtyUsed

Wish lists are now available as a modern REST API (GET/POST/DELETE /api/lsRetail/member/v1.0/wishLists, plus itemModify/linking/modifyQtyUsed actions), alongside the existing SOAP web services for a minimum 18-month transition period.

API: returnPolicies - replace GetReturnPolicy

You can now read return policy rules — whether refunds are allowed, required manager privileges, the allowed refund period, and the messages shown to customers — through a new OData v4 endpoint, scoped by store, item category, product group, item, or variant, just like the existing return policy setup.

Discounts - replace GetDiscount (+ GetCrossSelling)

Read periodic discount setup — multibuy, discount offers, total discounts, and tender type discounts — through new read-only discounts and discountLines endpoints, replacing the legacy GetDiscount service.

  • Offer headers carry the status, type, price group, validation period, and validity dates; lines carry per-item pricing, discount amounts, and the quantity thresholds that trigger an offer. GetDiscount stays available and unchanged for an 18-month coexistence window.
  • Look up related selling items through a new read-only crossSellingItems endpoint, replacing the legacy GetCrossSelling service.
    • For each item and store, you get all linked cross-selling recommendations — useful for building personalized product suggestions in member-facing channels.
    • The GetCrossSelling service stays available and unchanged for an 18-month coexistence window.

Card API lookup-parameter parity: itemCardLines, customerCardLines, vendorCardLines missing legacy params

You can now look up an item card by barcode, not just by item number. You can also narrow an item card lookup to a specific variant, scope stock figures to a single store or location, and switch to a matrix view that lists sibling variants — like other sizes of the same color — with their own stock levels.

  • Customer and vendor card lookups gain a matching option: you can now ask for confirmation that a customer or vendor exists without pulling back any of their other details.
  • These three lookups replace older web services partners relied on for point-of-sale and integration scenarios.
    • The older services supported these same lookup options; without them, the newer lookups weren't a complete replacement. This closes that gap.

Action required by partners:

  • None. These are additional, optional lookup options on lookups you may already use. If you only look items, customers, or vendors up by number today, nothing changes for you.

API page to replace StoreInvTransSendV2 SOAP webservice

Submit store inventory transactions through two new endpoints, replacing the legacy StoreInvTransSendV2 service

  • Post lines to storeInventoryLines one at a time or several at once in a single batch request, then read storeInventoryWorksheets and call its completeTransaction action to finish the worksheet.
  • Line processing matches the legacy service, and when a batch partly fails you get a result per line.
  • StoreInvTransSendV2 stays available and unchanged for an 18-month coexistence window.

Retail Receiving/Picking

Store staff can now see the vendor's order number and enter the vendor's shipment number on the Retail Receiving page.

This helps when the store receives goods before the vendor invoice arrives. The Vendor Shipment No. field also shows on the Retail Posted Receiving page. When you receive a purchase order, the Vendor Invoice No. and Vendor Shipment No. you enter now also update the purchase order.

A store that receives goods usually has the vendor's delivery note, not an invoice. Staff can now record the delivery note number during receiving instead of waiting for an invoice number.

Action required by partners:

  • None. To show the fields, personalize the Retail Receiving page if it has been customized.

Periodic Discount Offers and Coupons

Discount Offer - No. Field Lookup

The custom No. field OnLookup in the discount offer Line was removed to restore the standard inline lookup dropdown.

Block or Cancel Issued Coupons - Store Coupons / Return Coupons

Previously, any coupon that was issued with a transaction on POS was not cancelled if the transaction was returned. This was fixed.

New Coupon Header enum- #698

The Coupon Header Affects field is now an extensible enum instead of an option field.

Field "Offer Type" in table "LSC Trans. Disc. Benefit Entry" changed from Option to Enum

Offer Type on transaction discount benefit entries is now an extensible enum, so extensions can add their own offer types. Existing values keep their numbers, and Mix&Match now reads 'Mix and Match'.

Coupon management: SetLoadFields + header caching + member-coupon-list filter event

  • Retrieving a member's coupon list is now faster, and there is a new integration event for tailoring which coupon entries are considered. GetMemberCouponList (in LSC Coupon Management) loads only the fields it needs and skips a redundant coupon-header read when consecutive coupon entries share the same coupon code.
  • A new event, OnGetMemberCouponListOnBeforeCouponEntryFindSet, lets extensions add filters to the coupon-entry query before it runs. Which coupons are returned is unchanged — this is a performance and extensibility change only.

Action required by partners:

  • None. Optionally, extensions can subscribe to the new OnGetMemberCouponListOnBeforeCouponEntryFindSet event to add filters to the member coupon query.

Statement

Enhancement Request for LSC Posted Statement Navigate Functionality

Previously, the Navigate functionality on LS Central Posted Statements identified related entries using the External Document No. field. The functionality was enhanced to use LSC Statement No. as the filtering criteria, aligning it with the existing statement lookup behavior and ensuring that all relevant entries related to the posted statement are consistently returned during navigation.

Statement posting failed when a posting exception covered non-inventory items

  • Previously, when a Posting Exception with Transfer Process Transfer was set up at Item Category or Retail Product Group level, and that category/group contained non-inventory items, statement posting failed with an error stating the item must be set up as inventory.
  • The system now skips the transfer step for non-inventory items.

BOM Aggregate for Statement

This new feature should not impact current customers, as the feature is disabled by default. To use the feature, enable Aggregate BOM at Statement Posting in the Retail Setup. And Prevent Negative Inventory must be off to avoid statement posting error if it hit negative balance.

  • When enabled, at the statement posting the system will skip the posting of the BOM and insert the records into a new table BOM Staging Lines.
  • Then the BOM Staging Lines records are processed by a LS Scheduler Job, that sums up the records and posts the "consumption" and adds the BOM item to inventory.

Ecom

OmniWrapper:OrderCreate - Performance improvements

Customer orders coming in through the Commerce Service now handle coupons faster and put less load on the database. When a web order carries coupons, LS Central takes fewer locks and reads less data while moving those coupons onto the resulting transaction.

Action required by partners:

  • None — the improvement applies automatically after you upgrade.

GetInventoryStatus improvements

Inventory replication to Commerce Service is now up to three times faster. A full sync of 15,000 inventory records that used to take over a minute and a half now finishes in under 40 seconds.

  • Affected components: GetInventoryStatus (Commerce Service SOAP integration), LSC Item Distribution lookup, LSC Web Applic. Sync Utility
  • Integration touch points: Commerce Service SOAP endpoint (ODataRequest operation); LS Central Inventory Lookup Table and Item Distribution setup
  • Configuration/setup changes: None
  • Breaking changes/upgrade impact: None — behavior-preserving performance refactor, no change to request/response shape

Reported timings:

  • 1,000 records: 5s → 1.5s
  • 5,000 records: 25s → 8s
  • 15,000 records: 1m40s → 40s.

Store Inventory

Store Inventory Worksheet

Previously, it was not allowed to add a new lot or serial number item in store inventory journal unless it already had a posted transaction in Item Ledger Entry.

The system now allows adding a new item with lot no. or serial no. without posted transaction in Item Ledger Entry.

Retail item

Update Tool Tip on Item Family field on Retail Item

Text from Tool Tips was removed, on Family field which is no longer relevant.

Item Status for Block PO, rather than Purchasing

Split Retail Item Status to Block Purchase Create and Purchase Process instead of a simple Purchase block.

Performance and Locking

Web POS Light — redundant line re-pricing removed from CalculateBasket

CalculateBasket in Web POS Light no longer re-prices transaction lines that were already priced when they were inserted. Two redundant recalculations have been removed from the flow:

  • the per-line VAT/price recalculation (ChangeVATBusOnLine and ChangeGenBusPostingGroup) — each line already carries the header's VAT and Gen. Bus. posting groups and its price from insert time; and
  • the explicit line pre-total recalculation (ReCalcLinePreTotal) — RecalcSlip already runs it for every item line.

No functional change: calculated prices, VAT (including reverse charge), and periodic discounts are identical to before. Each line is now calculated with fewer repeated price-list lookups.

RecalcSlip - Customer Prices and Performance

  • Bugfix: Turn on Disable Customer and Member Prices on the POS functionality profile, and the POS now keeps the standard retail price on every sale — even when a customer or member is attached. Before, the setting was skipped whenever the sale had a customer or a member price group, so customer and member prices still slipped through.
  • The default web store customer is now treated as a regular sale too, so web orders don't pick up customer-specific prices by mistake.

Action required by partners:

  • None. If you use Disable Customer and Member Prices, double-check the result matches your intent — with it on, customer and member prices are now fully suppressed at the POS (in some cases they still applied before).

Wish List

Mark wishlist items as Customer Order

When you add wish list items to a POS transaction, LS Central now marks the transaction — and the lines from that wish list — as a customer order automatically. You do not need to flag it by hand anymore.

  • This removes a manual step for cashiers and closes a gap where a wish-list-driven sale could get missed as a customer order, so orders flow straight into fulfillment without extra clicks.
  • Affected components: Wish List → POS transaction line creation (POS wish list add-to-basket flow)
  • Integration touch points: POS transaction line and POS transaction customer-order flags; no external endpoints
  • Configuration / setup changes: None
  • Breaking changes / upgrade impact: None — additive behavior on the existing wish-list-to-POS flow

Customer Order

Customer Order Fulfillment - Distance-Based Sourcing Restriction

This release adds a new fulfilment rule that lets retailers set a maximum distance between sourcing locations and the customer’s delivery address. When enabled, the system will only consider locations within this distance when fulfilling customer orders.

Member Management

Member Management performance improvement

Improved performance of member point offer lookup at the POS

  • Optimized how the POS finds active member point offers when calculating bonus points on a sale.
  • The lookup now reads offer, item, store, and transaction data with reduced isolation and loads only the fields it needs, and it skips item and transaction reads entirely when no point offers exist.
  • This lowers lock contention and speeds up point calculation on busy terminals.

This is an internal optimization only — the points members earn are unchanged.

Update Member in Ongoing Transaction

Editing a member's details during an open transaction — for example, adding an address — now updates that member's information on the transaction right away, so a later lookup returns the current details instead of what was there when the transaction started.

Membership information showing in POS Journal - option to change

A new option was added to the POS Functionality Profile allowing users to configure which member details are displayed on the POS transaction line.

Multiple Entra Applications

Multiple Entra Applications

Manage multiple Microsoft Entra applications for web services:

  • Create and manage several Microsoft Entra ID applications in LS Central, and assign each one to specific POS terminals or groups.
  • Web service and replication traffic then spreads across different Entra applications, so you are less likely to hit Business Central operational limits.
  • LS Central can create the Azure app for you and shows each app's secret expiry dates, so you can renew them in time.

Action required:

  • None to keep running as-is.
  • To use it, open the Entra Setup card to create your Entra applications, then run the POS Credentials assisted setup to assign them to POS terminals or groups.

Miscellaneous

"Registration Number" on Retail Customer Card

Registration Number field was added to LSC Retail Customer Card page.

Request for report to save values

Previously, LS Report LSC Retail Item Sales would not save values after Print or Preview & Close.This was added.

Remove telemetry framework code from System app

The telemetry framework code was removed from LS Central System App. Telemetry signals are now sent through the Telemetry Framework for LS Retail Solutions extension.

Token vault

The Token Storage in LS Central has now been obsoleted and all Token functionality moved to the EFT Extension for LS Pay and is now called Token Vault. All Token Storage object that were in the LS Central app have been obsoleted.

Adjust LS Central Token Vault functionality to EFT extension for LS Pay

Card-on-file payment tokens now use the token vault provided by the EFT Extension for LS Pay instead of LS Central's own legacy Token Storage. The POS web services that read and write payment tokens (GetTokenEntry, SetTokenEntry, GetContractTokens) now call into the EFT extension instead. A new Cards on File page (replacing the old one) lets you view, set a card as default, and activate/deactivate a member's stored cards, working exactly as before.

Action required by partners:

  • The Token Storage in LS Central has now been obsoleted and all Token functionality moved to the EFT Extension for LS Pay and is now called Token Vault. All Token Storage object that were in the LS Central app have been obsoleted.
  • No action needed for the web service migration itself - the old SOAP endpoints keep working (marked obsolete, not removed) for POS clients as old as version 26.0. If you call these endpoints directly from a custom integration, plan to move to the EFT Extension's own token vault endpoints before they are removed.
  • If you have customized the old Cards on File page (page 10012044), plan to move that customization to the new page before the old one is removed in a future version.

Cards on file for members

The Cards on file list for members now uses the Token Vault within EFT Extension for LS Pay. You still see the same list and the same actions: set a card as default, and activate or deactivate a card. You can use them from the member contact card and from the activity contact card. The old page is obsolete (page 10012044).

Action required by partners:

  • If you customized the old Cards on file page, move that customization to the new page. The old page will be removed in a future release.

Token web services

To maintain backwards compatability the webservices SetTokenEntryV2 and GetContractTokens in version 29 now store and retrieve tokens in the Token Vault within EFT Extension for LS Pay. So if a customer is using a POS client in versions 26.x, 27.x or 28.x then the legacy Token Storage functionality within the POS will continue to work and the tokens will be stored within the new Token Vault

The EFT extension's token vault has no equivalent for GetTokenEntry, SetMemberCardToken, GetMemberCardToken and DeleteMemberCardToken.

All six services are marked for removal three major versions from now. Until then, they keep working for clients as old as version 26.0.

Action required by partners:

  • If you call GetTokenEntry, SetMemberCardToken, GetMemberCardToken or DeleteMemberCardToken, switch to the token vault endpoints of the EFT extension for LS Pay before support for these services ends.
  • Set up the token vault on every head office that has the EFT extension installed. SetTokenEntryV2 and GetContractTokens now require this setup even when using an older POS client against a LS Central back office in version 29, and return an error if it is missing.

Old token vault objects removed

The Token Vault objects are obsolete in the LS Central app. LS Central now uses the Token Vault within EFT Extension for LS Pay.

Update Legacy Card functionality to use new Token Vault

Card on file on the legacy card engine

  • With this release, Token Storage is obsoleted and its functionality moves into the EFT Extension for LS Pay under the new name Token Vault. LS Central now depends on the EFT Extension for LS Pay, so it's included automatically with every LS Central upgrade — no partner action is needed to add that extension to a customer's environment.
  • An upgrade step automatically migrates any locally stored legacy card-on-file tokens from the old Token Storage into the new Token Vault — no partner action is required for this step itself.
    • Where local legacy tokens do exist (most likely on an offline POS configured this way), the upgrade step moves them into the new Token Vault's local storage; it never pushes them out to a remote/cloud Token Vault.
  • Card on file now works the same way on the legacy card payment engine as it does on the EFT Extension for LS Pay engine. Adding a card to file (POS Command AddCardToFile) and paying with a saved card (POS Command CardOnFile) behave the same as before — only where the token is stored has changed, so both engines now manage cards on file consistently.
  • If you are already using card on file on the legacy card engine, your POS commands and lookups keep working exactly as configured — nothing changes there.
    • The one thing every store now needs, legacy or EFT Extension for LS Pay, is the Token Vault Setup itself, since both engines read and write tokens through it.

Action required by partners:

  • Using Legacy Card Engine: the only action required is to set the Token Vault Setup configuration according to the instructions provided by the LS Pay online help. POS commands and configurations have not changed, so no action is needed there.
  • Using EFT Extension for LS Pay card engine: stores also need the new #TOKENVAULTSELECTION POS Lookup configured, in addition to the Token Vault Setup configuration — see the how-to topic and the separate EFT Extension for LS Pay Card Engine release notes.

Token Storage Utility is locked down — action needed for customizations

  • If you have a customization that calls codeunit LSC Token Storage Utility or reads or writes table LSC Token directly, act before your customers upgrade to this version. Every function on the utility now returns false (with an explanatory error, for StoreToken) instead of touching the old token table — the underlying legacy storage is no longer written to or read from at all.

Action required by partners:

  • Move any customization off LSC Token Storage Utility / table LSC Token and onto codeunit LSCEFT Token Vault in the EFT Extension for LS Pay before your customers upgrade to this version. Call the codeunit's public API — don't read or write table LSCEFT Token directly; the codeunit is what routes each call to local or remote storage based on the Token Vault Setup configuration.

Platform Web Services email

71487 Handle new warnings from AppSource before they become errors

Updates the codebase to comply with new AppSource validation rules, addressing obsoleted procedures, uninvoked triggers, and missing table field properties before they become blocking errors.

Staff Management

Synchronize cashier logon (MSR or otherwise) to automatically do staff login.

  • Staff management - Automatic Time Registration when POS Staff Log on.
  • Automatic time registration entry creation when a staff member logs on at the Point of Sale, eliminating the need for manual clock-in via the back-office time registration screen.
  • When a cashier or other staff member logs on to the POS, an arrival time entry is automatically created if one does not already exist.
    • A confirmation banner is shown on the POS display upon success.
    • If the staff member has no linked employee record, or already has an open entry, the process silently exits without interrupting the logon flow.

Roster View Enhancements

Users can configure the Staff Day Plan (Roster View) summary and external view directly from the page, with their selections preserved between sessions and the roster contents updated according to the selected summary mode.

The Total Section switch was removed and included in the total view options. Also the External View was separated from the list selection and can now be directly assigned on its own.

Support 2nd shift per day in shift patterns in staff mgmt.

Shift patterns can now schedule two separate shifts on the same day. On a shift pattern line, set a second work shift alongside the first — with its own start and end times, after-midnight flag, and hours — so one pattern can cover, for example, a morning and an evening shift. When you generate a roster from the pattern, each day that has a second shift gets two roster lines, one per shift.

Action required by partners:

  • None. To use the feature, fill in the second-shift fields on a shift pattern line, then generate the roster as usual.

Test Apps

Convert LSCentral_Tests / Forecourt_Tests to SaaS-compatible test library dependencies

The LSCentral_Tests and LSCentral_Forecourt_Tests autotest apps were converted to depend solely on Microsoft's Cloud-compatible test library, and retargeted from OnPrem to Cloud. A handful of email-mock tests that relied on an OnPrem-only Microsoft mock have been temporarily disabled, with TODOs to reinstate them once a Cloud-compatible mock is available.

  • As a result, the full autotest suite now compiles and runs against SaaS (Cloud) BC sandboxes — not just OnPrem — enabling validation of LS Central there as well.

Partner impact:

  • None. This is internal test infrastructure only; no partner-facing functionality has changed.

Fashion

Variant Framework: Optimized Weight Calculation

Variant weight calculations in the Variant Framework pages were optimized, improving performance when loading large volumes of Variant Values.

 

POS 

UI Control enhancements

Device dialogs improvements

Device dialogs have been refactored and share the same new design as the POS message dialogs. This covers the print, cash drawer, scanner, serial, EFT, Hardware Station, and authentication dialogs. You can customize them like any other POS panel.

Message banner UI refresh

Message banners at the top of the POS have a new look. Info, success, warning, and error banners now have a clearer border, an icon for each type, a subtle shadow, and dark text that's easier to read. They are also less transparent, so the text stays legible over any screen.

One-line messages stay compact. Longer messages get more room, up to about four lines. To copy the text of a banner or error, select it. The POS no longer copies error text to the clipboard on its own, so it does not overwrite what you copied.

To change the colors, set one color per message type. The border and icon colors follow from it.

Menu pop-up curvature

Menu Pop-ups now apply the global control curvature if it’s higher than 0 in the POS Interface Profile.

Update journal design for the general POS

Improvements were made to the POS Data Table journal skin functionality. POS coupon journal lines now have the #SL_COUPON skin and mix and match journal lines now have the #SL_MIXMATCH skin.

Improve default Input Control look

The default style of the Input Control and Record Zoom controls have been updated. The padding inside the inputs have been increased to 12px. The default input border has been set to 1px with a light grey color (#E5E4E7). The input border focus color has been changed to a dark grey color (#97949C). The Keyboard Assist icon was replaced with a Three-Dot icon in a light grey color (#E5E4E7).

Update duplicate Message Banner if other parameters changed

POS Control Interface's PosMessageBanner, which shows a toaster message from the top of the POS UI could be shown but not explicitly hidden. If a text is sent which was already on the screen, the duplicate message would be ignored, but now it respects timeout/verbosity changes.

  • This means, if a message is shown with a 30 seconds timeout, it's now possible to hide the message sooner, by sending the same text with another timeout value.

POS message dialogs customizable

  • Standard Business Central Message, Confirm, Error, and Strmenu dialogs typically use the native BC dialog look and feel.
    • In versions 27-28, these dialogs were turned into auto-generated POS Panels, with an automatic timeout option in the POS Control Interface, with the option to opt-out of this behavior by checking the Use Legacy Dialogs option in the POS Interface Profile setup.
    • In version 29.0, the default look of the dialogs was aligned with the recent enhancements in the design-language of the POS, while also offering the option of fully customizing them.
    • If no dialog panels are defined in the database, POS creates and uses a default #BC-DEFAULT panel, so the default look works out-of-the-box.
      • To customize all dialog types, define a POS Panel with #BC-DEFAULT as the Control ID.
      • To customize one dialog type, define:
        • #BC-MESSAGE
        • #BC-CONFIRM
        • #BC-ERROR or
        • #BC-STRMENU; when it exists, it is used instead of #BC-DEFAULT.
    • The generated default dialog includes minimal built-in Style Profile defaults. Define:
      • POS Colors #BC-INFO,
      • #BC-ERROR,
      • #BC-SUCCESS or #BC-WARNING to change the shared semantic palette for BC dialogs and the updated Message/Error banners.
    • Statusbar backgrounds, borders and close icons are derived from those semantic colors, so each status type only needs one configured base color. Define:
      • POS Skins #BCDLG_BG or
      • #BCDLG_BTN, and
      • POS Fonts #BCDLG_BTN,
      • #BCDLG_DESC,
      • #BCDLGTYPE_CAPT or
      • #BCDLGTYPE_ICON, to change the generated default panel without creating any POS Panel controls.
      • Fonts or Skins whose IDs start with #BCDLGTYPE_ automatically use the active dialog type color, so the same caption or icon resource can change color for Message, Confirm, Error and Strmenu dialogs.
  • Custom dialog panels can be designed like other POS Panels and may include normal POS Controls, such as buttons with translatable text, POS Tags, glyphs, images and videos.
    • The client only populates and repositions the known dialog Button Pads:
      • #BC-DEFAULT-CAPT,
      • #BC-DEFAULT-DESC,
      • #BC-DEFAULT-ACTS and
      • #BC-DEFAULT-LIST, with the same suffixes used on specific panels.
    • A minimal panel needs either CAPT or DESC for dialog text, and either ACTS or LIST for generated action buttons. If both text parts exist, single-line text is shown in CAPT and multi-line text is shown in DESC.
    • If both action parts exist, larger selections use LIST while the main actions remain in ACTS.
      • Visible Menu Buttons on ACTS/LIST are used as templates for the generated buttons.
  • Other controls can still be placed freely as static design elements. While a BC dialog is open in the background, POS Commands do not reach BC until the dialog is closed. A POS Control can only have one active Position, so use separate Control IDs when the same visual element needs to appear on multiple dialog panels.
  • The auto-generation logic was also used for other hardcoded panel looks like:
    • The POS Input Controls with type Option/Boolean,
    • Accent Buttons on the Keyboard menu,
    • the Idle Timeout (Auto-logoff splash-screen) panel, and
    • Device Dialogs.

EFT Extension for LS Pay

There are now two ways to process card payments:

  1. Legacy (card payments as they've always worked) and
  2. EFT Extension for LS Pay, a new engine that talks to LS Pay directly from the POS.

Legacy stays the default, so upgrading takes no action — card payments keep working exactly as before unless a switch is made to the new engine.

POS to use EFT Extension

Choose EFT Extension for LS Pay as the card payment engine

  • Two ways to process card payments are now available: Legacy (card payments as they've always worked) and EFT Extension for LS Pay, a new engine that talks to LS Pay directly from the POS. Legacy stays the default, so upgrading takes no action — card payments keep working exactly as before unless a switch is made to the new engine. To start using EFT Extension for LS Pay, set the new Card Payment Engine option on the Retail Setup page. This is a company-wide choice — stores cannot be split between engines within the same company — and it takes effect after logging off and back on at each POS.

Here's what's supported on each engine today:

Operation Legacy EFT Extension for LS Pay

Notes

Card sale Supported Supported

Amount, tip, cashback, VAT, currency, and receipt all work the same.

Pre-authorization Supported Supported

Update a pre-authorization Supported Handles multiple open pre-authorizations on one sale.

Finalize a pre-authorization Supported Supported A confirmation of the amount is needed before it's sent to LS Pay.
Cancel a pre-authorization Supported Supported A confirmation prompt now appears before the cancellation is sent.
Void a card sale Supported Supported A confirmation prompt now appears before every void.
Void a card refund Supported Supported Same as above.
Void a finalized pre-authorization Supported Supported Treated as a void of the underlying sale.
Void an offline payment Supported Supported  
Card refund (not linked to a sale) Supported Supported  
Referenced refund (linked to the original sale) Supported Supported

Requires two POS Terminal settings to be turned on.

Offline payment Supported Supported On Legacy, offline handling is set on the POS Terminal; on EFT Extension for LS Pay, it's set on the EFT Device.
Add a card to file Supported Supported

The card must be linked to a member contact.

Pay with a card on file Supported Supported

Completes as an ordinary card sale — there's no separate transaction type to look for.

Card type mapping Supported Supported One shared configuration — set it up once, and whichever engine is active uses it.
Client Transaction ID generation Supported Supported Three generation strategies, configurable per device.
X-Report / Z-Report card totals Supported Supported  
Receipt and slip printing Supported Supported  
Card details embedded on the receipt Supported Supported Controlled by a POS Terminal setting; when disabled, no card details appear on the receipt.
Decline receipt Supported Supported A declined payment still produces its own slip.
Signature verification Supported Supported Now handled within EFT Extension for LS Pay.
Reprint a card slip from a past transaction Supported Not yet supported Coming in a later release.
Recover an interrupted or incomplete card transaction Supported Not yet supported  

With EFT Extension for LS Pay, a few things work slightly differently:

  • A confirmation prompt is displayed before every card void or pre-authorization cancellation. Before finalizing a pre-authorization, the amount must be confirmed first.
  • A declined or failed void now fails cleanly — the original payment is never left half-voided.
  • A payment can only be voided, or have a referenced refund issued against it, on the engine it was taken on. Switching engines blocks reversing an older payment, with a message explaining why.
  • When an offline payment retries, both the failed online attempt and the successful offline attempt appear as linked records, each with its own printed slip.

Card-terminal (EFT) setup has a new home

  • Card-terminal setup now lives on a new EFT Device page instead of the old POS EFT page. On upgrade, existing card-terminal setup carries over automatically — nothing needs to be re-entered. On the legacy card engine, the setup can still be edited from an action on the EFT Device page; once EFT Extension for LS Pay is active, that legacy view becomes read-only and the EFT Device page is where changes are made. For more clarity a banner is displayed at the top of the EFT Device card to show which card payment engine is currently selected. For full detail, see the online help topic EFT Device vs. POS EFT Device.

Card on file now works the same way on both card engines

  • Card on file now works the same way regardless of which card engine is in use. Token storage moves into the Token Vault, part of EFT Extension for LS Pay — so even on the legacy engine, the Token Vault Setup now needs to be configured, though the POS commands and lookups for adding a card to file and paying with a saved card don't change. See the LS Pay online help for how to configure the Token Vault Setup.
  • On upgrade, any locally stored card-on-file tokens move automatically into the Token Vault — no action is needed for that step. Where card on file is already used on the legacy engine, everything keeps working exactly as configured.

Important for partners with customizations

Token Storage Utility is retired — update customizations before upgrade

If a customization calls codeunit LSC Token Storage Utility or reads/writes table LSC Token directly, action is needed before customers upgrade. Every function on the utility now returns false instead of touching the old token table — it no longer stores or retrieves real tokens.

Legacy card payment functionality is now marked obsolete

All legacy card payment functionality, including IEFTUtility (the largest interface in this area), is marked obsolete as of LS Central 29.0. The code isn't removed — it stays in the codebase and continues to work for at least the next two major versions — but any customization built on it now triggers an obsoletion warning, and it's a clear signal to start planning a move to EFT Extension for LS Pay ahead of eventual removal.

⚠ Action required

Action required for Legacy card functionality

  • Nothing, to keep using card payments as they are today — Legacy stays the default after upgrade.
  • The Token Vault Setup must be configured (see the LS Pay online help). Card on file now runs through it even on Legacy — a new requirement, though existing POS commands and lookups for adding a card to file and paying with a saved card don't change.
  • Card-terminal setup should be spot-checked after upgrade. It carries over automatically to the new EFT Device page and can still be edited from the legacy action there.
  • Any customization calling codeunit LSC Token Storage Utility or reading/writing table LSC Token directly must move onto codeunit LSCEFT Token Vault (EFT Extension for LS Pay) before customers upgrade — the old API silently stops storing real tokens.
  • No immediate action, but start planning: all legacy card payment functionality, including IEFTUtility, is now obsolete. It keeps working for at least two more major versions, so there's time — but any customization built on it should move to EFT Extension for LS Pay before then.

Action required for EFT Extension for LS Pay

  • Retail Setup → Card Payment Engine must be set to EFT Extension for LS Pay, and every affected POS logged off and back on.
  • The Token Vault Setup must be configured (see the LS Pay online help), plus the #TOKENVAULTSELECTION POS Lookup (see How to: Configure Cards On File at POS).
  • Before switching, confirm that card-slip reprint and recovering an interrupted transaction are not required — neither is available yet on this engine.
  • Card-terminal setup carries over automatically to the new EFT Device page — that's where it's managed going forward.
  • Any customization calling codeunit LSC Token Storage Utility or reading/writing table LSC Token directly must move onto codeunit LSCEFT Token Vault before customers upgrade — the old API silently stops storing real tokens.

Miscellaneous

Payment panel as a popup

A new field Close on new Transaction was added to POS Panels.

If checked, the Panel is automatically closed if still showing modally when a new/next Transaction is created on the POS.

Customer Deletion Validation for POS Records

You can no longer delete a customer while that customer is still tied to point-of-sale transactions.

  • When you try to delete a customer that is referenced by one or more POS transactions that have not been posted — or that are already posted — the system now stops the deletion and shows a clear message explaining why.
  • This protects referential integrity and prevents the statement-posting errors and manual corrections that previously occurred when a customer was removed while POS transactions still pointed to it.

Customers that are referenced only by voided or training transactions, or that have no POS transactions at all, can still be deleted as before.

Add event to allow overriding POS data entry number series validation

You can now hook into number series validation for POS data entry types with a new event, so you can allow alphanumeric number series — for example on gift card or voucher entry types — without changing core code.

Action required by partners:

  • None to keep current behavior. To allow alphanumeric number series, subscribe to OnBeforeValidateNumberSeries on table LSC POS Data Entry Type and set IsHandled to skip the built-in check.

Obsolete LS1 LS2 and LS3 fonts in POS bundle

The LS1, LS2 and LS3 demo data fonts were removed from the POS bundle. If you are still using these font, you need to manually install them.

LS Receipt with Weight fails (Measurements Canada requirements)

In Functionality Profile the configuration Print Currency Symbol in Amount Header was changed to be Print Currency Symbol in Amounts and is now a selection.

  • The default setting is as before that no currency symbol is printed in the Amount header (No Currency Symbol). If Currency Symbol in Amount Header is selected then the functionality is as it was before when the configuration was activated.
  • This configuration is now an extendable enum which allows for customizations in both localizations and in partner customizations.

Refactor InsertCardPaymentLine functionality

The functionality that creates the Card payment lines has been refactored using interface pattern. The behavior in the POS and towards the user is unchanged.

  • New integration event was added: OnBeforeProcessCardPaymentLine in codeunit LSC CardPaymentEvents. This event fires before any card payment line is created, for all card transaction types (Sale, Refund, PreAuth, Add Card to File, etc). except Void card payment which goes through another path. Subscribers receive the transaction context, POS transaction, line and card entry.

Event OnBeforeAskForQRCode moved to LSC POS Devices Events

Event OnBeforeAskForQRCode was moved to LSC POS Devices Events and a new parameter added to return the QR code to the POS. Previous expected the QR code to be added to TransctionContext.SetCurrInput.

Restaurants

Multiple seatings on a dining table

You can now seat more than one party at the same dining table at the same time. Each party keeps its own guests, orders, kitchen orders, comments, and bill, so a large or communal table doesn't have to sit reserved for a single booking anymore. Reservations and allocation also allow multiple reservations per table — a table that's already half full can still be offered to a new party that fits in what's left.

  • Restaurants with big or shared tables — communal seating, food halls, large booths — can now fill every seat instead of blocking the whole table for one party, without giving up per-party billing, kitchen tracking, or reservations.

Affected components:

  • Dining table seating and allocation engine, reservation and automatic allocation logic (bulk day-allocation and walk-in), floor plan/timeline occupancy and statistics, POS panels for seating, per-group kitchen order (KOT) status and billing.

Integration touch points:

  • Dining Area setup (new seating handler option), POS interface profile (new panels, buttons, and menu lines). No external system touch points.

Configuration/setup changes:

  • New Dining Table Selection Handler option on the dining area, plus new POS panels/buttons/menu lines that must be added to the interface profile.

Breaking changes/upgrade impact:

  • None. It is opt-in per dining area — any dining area left on the default handler keeps today's single-seating behaviour exactly as before.

Action required by partners:

  • On each dining area that should allow it, set Dining Table Selection Handler to Multiple Seatings on Dining Table.
  • Add the new seating panels, buttons, and menu lines to your POS interface profile — staff won't see anything until those exist.
  • Dining areas you don't change are unaffected.

Opening a panel's menu design from the running POS

Add the SHOW-MENU-SETUP command to the context menu of a POS menu that serves as a template for buttons on a button pad control. Clicking the command opens the stored design of that menu on top of the running POS, so you can view and edit the button layout without searching for it in the menu list. The command requires the manager key.

The command works on these panels:

  • Allocation Panel: graphical, period, timeline, time heading, table and paging buttons.
  • Overview Panel: graphical and grid buttons, and top menu buttons (hospitality type selection).
  • Multi-seating Allocation Table Popup Panel: block buttons.
  • Multi-seating Overview Table Popup Panel: block buttons.
  • Multi-seating Reservation Table Popup Panel: block buttons.

Add per-account refund policy and refund account substitution for income/expense lines

You can now control whether an income or expense line - like a tip or a service charge - gets refunded when you return a POS transaction. Set each income/expense account to allow or block returns, and optionally redirect the reversal to a different account than the original. Refunded income/expense lines now show in red on the POS journal, just like refunded item lines, and the income/expense account card shows the G/L account and refund account names next to their codes.

Action required by partners:

None to keep current behavior. To stop a specific income/expense account from being refunded, set its Allow Return field to Never. To post refunds for an account to a different account, set its Refund Account field.

Add indentation to deal item lines

Added indents to deal item lines.

Web service that returns full item hierarchy for restaurant menu

A new webservice, GetHierarchyV3, was added that returns the same dynamic content the Self Service Kiosk uses and contains the current item hierarchy / menu and all the needed information about the items on the menu, such as item modifiers, unit of measures and more.

Self Service Kiosk

Cross selling improvements

To improve the usability of the cross selling popup on the Kiosk the menu was redesigned depending on the number of cross selling infocode are configured.

Run Item modifers in the set sequence

Item modifiers on the POS (such as, milk or flavour prompts for a coffee item) are now triggered in the Sequence order configured on the Item Infocodes / Infocode Assignments setup pages, instead of alphabetical order of the infocode's code.

  • A one-time upgrade automatically assigns distinct Sequence values to any existing item that has multiple modifiers sharing the same Sequence, preserving today's prompt order until a store deliberately changes it.

Action required by partners:

  • None. The Sequence fix-up runs automatically as part of the upgrade. To reorder modifier prompts for a specific item going forward, set distinct Sequence values on the Item Infocodes / Infocode Assignments page for that item.

Design and refinement of allergens

Customers see which allergens an item contains, much like the nutritional information. Allergens come from the item attributes you already use on the POS.

  • Customers can check allergens at the kiosk without asking staff. The kiosk shows the same allergen data as the POS.

Affected components:

  • SSK profile and profile card, allergen lookup for kiosk menu items, SSK web template (item info and checkout views), attribute option values
  • New Allergen Attribute Group field on the SSK profile. It names the attribute group whose attributes the kiosk treats as allergens.
  • New allergen tab text type for SSK texts.
  • Attribute option values use the existing Option Value (Cust.) and Hide Value for Customer fields to control the wording customers see.

Action required by partners:

  • To show allergens on a kiosk, open the SSK profile card and set Allergen Attribute Group to your allergen group, for example Allergens-14. Leave it blank to keep allergens hidden.

Make add to cart more visible in the Self Service Kiosk

When an item is added to the cart in the Kiosk a popup with the item is displayed in the top right corner of the screen to emphasis the item has been added to the ongoing order.

Dining Reservations

Edit reservation details from the availability lookup

You can now change a reservation's guest count, date, and dining preferences directly from the dining availability lookup, without opening the reservation card.

  • Select Change Specifications to update the number of guests, the date, or the section and table preferences, then confirm the time slot as usual. If you close the lookup with changes you haven't confirmed yet, you're asked whether to keep or discard them.
  • Select Revert Specifications to restore the original values.

Booking agents can now fix a reservation on the spot – bump the guest count, move the date, or swap the section – while they are already looking at availability for it, instead of backing out to the reservation card and losing their place.

Edits go through the same validation and permission checks as editing the reservation directly, so capacity and overbooking rules still apply, and the actions are only available where a live reservation backs the lookup.

Action required by partners:

  • None.

View reservations affecting an availability line

You can now drill down from the reservation counts on the dining availability lookup straight to the reservations behind them. Select the Reservations/Guests, Allocated Reservations/Guests, or Non-Allocated Reservations/Guests figure on any availability line to open the matching list of dining reservation entries – the exact guests, party sizes, and times that make up that number. Select a reservation in the list to open its card.

  • The reservation entries list also shows a new Dining Table Allocated column, so you can see table-allocation status at a glance.

Booking agents and hosts no longer have to guess who's driving a busy interval. They can jump straight from a count to the guests behind it and act – call a guest, or reassign a table – without leaving the availability lookup.

Action required by partners:

  • None.

Activity products: dining section/table preferences and demand-aware (net) availability

New or enhanced features – Restaurants / dining

  • Choose which dining preferences you use – Nominate per dining area which attributes guests can express a preference for: dining-area section, dining table preferences, allergens, and up to four more of your own. Set them on an activity product and they carry onto the group booking and every reservation made from it. Pick values from a list and clear the ones you no longer want; adjust them per booking, and they carry through for package products.
  • Show availability as Gross or Net – Pick a display mode per dining area. Gross counts only reservations already seated at a table and is the default, matching earlier versions. Net also subtracts bookings that are made but not yet seated, so you can see the demand that is coming. Switch between the two right from the availability lookup.
  • A truer picture of pending demand – In Net mode the deduction is based on the tables those pending parties would actually occupy, rather than an average table size, so the figure matches what the room can really still seat. A party of two no longer costs three seats in a room of large tables.
  • Spot overbooking across the whole booking – A time slot is flagged as overbooked when the booking's length runs into a later, fully-booked slot, and the availability shows how far over it is (for example, -10 seats). Where a booking spans several slots, the tables and the seats shown now describe the same stretch of time.
  • More on the availability lookup – The lookup now also shows the reservation capacity and a reservations/guests total, so you can see the headcount limit and the demand behind the figures without leaving the page.
  • Separate online reservation limits – Set a dedicated online capacity for web bookings. A web booking is accepted only if it fits both your overall capacity and the online limit, so you can ring-fence seats for online guests. POS and back-office bookings don't use the online allotment.
  • Overbooking controls – When capacity or tables run out, overbooking goes through only where your product and user settings allow it; otherwise the booking is blocked with the reason shown.
  • POS Front Desk improvements – Edit the number of guests per line with live availability feedback, and get more consistent handling of the group's total guest count.

Action required:

  • Availability keeps working as it did: new and existing dining areas show Gross availability unless you switch them to Net. Switch one to Net and its figures will look lower than before – that is expected, as Net counts pending demand that Gross ignores. Whether a booking is accepted does not change with the display mode; that is still decided by your capacity and table availability.
  • To show the new reservations/guests figure on the POS reservation desk, add the matching source expression and data-table column to your POS layout.

Replenishment for LS Central

 

See this document: Important Update: Replenishment Changes in Upcoming LS Central Releases

Break Down Reorder Point and Maximum Inventory When Creating Item Store Records

  • When using the Create Item Store Record action in the Replen. Control Data List, Reorder Point and Maximum Inventory values for items with variants can now be automatically broken down and distributed across the newly created Item Store Records, by Variant Weight or Dimension Pattern.
  • This breakdown is activated through the Item to Item Store Rec related fields on the Integration FastTab of the Replen. Setup page.

Replenishment Moves to a Dedicated Extension

In version 29.0, Replenishment functionality is separated from the core LS Central application and delivered as a dedicated extension. Replenishment will be available as the Replenishment for LS Central extension, which requires LS Central as a prerequisite.

  • This change gives partners and customers greater deployment flexibility. Replenishment is a substantial module, so customers who do not use it no longer need to install it — resulting in smaller databases, faster deployments, and simplified maintenance.

Filter Items by Brand in Replenishment Calculations

A Brand Filter field was added to the Replenishment Template and Replenishment Item Quantity (RIQ) Template, allowing you to filter items by brand. When specified, the filter is applied during Replenishment Journal and RIQ calculations, which helps you narrow the scope of items processed. The Brand Code field has also been added to the RIQ table to support this functionality.

Replenishment Transfer Rule Improvements

  • Replenishment Transfer Rules now give you finer control over how limited stock is shared out to your locations. You can organize locations into groups and give each group its own transfer type, and you can restrict a rule to only the locations you have explicitly listed.

Mix Transfer Types in One Rule with Auto-Sequence Group

  • A new Transfer Type option, Auto-Sequence Group, lets a single Transfer Rule mix Auto-Single and Auto-Full. When it is selected, each Transfer Rule line is assigned a Sequence Group (A, B, or C) and its own Transfer Type (Auto-Single or Auto-Full). All locations within the same sequence group share one transfer type.
  • During calculation the groups are served in order - Group A first, then Group B, then Group C. Each group is distributed according to its own transfer type and the priority of its locations, and whatever quantity remains is handed to the next group. This means you can, for example, fully stock your flagship locations first (Group A, Auto-Full) and then spread the remaining stock evenly across your smaller ones (Group B, Auto-Single) - all within one rule.

Send Stock Only to the Listed Locations

  • A new option on the Transfer Rule header, Consider Only Locations in Transfer Rule, lets you limit a rule to exactly the locations it lists. When the option is enabled, locations that are excluded or not listed in the rule receive zero quantity and do not consume any of the available stock. When it is disabled (the default), those locations are still served last with the lowest priority. This option applies to the Transfer Replenishment Journal; it does not affect Purchase Replenishment with cross docking.

Discount Performance Fields Get Their Own FastTab

On the Discount Offer, Multibuy Discount, and Mix & Match pages, and their archived counterparts, the Actual Discount Performance and Planned Discount Performance fields have moved into a new Discount Performance FastTab.

Add Supporting Index on Replen. Planned Stock Demand Table

A supporting index key (Original Entry No.) was added to the LSC Replen. Planned Stock Dem. table, improving performance when Replenishment Journal lines with Planned Stock Demands are deleted.

Add Items to Replenishment Journal – New Vendor Filter Option for Replen. Item Quantity Calculation

A new Vendor Filter (Item) field was added to the Add Items to Replenishment Journal report for Purchase and Transfer replenishment. When Calculate Inventory is enabled, you can use this field to filter vendors directly at the item level when calculating Replenishment Item Quantity (RIQ).

  • This reduces the number of items included in the RIQ calculation, enabling faster processing.

Force Inventory Calculation Field Added to Replenishment Templates

A new Force Inventory Calculation field was added to the Replenishment Template page for Purchase and Transfer replenishment types.

  • This field sets the default value for the Calculate Inventory parameter in the Add Items to Replenishment Journal report.
  • When a Purchase or Transfer Replenishment Journal is processed manually, you can override this default if needed.
  • When processed via a scheduler job, the field ensures the Replenishment Item Quantity is recalculated before the journal is calculated.

Replenishment Setup Fields Move to Retail Setup

Configuration fields move from LSC Replen. Setup to LSC Retail Setup. Old fields on Replen. Setup are now obsolete, pointing to their new home.

Release Calendar:

  • Fields moved: Release Calendar No. Series, Release Details Period, Create Purch. Order for Excluded Lines, Days to Keep Logs
  • New Release Calendar FastTab added to the Retail Setup page

Vendor Performance:

  • Fields moved: Vendor Performance Active, Update After First Order Release
  • New Vendor Performance FastTab added to the Retail Setup page

Purchase Contract:

  • Field moved: Purchase Contract No. Series
  • Added to the Retail Setup page, in the Purchase Order group on the Other FastTab

Skip Planned Stock Demand Creation per Location at Statement Posting

A new Skip Planned Stock Dem. Creation (Statement) field on the Location Card (Replenishment FastTab) lets you choose, per location, whether posting a statement creates Replenishment Planned Stock Demand records for items with the Replenishment Calculation Type Like for Like.

  • When enabled, no records are created for the location; when disabled, they are created as part of statement posting.
  • The field defaults to enabled for locations that are not Active for Autom. Replenishment and to disabled for those that are, giving you precise control over which locations generate stock demand.

Buyer's Workbench Obsoleted

The Buyer's Workbench feature was obsoleted and is no longer available. The related pages have been removed from the Retail Buyer, LS Central, and Replenishment role centers. Supporting setup records such as Buyer Group and Document Group are unaffected and continue to work as before.

Analytics for LS Central

Add object and table record-count tracking (Table Information/Object are OnPrem-only, cannot be copied into a Cloud-target app)

Track object and record counts from Analytics Setup

  • Open Analytics Setup to see two new lists: Analytics Objects, showing every object's type, ID, name, and caption, and Analytics Table Information, showing each table's record count per company.
    • Both can be refreshed via a scheduler job, so the numbers stay current without manual upkeep.
    • You can delete old entries, but you cannot add or edit them directly.
  • Business Central only computes this data on the fly, so it was never available as a real table you could report on or export. The first step toward tracking how a company's database grows over time.

Action required by partners:

  • Set up a Scheduler Job (Object Type = Codeunit, Object No. = LSC Analytics DB Info Update) if you want these tables to populate automatically.

Bookings for LS Central

Add SetGlobalMasterRec procedure in Codeunit 10015805 "LSC ACT Label

Procedure SetGlobalMasterRec in codeunit LSC ACT Label Functions were made accessible for partners. It allows the global master record behind the codeunit to be set by passing a RecordRef variable, so partners can customize which record the label functions work with to fit their needs.

Extend the Booking object no. series

The Bookings license was updated with increased number of objects. This does not affect customers running in the cloud, but customers running on-premise license might need license update to use new Booking functionality.

Use the standard Your Reference field on reservations and activity groups

The reference field on reservations and activity groups now matches the standard Business Central Your Reference field, so you can enter up to 35 characters instead of 20. Existing reference values move across automatically when you upgrade, and the field appears in the same place on the reservation and activity group cards.

Action required by partners:

  • Upgrade to run the data migration automatically. Then update any custom extensions, integrations, or API clients that reference the old reservation/activity-group Reference field so they use Your Reference before the obsoleted field is removed in a future version. Also make sure that no user data/settings are referring to the obsoleted Reference field in word templates, Matrix/Email scripts and the Required fields settings.

Allow setting the Posting Date on a Membership Subscription Batch before creating invoices

Membership subscription batches now support maintaining the posting date before posting. Users can review and adjust the posting date while the batch is still in draft, and that date is then used when creating the related sales documents.

  • The Posting Date for the subscription batch can be edited in the list page while it has the status as Draft.
  • The user must set the page editable and change the value of the posting date.
  • If the value is blank, then posting date will be set when the Posting of the batch is done, and invoices are created.

Add tasks to the BEO reports

Configurable BEO task visibility was added for Activity Events.

Users can now control task presentation in BEO output with a new Reservation Type setting: BEO show tasks

  • No
  • Show Per Activity
  • Show Per Event Category

This update extends event-view/BEO generation to include task entries and introduces a Task entry type in BEO processing. It also improves the Activity Task Schedule experience with a new Process All Tasks action.

User impact:

  • Better control of operational detail in BEO documents.
  • Faster task processing from Task schedule page.
  • Task visibility in event/BEO views.

Fix keys in POS Data tables related to Bookings and Staff Management

  • The POS registration of Staff management and Bookings POS commands was corrected, when creating the data tables for the POS lookups in the modules.
  • The field Key No. was incorrectly populated with the field value reference. This did not affect any functionality, but should be set to 0 by default.
  • Partners do not need to do any changes to current implementations.

Opening archived Reservation/activity recalls the entry

Open an archived reservation or activity from the History menu and the standard card opens, not a read-only copy. LS Central recalls the entry, opens it, then archives it again when you close the card. Entries that belong to a group still open read-only – to change one, recall the group reservation first.

Refactor disabler for better right click handling on Matrix

Users can now right-click on another reservation while a context menu is already open, and a new context menu will open for that newly clicked reservation.

Improve Quantity Conversion Behavior, Duration Calculation, and Default Time Logic on Activity Product Card

  • Moved Duration and Duration Type fields to Default Settings section for better usability.
  • Duration and Duration Type are now automatically controlled (read-only) when Quantity Conversion is set, preventing confusing mismatches.
  • When Quantity Conversion is None, changing Duration now automatically updates Default To Time and vice versa.
  • Cross-midnight time calculations now clear Default To Time with an informational notification instead of producing incorrect wrapped values.
  • Descriptive tooltips were added, explaining the behavior of Quantity Conversion, Duration, Duration Type, Default From Time, and Default To Time.

V29 Enhancements

This release bundles a few small fixes across activities, groups, and the schedule:

  • The charge restrictions page for an event now reads Event charge restrictions instead of Client restrictions.
  • The Client No. tooltip on an activity reservation now explains what happens when you use it — it creates a new client if the field's empty, or opens the existing client's card if it's filled in.
  • You can no longer change or extend the duration of a class, a course, or a capacity-based booking from the Activity Matrix's right-click menu, since neither action applies to those bookings.
  • Group reservation lines now show the activity quantity as the last column, with a new column right beside it that spells out what the quantity means — for example, No. of minutes — whenever the product defines one.
  • Action required by partners:
    • None.

New Total View: Summary Per Locations for comparing locations + Added filter option Activity Type on Summary Setup

A new location total view was created, which is accessible from the Booking Role Center.

  • This view is based on the Summary Setup, like the other total summary views. The page allows the user to review total summary (based on the summary setup), where each location is presented. This allows for easy comparison of performance between locations.

A new setup field was added on the summary setup to make it easier to filter the summary based on activity type. Previously the user could only filter the entries based on activity product filter, which is also still available for filtering.

Activity Product Quantity change is still not working

Two new POS commands: ACT_CHANGEQTY and ACT_CHANGEPERSONS were added.

  • These POS commands can be used when an activity in the journal lines is ready for payment, and the user needs to either change the quantity or the no. of persons.
  • If the activity product allows these changes to be processed, then the actual activity is changed to the new values, and recalled into the pos journal automatically.

Note that prior to applying the change the activity is set to status draft, then the changes are applied, and the status is re-assigned to previous value, since the changes might be affected by availability.

  • The changes are not processed if the related activity has already been paid, or if its part of a group reservation.

Note: For the ACT-CHANGEQTY command, If the related journal line is not an activity but a normal item journal entry, then standard CHANGEQTY command is processed.

Reservation (10015800) list shows incorrect total of no. of person as confirmed on the Activities tab

The handling of no. of persons in the reservation header section was changed.

  • Now the field which presents no. of persons in the reservation is always shown and editable.
  • If the related reservation type has the Show No. of persons set, then if the no. of persons is already populated at status change, the automated population of this field is bypassed.
  • If the setting is however not turned on, then the automated estimate of persons is always processed.

Reservation types which have the Show Event Category set, are also always bypassing the automated population of this field.

Change the text 'Member Tokens' on relevant pages and web-templates to be rather 'Cards on File'

Stored payment cards now appear as Cards on file across the back office and the POS web template, matching the Card-on-file wording you already use at the POS. The list, the counts on the reservation, activity group, and member FactBoxes, the actions on the list, and the messages they raise all use the new wording.

  • Nothing about how cards are stored or charged has changed.

Action required by partners:

  • None. The POS command description updates the next time default data runs. Translated builds need the new captions re-translated.

New Member (Client) email processes based on the email templates

A new option was added to send email based on the email templates from the Activity/Booking client card.

Check allowances when lines voided in transaction

The following was fixed:

  • Voiding an allowance line on the POS journal now correctly removes only the matching consumption entry and restores the allowance balance.
    • Previously, voiding could delete all consumption entries for that allowance on the receipt, including entries belonging to other lines (such as, deal consumption).
  • When an item is covered by multiple amount allowances, voiding one allowance line no longer deletes both consumption records.
    • Each IncomeExpense line is now precisely matched to its consumption entry by price.
  • Voiding a deal header now correctly removes the additional deal item's amount allowance consumption entry and voids its IncomeExpense line, which was previously left behind.
  • The item barcode reference is now correctly preserved when other allowance consumption entries remain, and cleared only when the last consumption entry is removed.

Move Special activity matrix fields from the pos menu header and replace Matrix POS cleanup

Booking related fields were removed from the POS menu header table and the logic related to those fields have been changed in the POS matrix template processing.

Support linked resources in the POS framework Matrix

To show availability is now supported correctly when resources are linked in the availability matrix based on pos framework. Previously this was only supported in the javascript framework. Common use of linked resources would be for example event rooms, where a large event room can also be split into multiple smaller rooms for event rental.

Invoice Transaction No. should be populated when an invoice is created but not only at posting.

Bookings — Activity Invoicing

Quote-to-Invoice process improvements

  • When converting a reservation to an invoice, the system now automatically deletes the associated quote after the invoice is created.
  • If a reservation is not yet in Confirmed status when invoicing is initiated, the user is now prompted to confirm the reservation first. Accepting the prompt will auto-confirm the reservation and proceed with invoicing.
  • Retail discounts and offers are now recalculated on the newly created sales document, in line with the Quote Discounts setup.
  • Order Date and Shipment Date on the sales document are now correctly set to today's date when the document is created.
  • There was an issue where the reservation's Transaction Type was incorrectly set to Invoice even when creating a quote. This was fixed.
  • There was an issue where Activity Reservation lines and Group lines were not stamped with the invoice number and transaction type when the invoice was created. This was fixed.

Activity/Reservation/Reservation Activity Line FactBox review

Refinements were done on the reservation and activity FactBox cards. The tooltips were reviewed, and drilldowns were refined. The Postings group was renamed to Related Entries.

Auto-sync activity resource status with Staff Management employee status (block/activate); fix Main Resource on activity transfer

Block or activate an employee in Staff Management and LS Central now updates their linked activity resource for you.

  • Block an employee and their resource turns inactive, so it's no longer offered or reservable when booking activities. Activate them and the resource becomes available again — no manual step.
  • If the employee still has upcoming activity bookings when you block them, you are warned first and can confirm or cancel, so no booking is left without a resource.
  • This applies only to resources in a Human resource group. You stay in control: activating a resource whose employee is still blocked is allowed, but you are prompted first.

Also fixed: the Transfer activities action on the resource card now updates the Main Resource on each moved activity, instead of leaving the old value behind.

Action required by partners:

  • None. The sync applies automatically after upgrade.

Activity Matrix: Caption Script Support for Quantity-Based Resources

Matrix View Templates now support a Caption Script on cells that display scheduled/quantity-based resources (resources with capacity type Fixed Quantity, Location/Day/Time Specific Quantity), commonly used for classes and courses.

  • When a Caption Script is configured on the template, the matrix cell label is generated by the script engine rather than showing a plain availability number. This allows the displayed text to be fully customized — for example, showing capacity, remaining slots, and bookings in a formatted string.
  • Three new parameters are available in caption scripts for the activity matrix context:
    1. 17 Matrix Resource Capacity Total scheduled capacity for the time slot
    2. 18 Matrix Resource Availability Remaining available units in the slot
    3. 19 Matrix Resource Entries Number of booked units (capacity minus availability)

When availability is zero or negative, the cell label is automatically prefixed with Fully Booked or Overbooked respectively, before appending the script output.

  • Setup:
    • Open the Matrix View Template card.
    • Enter a caption script in the Caption Script field, using parameters 17–19 as needed.
  • The new label will apply to all quantity-based resource cells when the matrix is refreshed.
  • Templates without a Caption Script are unaffected — existing behavior is preserved.

Enhance Resource Status View

The Resource Status view now gives front-line staff a clearer, faster way to monitor activity resources and manage bookings. You can see waiting-list demand at a glance, hide resources that aren’t open, choose how many days to show, and cancel, reschedule, or transfer activities straight from the matrix.

  • See waiting-list demand — a new Waiting List column shows how many activities are waiting for each date and time slot, with drill-down to the list. It respects every active filter (location, resource group, reservation type, and activity type).
  • Set the date span on the page — a No. of Days field lets you control how many days the matrix shows, without editing a template first.
  • Cancel a slot in one step — the cell menu has a new Cancel Activities option that cancels all confirmed activities for the selected resource and time slot after a confirmation prompt, then refreshes the view.
  • Only the resources that matter — when a template with time settings is active, resources that are closed or outside working hours for the chosen date and time no longer clutter the matrix as columns.
  • Reliable date navigation — moving to the previous, next, or a chosen date now refreshes the resource columns, so you no longer see stale columns after navigating.
  • Reschedule any slot — the reschedule flow now lists the reservations in a slot and lets you pick which one to move, instead of only working when exactly one entry exists.
  • Transfer within the location — Transfer Activities now scopes the resource list to the current location as well as the resource group.
  • Spot bookings faster in transfers — the transfer worksheet now shows the Client Name for each entry, so you don’t have to drill in to identify a booking.

Move an Activity to a Different Reservation

  • You can now move an individual activity from one reservation to another directly from the Activity Card and the Reservation Lines list, using the new Move Activity action — without cancelling and re-booking.
  • When you trigger it, the system lets you pick the destination from a list of eligible future reservations, asks for confirmation, and then moves the activity together with all its related data: additional items, resource reservations, task schedules, task entries, and comments.
  • Package activities move as a whole, including all their component lines. After the move, the status on both the source and target reservations is recalculated, the transfer is logged on both, and a notification confirms the destination reservation number.
  • Some activities cannot be moved: component lines, Late Rental Charge lines, and activities that belong to a group booking.
    • Rental activities that already have unit entries are also blocked.
    • If the target reservation type does not allow the activity type being moved, a clear error message is shown.

Action required by partners:

  • None. The Move Activity action is available automatically on the Activity Card and Reservation Lines once upgraded.

Task Schedule Tooltips Missing

The tooltips on the Bookings Task schedule fields were updated.

Additional charge discount does not recalculate the total when set via web service

Set a discount on an activity group's additional charge from outside the client — through a web service, data import, or other code — and the line total now recalculates automatically. Previously the total only updated when you changed the discount directly in the client.

Add Extension Item to Activity when Duration is Extended

Activity Booking – Duration Extension

  • Staff can now extend the duration of a confirmed activity booking directly from the reservation.
  • When a confirmed activity line is selected, the new Extend Duration action creates a linked extension line that picks up immediately where the original ends, using the same assigned resources.

Setup:

  • On the Activity Product Card, use the new Duration Extensions action to define the available extension options for each product. Each option specifies a duration (in the product's duration unit) and a price.

Usage:

  • Open a confirmed activity on the Reservation Lines or Activity Card.
  • Choose Extend Duration — only available when the product has extensions configured and the line has not already been extended.
  • Select the desired duration extension from the list.
  • A new confirmed activity line is inserted, starting at the original activity's end time. Resources from the original line are automatically reserved for the extension period. If a resource is not available for the extension period, a confirmation prompt is shown before proceeding.

Status Changes:

  • When the status of an original activity line is changed, the linked extension line follows automatically — no manual update required.

Add quick client selection action on Client Name field of Activity list part on Reservation

You can now set or change the client on an activity line directly from the Client Name field on a reservation. Click the field to open the client search, pick the guest or member, and the line updates in place — no trip to the ribbon. The existing Search & New Client ribbon action still works exactly as before.

Action required by partners:

  • None.The new field action appears automatically wherever the Search & New Client ribbon action is already available.

Implementation - Bookings API pages

A complete set of Bookings API pages was added under the bookings/v3.0 API group, covering:

  • Activity locations
  • types
  • products
  • resources
  • resource groups
  • promotions, settings
  • charges
  • reservations (single and group)
  • reservation lines and members
  • reservation charges
  • group charges
  • admission entries
  • customer entries
  • attributes, waivers
  • issued allowances
  • member details
  • membership entries
  • membership products
  • membership subscription charges, and
  • resource activities.

Each new API page intends to replace a corresponding Bookings SOAP procedure, exposing the same functionality as standard OData/REST endpoints (GET, bound actions) while preserving compatibility with existing SOAP-based integrations.

Generate BEO report printouts in Word format instead of the current format

A new Word-based BEO report was introduced:

  • Report object ID: 10015829
  • Report name: LSC BEO Report Word

This is a new report feature, not a modification of an existing standard report:

  • New Word layout for BEO output with improved visual structure.
  • Event Information section with reservation totals and balance.
  • Details by Category section with improved captions and numeric alignment.
  • Reservation comments section in the Word output.
  • Pagination/layout improvements for heading and comments placement.

Setup Required:

  • To use this new report, assign the report object to the Reservation Type configuration.
  • Open the related Reservation Type setup/card and locate the field used for BEO report assignment.
  • Set it to report ID 10015829 (LSC BEO Report Word).
  • Generate BEO from a reservation (card) that has the related Reservation Type assigned.

Notes:

  • If comments are enabled and present on the reservation, they are included in the report output.

If you have multiple reservation types for Banquet Events, each one must be configured to use report ID 10015829 where needed.

Make Reservations + Activity Reservations API editable

The Bookings v1.0 API now supports creating and updating Reservations and Activity Reservations (POST / PATCH), alongside the existing read and action endpoints. Deletion goes through the cancel action.

  • Edits are restricted to bookings that are still open (Draft / Waiting List); confirmed reservations are protected and status changes go through the confirm / cancel / set-status actions.
  • Adding a package through the API now creates its component activities and their additional charges automatically.
  • The client name on a booking can no longer be changed once a member contact is assigned, keeping it consistent with the contact.

Make Group Reservations + Group Reservation Lines API editable

Build and maintain group bookings straight through the API.

  • The group reservation and group reservation line endpoints now accepts create and update calls, and you can remove an activity line — so tour operators, school groups, weddings, and event bookings can be driven end to end without falling back on the older web service calls.
  • The API follows the same rules you are used to on the Bookings pages.
  • Edit booking details while the group is a draft or on the waiting list.
  • Once it’s confirmed those details lock — use the status action to move the group along instead. Contact details, reference, description, and salesperson stay editable at any point, as do line comments and descriptions.
  • Deleting an activity line is allowed while the group is a draft or on the waiting list, and it clears that line’s activities, members, comments, and charges with it.
  • Fully paid lines can’t be deleted, and neither can a group header.

Action required by partners:

  • None.

Enable POST (create) on the Waivers API

You can now create a waiver through the Bookings API. Post a waiver for a client, a reservation, or a membership, then capture the signature with the existing sign action — no need for the legacy web service.

POS rental return: settle cross-location charge on full unit release

When a customer rents a unit at one location and returns it at another, Bookings for LS Central now adds a cross-location charge as the last unit is returned. Settle that charge at the POS as part of the return — it's processed along with the rest of the rental payment when all units are released.

You can pre-pay the rental and just collect the cross-location charge on return, or take the whole payment, including the cross-location charge, at the return.

Action required by partners:

  • None. Available after upgrading to the version that includes this change (v29).

Default Member Club and Scheme Code from Activity Setup when creating a new client from an activity

When you create a new client from an activity, LS Central now pre-fills the member club and scheme from Activity Setup. If you run more than one member club, the club list opens with your default club already selected, so you do not have to find it each time.

  • The new client's scheme comes from the Default Scheme Code in Activity Setup when it's filled in — otherwise the club's own default scheme is used, just like before.

Action required by partners:

  • None. Optionally, open Activity Setup and fill in Default Member Club (the club pre-selected for new clients) and Default Scheme Code (leave blank to keep using each club's own default scheme).

eCommerce for LS Central

AL: Add Uom and Quantity in webhook json in hospitality

Unit Of Measure and Quantity was added in webhook item JSON and GetKotStatus API.

AL- Support income account while purchasing voucher/giftcard from ecom

Support was added for Income Account item type in order lines for selling POS Data Entry as gift cards/vouchers.

AL: Add configuration in LS Central to control pos data entry at ecom side

A new Blocked on eCommerce field was added to the POS Data Entry Types and included the Unposted and Webstore fields in the GetDataEntryBalanceV2 web service.

Magento

Magento Voucher Redemption Support in Retail

Implemented support for redeeming and selling vouchers from Magento.

  • Supports one-off voucher redemption, where the voucher is fully consumed regardless of the remaining balance.
  • Supports Burn-Down vouchers, allowing the remaining balance to be used across multiple transactions until the voucher is fully consumed.
  • Supports Burn-Down + Top-Up vouchers, allowing funds to be both redeemed from and added to an existing voucher.
  • Supports applying multiple vouchers to a single transaction.

Refactor periodic offer logic out of FindPeriodicOffers

The internal logic that evaluates periodic discounts and offers during POS price calculation has been restructured for improved maintainability and easier performance diagnostics.

  • The large FindPeriodicOffers procedure in the POS Price Utility was broken into smaller, clearly named helper procedures.
  • This is an internal code-quality change only - there is no change to how periodic offers (Mix & Match, Discount Offers, Multibuy, Item Point) are calculated or applied at the POS.

AL: Add Tip info to storeget

Tips from Store card to GetStore WS were added.

Tips Support in Hospitality from Magento

Support was added for tips in hospitality orders, allowing tips to be included as part of the order payment process.

Shopify

Technical validation issues from Appsource

App Source Validation for LS Central Shopify BC connector.

Feature Request - Support Shopify Order Tags Filter in CO List

You can now filter customer orders by Shopify tag. On the Customer Order List and the Posted Customer Order List, select Filter by Shopify tag and pick a tag to see only matching orders each order's tags also show in a new column.

  • This helps partners who tag Shopify orders for dropshipping, embroidery, or express shipping find and group them without leaving LS Central.
  • No setup is required and there are no breaking changes.

Send product images to Shopify from an external URL

You can now sync product images to Shopify straight from an external URL instead of always uploading the file from Business Central.

  • Set an image location on a retail image, and Shopify pulls the picture from that address whenever you sync useful if you keep your product photography in external storage, like Azure Blob Storage, rather than inside the Business Central database.
  • This release also makes the underlying sync more reliable.

  • When you switch an image between an external URL and an uploaded file, Shopify now picks up the change correctly instead of occasionally reusing the old picture.
  • Variant image galleries stay in sync too changing or removing an image cleans up the old one on Shopify's side instead of leaving duplicates behind, and a missing or deleted retail image no longer stops the rest of your catalog from syncing.
  • No setup changes are needed to keep using image uploads as before this only applies once you fill in the image location field on a retail image.
  • There's no impact if you do not use it.

AL: Order Events and more

New Event:

  • OnBeforeInsertTempCOHeader

Public Functions:

  • MakeGQLId
  • GetGQLId
  • ShopifySendGQLReq.

AL: LS Central Bulk Image upload to Shopify

BC Shopify: Supports running image update as Scheduler using Retail Image Link pre-actions.

LS Shopify: Improves image update by skipping existing images during initial run, and adds option to update images for selected products.

Collection code from LS to BC

Supports Collection creation, as done in LS Shopify, where collections are created based on Item Category, Product Group or Special Groups.

Add Discount support

Supports Send Discount Offer to Shopify.

Supports Discount Offer, with item list or Item Category, Product Group or Special Group setup.

Item sync is deleting Compare at price

Skip Compare Price option was added for Shopify to skip sending Compare price during price updates.

AL: Make CustomerOrderEditV2 public

LSCCustomerOrderEditV2Utils was made public.

Request to Send Description Field to Shopify for Additional Entities

Option to use Attribute Description instead of Attribute code, and also Description in stead of Code for the Group selected to be used as Shopify Product Type

New checkboxes in Shopify Administration page:

  • Use Attribute Description
  • Use Description for Product Type.

AL: Possibility to import a single Shopify Order

New Command in Shopify Administration page

  • Pull - Selected Order: Gets order by order ID.

AL: Shopify activate Inventory

New Command was added to Shopify Location mapping

  • Activate Location: Activate Inventory location for all product for selected locations

New Command was added to Shopify Product mapping

  • Activate Locations: Activate Inventory location for selected products
  • Publish Sales Channels: Publish Sales Channels for selected products

AL: handle sale of Gift Card in shopify order

Support was added to process Gift Card sold on Shopify by adding Gift Card Item to CO line in Central.

Shopify Administration: Gift Card Item No needs to be set to define what Item to use for Gift Cards.

  • Use POS Data Entry Type for gift card item that does not create Voucher entries as Shopify GC cannot be used in Central and no need to have ghost copy of them there.

AL: Returns from POS

New option: Send POS Returns.

  • Handle returns done on LS POS for order made in Shopify, and create Return in Shopify as well.
  • Returns need to be processed in Shopify to complete the process there.
  • Works only with latest 2026-01 Api for Shopify.

AL: Add option to Pull selected products from Shopify

New filter options, to choose which product to pull, under Product Mapping

  • Shopify Administration - Related - Mapping Data - Products
  • Product Mapping - Action - Get selected Products

  • Product Id: single product or id less/greater than
  • Collection Id: single collection
  • Product Type: single product type
  • Query Text: any available query values allowed, see Shopify graphQL help for products query filtering.

AL: Data translation support for BC extension

Support for Translation as done in LS Shopify.

AL: Migration Orders in pending

Command was added to Migrate orders in BC Shopify to existing Customer Orders in Central that were pulled by LS Shopify.

Self-Checkout Connector

Add "Download Support Package" to SCO Portal

Download Support Package button was added to the SCO Portal Setup page. Support engineers can now pick a date range and download a zip with connector logs, the settings database, Event Viewer entries, system info, and environment variables. No changes to existing functionality.

Implement Customer/Loyalty Card Lookup in SCO POS Adapter

Loyalty/customer card recognition was added on the company's Self-Checkout lane. Cards scanned at the SCO now automatically look up and attach the customer to the transaction via the existing LS Central integration, enabling loyalty points and personalized pricing without attendant intervention.

Detect and Install Required .NET Runtime, Hosting Bundle and IIS Prerequisites

The SCO installer now detects required .NET Runtime, ASP.NET Core Hosting Bundle, and IIS prerequisites.

Missing prerequisites can be installed or enabled before continuing with the SCO installation.

  • This prevents SCO from failing to start due to missing system dependencies.

Allow Hardware Station URL to be Updated from the SCO Admin Portal

The Hardware Station URL field was added to the SCO Admin Portal Setup page, allowing users to view and update the Hardware Station endpoint after installation without requiring a reinstallation of SCO.

Show weight and unit price for pre-weighed embedded-price items

Pre-weighed embedded-price items on a company SCO now display the item weight and unit price next to the total price.

Currency scaling was fixes, so weighted-item line and transaction amounts show the correct number of decimals (such as, BHD 3 decimals) instead of inflated values.

  • Applies to items sold by weight (unit of measure KG).

Integrate SCOPrintPreviousTransV2 web service into SCO service

The SCO service was updated to reprint previous transactions using the new SCOPrintPreviousTransV2 web service, replacing the legacy LSCSCOPrintPreviousTrans call so that printer and logo setup is correctly applied on the reprint path.

Support new ModificationType “Member” in SCO (SCOModifyOrder)

SCO now supports the new Member ModificationType in the ModifyOrder web service.

  • This allows adding or updating a member in an existing transaction, using the same integration flow as customer modification.
  • Existing functionality remains unchanged and fully compatible.

Implement Telemetry logging for SCO services diagnostics

SCO service diagnostics and device logs can now be forwarded to Azure Application Insights via OpenTelemetry, enabling cross-terminal and cross-store analysis alongside existing local file logging.

  • A dual-pipeline architecture lets partners send telemetry to their own Application Insights instance while controlling which data categories are shared with the LS Retail portal.
  • The feature is disabled by default and fully configurable per environment through database settings.

Replace AutoMapper with Mapperly or manual mapping in SCO

AutoMapper dependency (affected by vulnerability GHSA-rvv3-g6hj-g44x) was removed. Mapping logic was replaced with [Mapperly / manual mapping].

LS Central for hotels

LS Central hotels is a separate app extending LS Central.

LS Central for hotels version 29 will be released at a later date.

In the coming days, version 28.2 will be released including some important fixes.

LS Central for pharmacies

LS Central pharmacies is a separate app extending LS Central.

Iceland

IS e-prescription list Web Template Add Last Valid Date

The E-Prescription list now displays the fields Last Valid Date and Purpose Text as columns.

AE National Insurance false triggers event error

Creating an AE Order for customers with foreign Insurance does not throw an error.

Rename Norway, Iceland Demo Data App

Norway and Iceland Demo Data apps were renamed.

Norway

EIK Delegate Request not sent when identifying customer before Final Control

There was an issue where identifying the customer again in POS before Final Control could prevent the EIK LagreFullmaktsdokumentasjon request from being sent when posting a prescription with a delegate. This was fixed.

Rename Norway, Iceland Demo Data App

Norway and Iceland Demo Data apps were renamed.

Sweden

Web Templates – Open Prescription Panel is not rendering correctly – SE AL

Technical issue to enhance the UI experience with no impact on the end-user experience.

Back bindings were added to load the Open Prescription Panel correctly.

Correction on available stock on prescriptions

Ensure that once the prescription is in the POS Prescription Queue and is waiting for posting, the inventory is not decreased twice.

United Kingdom

UK - Code Upgrade

UK Localization compiling on the last Pharmacy Version.

W1 Base

Continue button does not navigate to prescription flow

Open a prescription from a customer order again

  • Select Continue on the Prescriptions in process panel and the prescription now opens as expected. Before, the panel simply redrew itself, so you couldn't reach the prescription or final control from a customer order.

Return one step at a time when you cancel

  • Cancel out of a prescription or final control panel and you're back on the customer order line you came from. Before, you skipped a level and landed on the order list, losing your place in the pick.

RX lines disappear when confirming a ship CO in POS

Confirm a Customer Order that mixes prescription and retail items in the POS, and the picking panel now updates straight away. RX lines stay on screen with their new status and prescription order number, and retail lines move to To Collect. There is no need to leave the panel and reopen it.

CO panel is closing when confirming a shortage/cancelation

The solution applied now guarantees the Acceptance Criteria for this issue, meaning that the Panel stays open or closes when it should.

Quantity not refreshed on confirm in a PH CO

Confirm a customer order in the pharmacy picking panel and the quantities now stay right. Before, the Qty column dropped to zero and Remaining jumped back to the full order quantity the moment you pressed Confirm, so the panel looked as though nothing had been picked.

Leaving preascription screen is ending in the main POS screen

Leave a prescription you opened from a customer order, and you are back on the customer order, right where you were, not on the main POS screen.

  • This works whether you cancel straight out of the prescription or finish the pharmacy flow, approve it, and choose Pay later.

The "PICK" button for RX line should do pickall

When picking or shortageing or cancelling a RX line in a B2C order, the system should mark the entire quantity, because the RX lines cannot be handled partially from CO, any partial modifications should be done only from pharma flow.

Wrong store no used to check if SO should be created from CO

The check either to create a sales order or not for a ship customer order should be done on the store that delivers the order, not on the store that creates the order.

Prescriptions not sent to queue when posting a ship CO

When posting a sales order created form a CO that contains prescriptions, the prescriptions are sent to the Prescription Posting Queue.

Wrong processing of the payments when posting a ship order

Correct the posting of payments for ship CO containing prescriptions with insurance.

Improve display of quantities in Pick panel

Correct the way the PH quantities are displayed in POS.

Prevent posting of a RX SO created from CO if it is not processed first

Prevent posting a RX order before doing the pharma flow.

Wrong panel open when opening an approved prescription in POS

When opening an approved prescription from a customer order, the prescription is opened in Final Control panel.

Remove the field LSC PH Customer Order ID from Sales Line

Marked LSC PH Customer Order ID and LSC PH Cust Order Line No. as absolete.

Add new fields in PH Customer Orders

The following fields were added in customer order header and lines tables, as well in the webservices used by customer orders, to be used by customers for custom data:

Customer Order Header:

  • General Comment - Text250
  • Pharmacy Comment - Text250
  • Customer Comment - Text250
  • Generic Text1 - Text50
  • Generic Text2 - Text50
  • Generic Code1 - Code50
  • Generic Code2 - Code50
  • Generic Date1 - Date
  • Generic Date2 - Date
  • Generic DateTime - DateTime
  • Generic Boolean1 - Boolean
  • Generic Boolean2 - Boolean
  • Generic Decimal1 - Decimal
  • Generic Integer - Integer

Customer Order Lines:

  • Pharmacist Comment - Text250
  • Generic Text1 - Text50
  • Generic Text2 - Text50
  • Generic Code1 - Code50
  • Generic Code2 - Code50
  • Generic Date1 - Date
  • Generic Date2 - Date
  • Generic DateTime - DateTime
  • Generic Boolean1 - Boolean
  • Generic Boolean2 - Boolean
  • Generic Decimal1 - Decimal
  • General Decimal2 - Decimal
  • Generic Integer1 - Integer
  • Generic Integer2 - Integer

Insurance handling for prescriptions created from CO

When approving a prescription order created from a CO that is to be shipped, the system adds a payment line in CO using the Insurance tender type. If the prescription is reopen, the insurance payment line is deleted.

FMD - "Medicines Verification Log" Alert ID field is missing

Changes in W1 Extension:

  • New Alert ID field (Text[250]) on the Medicines Verification Log table, populated when the log entry is created from the pack verification response.
  • The Alert ID column is shown on the Medicines Verification Log page, next to NMVS ID and on Web Templates
  • The value is read from the raw data response returned for the single pack verification; if the response contains no alert identifier, the field is left blank.

Implement Pharmacy Customer Orders as part of the Pharmacy Admin Tasks

Activation of Pharmacy Customer Orders and necessary changes to existing Customer Order Controls were moved to Pharmacy Administration Tasks.

Customer Orders – Pharma Data Integration

Customer Orders for Pharma were streamlined to use the standard Customer Order functionality.

  • Pharma-specific prescription data is now stored directly on the Customer Order Line, replacing the previous dedicated Pharma tables.
  • This provides a more consistent approach for handling Pharma Customer Orders and simplifies the integration with existing Customer Order processes and functionality.

Sales Order not created for ship Customer Order

A new field Always Create Sales Orders for Ship Orders was created in Store card. When set, Click and Collect is turned off on ship-order lines of Customer Orders created through the web service, so the order is fulfilled by a Sales Order shipment.

CO not posted after collecting it in POS

The POS transaction is correctly created without any error and the prescription is correctly sent to the posting queue.

Also Customer order is being posted after finalizing the process.

Customer Orders - Refactor the OnBeforeAddPaymentToCustomerOrder

The subscriber OnBeforeAddPaymentToCustomerOrder was refactored. The subscription was changed to new publisher OnBeforeAddPaymentToCustomerOrderV2.

Also Calculation of Collected amount was changed regarding to new approach.

Customer Orders - Deprecate Status field from CO Tables

Status Field was obsoleted from current list of tables. The fields:

  • "LSC PH Total Amount" in Customer Order and Posted Customer Order table were obsoleted
  • "LSC PH Lines to Rx" in Customer Order and Posted Customer Order table were added
  • "LSC PH Calc. Cust. Order" in "LSC Inventory Lookup Table" were obsoleted ( new procedure was added instead: LSCPH_CalcOpenCustOrderQty)

CO Ship orders - empty sales shipments created

The Sales Shipment is not being created during the Customer Order Line confirmation anymore.

Cancel CO line when Prescription Order is created

Customer Order Cancellation must be handled through the associated Prescription Order (when it has one).

  • When a prescription line is deleted, marked as No Delivery, or the Prescription Order is deleted, the related Customer Order and Sales Order are updated accordingly.
  • The Customer Order line can be canceled based on configurable settings, and any linked Sales Order line is canceled by setting its quantity to zero. If no lines remain to be processed, the entire Customer Order is canceled.

New Customer Order Setup options allow the cancellation behavior to be configured separately for B2C and B2B orders:

  • Do Nothing
  • Ask for Confirmation
  • Cancel Customer Order Line

Marking a prescription line as No Delivery automatically cancels the linked Customer Order line and Sales Order line, regardless of the configured cancellation setting.

CO Ship orders - the RX flag missing in Sales Line

Fix: Pharmacy fields not populated on Sales Order lines created from Customer Orders

  • The event OnBeforeCreateSalesLineFromCustomerOrderLine on the Customer Order Header table is no longer raised after the LS Central refactoring to interface-based Customer Order Line processing.
  • This caused pharmacy-specific fields (RX flag, Customer Order Line No., VAT Posting Group) to not be set on Sales Order lines.
  • The subscriber was migrated to the OnPopulateSalesLineBeforeValidateUnitPrice event from codeunit LSC CustomerOrderLineEvents, which is actively raised during the new Sales Line population flow.

Confirmation dialog to delete prescription displayed when creating a CO

Confirmation dialog does not pop up anymore.

Wrong sourcing location for PH CO

During the Sourcing Location refactor, due to a deprecated XML version, a piece of code was commented out and never undone. That was corrected under this ADO Issue, and the functionality was recovered.

Go to #COB2CPHLINES panel when closing the prescription panel

There was an issue in the prescription panel flow: when leaving the prescription panel by completing the pharma flow, and choosing to continue with the customer order, the system now correctly returns the user to the CO panel (#COB2CPHLINES) instead of navigating to the list.

Stay in the same panel after creating the prescription order from CO

A new logic was implemented to keep the panel open. If there are still lines pending to be processed, the panel now remains open instead of closed.

Improvements on #COB2CPHLINES panel for PH Customer Orders

The Customer Order Pharma Lines Panel has been redesigned to align with the standard Customer Order Picking Lines Panel, providing a consistent experience while supporting Pharma-specific requirements.

Key changes include:

  • RX lines can only be selected or canceled for their full quantity. Partial selection or cancellation is not permitted.
  • Scanning or entering an RX item automatically selects the entire RX line.
  • RX lines cannot be canceled or marked as shortage once the related Prescription Order has been created.
  • FMD checks are automatically performed when scanning an EX item that requires FMD verification.
  • The Variant column has been replaced with Prescription No., with a status column available where applicable.

Improvements on #CO_LIST_PANEL panel for PH Customer Orders

Standardized customer orders flow by moving To Pharmacy and To RX into To Pick standard LS Central panel.

RX Order column was added to table view of customer orders in the POS so it is obvious if the table has RX lines or not.

Pharmacy Filtering

Complying with the new Qty. logic.

Pharmacy Update endpoint

UpdateOrderLine is now complying with the new Quantity logic.

Fix subscribers to events that LSC has moved

Pharmacy Subscribers to events that have been deprecated have been re-directed to correct events

Refactor of CreateB2BPrescriptionFromBO

Status checks have been deprecated, and CreateB2BPrescriptionFromBO and the further call stack were reviewed.

Refactor of FinalizeOrderB2BPharmacy

Refactor of FinalizeOrderB2BPharmacy.

Deprecate Status Field on Approval Subscribers

Approval subscribers should comply with the new logic and set the lines ready to be collected.

Deprecate Status Field on Collect Panel

The Pharmacy CO Collect Panel is now compliant with the new quantity logic.

CO RX(s) counter is not clickable

FactBox with counter is now allowing access to the Customer Orders related RX lines.

Customer Orders - Usage of LS Central Picking Panel

Changes were added:

  • Unused logic on Picking Panel was deleted.
  • Publishers were changed from obsoleted to new correct one, provided by LS Central team.
  • LSC CO Line Action was extended.

All Pharmacy Customer Orders endpoints under the new enum logic

The remaining Pharmacy Customer Orders endpoints are now following the same Enum logic as used on PHCOSourcingLocationListV.

Modify Pharmacy Customer Orders XmlPorts for the new status logic

The XMLPorts, from the description, are now adopting the new status‑handling logic introduced for Pharmacy Customer Orders.

Regression tests, using the endpoints, are needed.

Deprecated LS Central XMLPort LSCCOSourcingLocListV2XML

Pharmacy request is now complying with the LS Central Customer Order COSourcingLocationListV4Utils endpoint.

Deprecated LS Central event OnAfterAssignUpdateBufferShipping

The subscriber is now assigned to the event OnAfterAssignCompressedUpdateBufferShipping, which replaces OnAfterAssignUpdateBufferShipping.

Hardware Station for LS Central

New release option- a version of Hardware Station for LS Central, built on .NET 10 only for LS Central version 29 and later versions

Alongside the existing Hardware Station for LS Central, we are soft releasing a first version of a new build of Hardware Station for LS Central that is based on the latest .NET runtime. This new version only works with LS Central 29 or newer and will not work with LS Central version 28 or older. To install this version of Hardware Station there is a new installer and new Update Service package only for that version.

This new version is built on latest .NET runtime is future ready and our direction over time is for the .NET 10 build to become the only Hardware Station. Nothing changes for existing installations at customers sites today.

Existing installations at customers sites can stay on Hardware Station for LS Central that we are also releasing a regular update of — no action needed. It continues to be released with future LS Central versions, with no end date set yet. If you are on LS Central 29+ and want the newer .NET framework, or plan to use the authentication feature coming in the next minor release, you can install Hardware Station for LS Central (requires LS Central 29+) and try it out.

Note: You cannot have both versions of Hardware Station installed at the same time on a machine.

Enhancements and new features:

  • Released a new Virtual Station with improved UI, usability and new virtual devices like RFID and Serial
  • Hardware Station can now send diagnostic telemetry, including exceptions, to Azure Application Insights
  • Added option to print EFT Receipt objects directly through a new PrintReceipt endpoint
  • Calling EnableForWeight for scales that don't support Live Weighting now throws an exception
  • Device logs now follow the configured Hardware Station log path from Server Config
  • Management Portal now supports editing device configuration properties that were previously only available through XML
  • Support packages now include the PrintBuffer log and PDF folder
  • Printed PDFs are now retained in the /pdf folder for a configurable period through the Management Portal
  • Improved OPOS driver availability detection across legacy and current registry locations when the initial location contains no values
  • Hardware Station now rejects creating a device whose DeviceID duplicates an existing device of any type

Hardware Station for LS Central

Webhook listener for Adyen (new in Hardware Station for LS Central 29.0)

Hardware Station for LS Central now hosts a built-in webhook listener, so the Adyen payment plugin can receive Adyen webhook notifications when it runs in HWST. Previously this only worked in LS Pay Service.

  • Limitations: Referenced refunds and standalone token refunds still require webhooks in LS Pay Service. HWST does not support them.

Requires Hardware Station for LS Central 29.0 or later.

 

For plugin specific release notes in LS Pay version 2, please see

https://help.lspay.lsretail.com/Content/Release-Notes/Version-2/LS-Pay-Release-Notes.htm

KDS and Web KDS for LS Central

Multiple instances of Web KDS running on same server

With this new version it is possible to install multiple instances of the Web KDS on the same server. Each instance runs on separate port numbers with one SQL database per instance.

Configurable kitchen printing layout

Design the layout for printed kitchen orders right on the profile card.

  • You no longer need to write a JSON layout file by hand. Use the new printer content profile to choose what each line prints, how wide it is, where it starts, and how it is aligned.
  • Build the header and footer, plus item and modifier lines.
  • Set a profile on a printer's kitchen station, or pick a different one for individual print operations, such as a print button.
  • If you have just upgraded to version 29 and have no profiles yet, select Insert Default Printer Content Profiles to get ready-made layouts for order printing, single items, and delivery tickets with customer address.
  • Kitchen and delivery printouts can be tailored without editing files or involving developers. Different print buttons can use different layouts.
  • Affected components:

    • New printer content profile (general settings, header, footer, item lines, modifier lines) with list and card pages
    • Kitchen station card, to select the profile
    • Operation profile, to override the profile per print operation
    • Import/Export for the new profile
  • Configuration / setup changes:
    • New Kitchen Printer Content Profile setup, set up like the Chit, Card, and Line content profiles.
    • Profile selection on the kitchen station and operation profile.

Action required by partners:

  • After upgrading to v29, select Insert Default Printer Content Profiles on the Kitchen Printer Content Profile list or the Kitchen Station card. Then select a profile on each kitchen station that prints, and on any print operation that needs a different layout. Existing hand-written layout files from v28 and earlier may need to be recreated as profiles.

New design for configuration pages

All the configuration pages of the Web KDS were redesigned for better usability during Web KDS setup and troubleshooting. The new pages match the look of the rest of the product. The main page now has tooltips on fields and buttons.

Making possible to exclude error from printer when Printer has recovered in WebKDS

Printer recovery events are now tracked in their own dedicated queue (PrinterStatusMessage in EventTracker) instead of being mixed into the generic event/error queue.

Generate support package to help on Debugs

Added new API endpoint GET api/Download/CreateSupportPackage that returns a single zip bundling the service configuration sections (FeatureManagement, IntervalTime) from appsettings.json, the five profile/config JSON files (LayoutProfiles, Profiles, Screens, Stations, Stores), all log files from the Logs/ folder, and the webservice connection list with all credential fields (Password, ClientSecret, ApiKey, WebPassword) cleared. Simplifies diagnostic data collection for support engineers.

Update migration tool for version 27 and 28

The MigrationTool from to Standard KDS to the Web KDS was improved and more actual data was migrated.

Create a Endpoint to test API Key with BC

New API key validation endpoint for KDS Service (backend only - LS Central side pending separately).

  • KDS Service now includes a new optional POST endpoint (api/Kot/CheckApiKey) that allows callers to verify whether an API key and instance ID combination is active and properly registered. This endpoint performs the same validation checks used to protect all KDS operations, providing a dedicated way to confirm credentials without submitting an actual KOT request. The check runs synchronously against the current API key registry with minimal latency.
  • This is a new opt-in feature with no impact on existing KDS behavior. The ReceiveKot endpoint and all other KDS functionality remain completely unchanged.

Date format field too small

You can now use up to 50 characters for date and time format strings in the Kitchen Printer Content Profile. The Date Format field in the Header, Footer, Item Line, and Modifier Line sections accepts longer values, so you can define detailed time formats with seconds, milliseconds, or regional separators without truncation.

Action required by partners:

  • None. Existing format strings continue to work unchanged.

Assign Station needs to work with CHIT

When the Assign station is defined as CHIT it should also work as it should.

Adding an offline tool to help connect

A tool was added to help the configuration process, will show some extras errors.

Adding logs on Request fails

A more precise log to get errors was added.

Coursing

Coursing functionality enables the waiting staff to control the flow of the service course by course. Each course can have tasks, such as placing the cutlery or serving bread to the table and each course can be sent to production in the kitchen separately.

The coursing functionality in previous versions was managed from the hospitality point of sale and required the standard KDS, which only supported this for printing. In the new version a coursing overview station type and station role has been added to the kitchen station setup, conductor station with coursing overview role. This station will include the same functionality as the coursing overview in the hospitality point of sale. This way the conductor can manage the flow of the orders from the kitchen or a separate station and does not need to manage this from the point of sale.

Note: You need to install Web KDS v29.0.xxx to use this feature.

Label Management for LS Central

Print and manage shelf labels with the new Label management for LS Central extension. It creates labels per price group instead of per store, so large chains keep far fewer label records and generate labels faster. You can turn shelf labels on or off for each store.

Connect a store to Pricer electronic shelf labels (ESL) to send item updates straight to the labels. When you onboard a store, you can send all of its items at once. Labels also show discount prices and prices in other currencies.

Your current shelf label printing keeps working until you install the extension. There are no breaking changes.

Action required by partners:

Install Label management for LS Central to use price-group labels, per-store enablement, and Pricer ESL. To use Pricer, enter the connection details on the Pricer Integration Setup page and the Pricer store ID on each store. Then run Test Connect and test end to end in your own environment before you rely on it in production.

See: Price Group Labels

Telemetry Framework for LS Retail Solutions

LS Central now ships a dedicated LS Telemetry framework that sends structured telemetry to Azure Application Insights.

  • From the new Telemetry Setup page, you can define how much detail is logged with a default trace level, and override that level for individual apps — so you dial up detail on the one module you are troubleshooting and keep the rest quiet.
  • Extension developers get one consistent way to emit telemetry, with built-in correlation and duration tracking to measure how long an operation takes.

See: Telemetry Setup Page

POS Commands

The following POS commands are new in LS Central 29.0:

ACT_CHANGEQTY The activity in the journal lines is ready for payment, and the user needs to change the quantity.
ACT_CHANGEPERSONS

The activity in the journal lines is ready for payment, and the user needs to change the no. of persons.

SPACE

Adds a single space to the current input. BACKSPACE command changed, so it is only handled in the PosClient code, not in AL.

MSEAT-CLEARSEATING Un-seat a never-ordered group, or clear a paid and served group, at a dining table. Used on a multiple seatings dining table: un-seats the selected group if it has not ordered anything yet, or clears the selected group if it has paid and all its kitchen order tickets have been served. Place the command on the Multi-Seating Overview Group template menu of the dining area; the button is greyed out if the group has an unpaid order, or a kitchen order ticket is not served yet. You can also place it on the Seated and Occ. Order Paid pop-up menus in the service flow.
MSEAT-RESERV-SHOWPNL  Show upcoming reservations for a dining table. Opens the Upcoming Reservations Table Popup panel for the selected dining table on a multiple seatings dining area, listing the reservations expected at that table. Place the command on the Free Pop-up Menu ID and All. Free-Res. Pop-up Menu ID (current and future) of the hospitality service flow, or on the Multi-Seating Overview Group or Multi-Seating Allocation Group template menu of the dining area.
MSEAT-RESERV-STATUS  Change the status of a reservation shown in the Upcoming Reservations Table Popup panel. Marks the selected upcoming reservation as a no-show (parameter NO-SHOW), or cancels it (parameter CANCEL), on a multiple seatings dining area. Place the command on the Multi-Seating Reservations Group template menu of the dining area, or on the Upcoming Res. Pop-up Menu ID of the hospitality service flow.
MSEAT-SHOWMENUPOPUP 

Show the pop-up menu for a multiple seatings group or reservationOpens a pop-up menu of further actions for the selected seating group or reservation. The pop-up menu is set up per state in the hospitality service flow, so it can offer different actions depending on the state of the group or reservation.

The command runs on whichever multiple seatings pop-up panel is open. Place it on a button of the group template menu of each panel that offers a pop-up menu: Multi-Seating Overview Group, Multi-Seating Allocation Group and Multi-Seating Reservations Group menu of the dining area.

See POS Commands in the LS Central Help and the corresponding Excel list with filters for a complete list of POS commands.

Fixed Issues

Links to quickly navigate this section:

LS Central Replenishment for LS Central Pharmacies
KDS and Web KDS Hardware Station eCommerce
Fashion

Bookings

Restaurants
POS    

Expand All / Collapse All button:

LS Central

Fashion

POS

Restaurants

Replenishment for LS Central

Bookings for LS Central

eCommerce for LS Central

LS Central for pharmacies

 

Hardware Station for LS Central

KDS and Web KDS for LS Central

Hotfixes

See the LS Central Help for information about hotfixes that have been released since the previous release.