Skip to main content
Arrow Backward IconBack to Overview

Core 2.0.724

February 13, 2024

Released on all test and acceptance environments on February 13, 2024

Will be released to production in EUW and ASE on February 19, 2024*

Will be released to production in CUS on February 20, 2024*

release notes image

Word in advance‍

πŸ”‘ Core drop notes structure

In our continuous effort to make our Core Drop more easily digestible, we've made the following changes to its format:

  • We try to categorize all drop entries as best we can by the closest common denominator, e.g. Extension point entries, or Services. This will make it a little easier for you to discern what's important to you.
  • Although the difference can be subtle, we try and categorize the entries on whether they're new additions πŸ†• or improvements βœ…
  • The introductory text for each entry will be more concise, with Detailed information available via the Expansion bar.


Incorporating Subscription name in ReturnableStatus​

The ReturnableStatus extension point now allows for inserting the name of a subscription.

This will allow you to fine-tune when a customer is allowed to return items based on their specific subscriptions, instead of any subscriptions (which might have been limited to a newsletter).

Script sample
Sample with a subscription name

extend ReturnableStatus
if Order.Customer.Subscriptions.HasAny line -> line.Subscription.Name = 'New Black' then
set output.IsReturnable to true
set output.Reason to 'Right away!'
set output.IsReturnable to false
set output.ChildrenAreReturnable to false
set output.Reason to 'Can't do that!'

In this case, the following rules apply:

  • When no customer is added to the order, the IsReturnable = false and "Can't do that!" reason will be applied
  • When a customer is added to the order, but doesn’t have the 'New Black' subscription on it, the IsReturnable = false and "Can't do that!” reason will be applied
  • When a customer is added with the 'New Black' subscription, the IsReturnable = true and "Right away!” reason will be applied

Resetting coupon usage count​

The GenerateUserDiscountCoupon extension point now allows for resetting a coupon usage count. Essentially this makes it possible for users to enjoy a certain discount again after a certain amount of days, as specified by you in the script.

Script sample

"Name" = "Generate user discount coupon",
"Dialect" = "Extension",
"IsActive" = "true",
"Source": "extend GenerateUserDiscountCoupon

set discountBackendID to ''

if (IsGenerated = false or DaysSinceLastGenerated > 4) then
set discountBackendID to '{discountBackendID}'

output discountBackendID"

In this case:

  • DaysSinceLastGenerated = DateNow minus the LastCouponGeneratedOn
  • IsGenerated = GeneratedCouponCount != 0 or LastCouponGeneratedOn is set

Private Scripts​

We've made some back-end changes that will facilitate the direct creation/editing of scripts outside of the Scripting chapter itself.


In practice, this will allow Admin Suite to offer the following:

  • Chapters which supports the linking of scripts will allow for either adding an existing ScriptID (as is currently the case) but also allow for the in-line creation of a new script.
  • If you opt for creating a new script, this script will be considered private, which means that it will only live in that specific chapter (read: not be visible in the Scripting overview itself). Edits therefore will only be possible there as well.
  • By not being available in the general script overview, this will help prevent edits to scripts which are used for specific purposes

Note that the front-end work is still underway.

Back-end details
  • Added IsPrivate on scripts with false as default.
  • Added property IsPrivate to CreateScript as boolean.
  • GetScripts automatically filters out private scripts.

Specific topics‍

πŸ†• More properties in the TerminalReport​

The TerminalReport stencil has been expanded with additional properties.

These properties are optional.


You can now optionally include the following three properties:

  • "OpeningAmount": "decimal", - the opening amount of the cashdrawer
  • "ClosingAmount": "decimal", - the closing amount of the cashdrawer
  • "CashDepositsTotalAmount": "decimal" - the total amount of the bank deposits

Keep in mind that these properties are not added by default. In other words: to use them, you need to add these to the templates in production.

βœ… Case management​

To streamline the management of case statuses, we've made some slight changes.

  • We've reduced the available statuses to:
    • New
    • InProgress
    • Completed
    • Cancelled
  • Any other status will be marked as IsSystem and not be displayed in the front end

πŸ†• Product requirements in SFS pack tasks​

Ship from Store tasks will now be able to include a pack task when the order contains products with requirements. To that end, StartShipFromStoreTask now returns the giftwraps and service lines.

βœ… Email validation​

To prevent potential security risks, we are making several back-end changes when it comes to email validation.

Front end changes are still underway.

  • GetUser will now return the validation status of a user's email address by means of the EmailAddressValidated property
    • The validation value will change when it is validated and when an email adress changes
  • ValidateUserEmailAddress will now send a 4-character alphanumeric code as a token
  • ConfirmUserEmailAddressValidation will validate an email adress when receiving the aforementioned token


βœ… Italy: FiscalID and RecipientCode in uppercase​

For the SDI in Italy, the value input for the fields FiscalID and RecipientCode on POS are now by default in uppercase.

βœ… Removal of Payment proof​

Our support for Payment proofs is no longer necessary due to the move to thermal receipts and as such we are removing its corresponding settings.

  • PaymentProof:Enabled
  • PaymentProof:AutoPrint


πŸ†• FulfillmentOrganizationUnitBackendID in GetOrder​

We've introduced a new property to the GetOrder service call: FulfillmentOrganizationUnitBackendID.

This property will only be displayed when a FulfillmentOrganizationUnitID is available, which is the case for orders of type Order and Delivery.

πŸ†• Translatable display values for configurable properties​

We've introduced a new property, ConfigurablePropertyDisplayName, alongside ConfigurableProperty in the GetConfigurableProductDetail service for configurable properties.

This enables the return of a translated property based on the Accept-Language, ensuring that the specific content layer receives the appropriate display name.


You might use EditProductPropertyType to introduce a new display name.

"ID": "color",
"Edits": [
"LayerID": 15,
"Content": {
"display_name": "Couleur"

This changes the display value for color into Couleur in contentlayer 15 (which is ImportProducts fr).

When calling GetConfigurableProductDetail with Accept-Language : fr, this now returns the translated property that is relevant for this specific content layer:


"Configurable": {
"ProductID": 288,
"Type": 16384,
"Status": 0,
"LogicalLevel": "root",
"ConfigurableProperty": "color",
"ConfigurablePropertyDisplayName": "Couloure",
"Values": [


The same logic as other content culture mapping / layers applies here, which means that requesting something that is not mapped will fall back to whatever value was defined (if any) on the β€˜cultureless’ ImportProductBase Layer.

πŸ†• BackendReference in GetOrder​

When BackendID is used for regular products and bundles in the PushSalesOrder service, we include it as a BackendReference in the GetOrder order line.


πŸ†• Hide cancelled lines in GetReturnableStatusForOrder​

To accommodate our front ends in hiding cancelled order lines from a return order overview, we've added a new parameter to the GetReturnableStatusForOrder service call: HideCancelledLines.

For now this property is set to false, but our various Apps will include this in upcoming releases.

πŸ†• Filtering for CountryIDs in ListAddressBook​

To facilitate the pre-filling of default addresses for registered customers, we've added an additional property to ListAddressBook: CountryIDs.

This way, a front end will soon be able to pre-fill a saved address if the customer is ordering in the same country as the saved address.

πŸ†• NameOrBackendID property​

Multiple services now also include the NameOrBackendID field, which will allow for filtering on both Name and BackendID at the same time, making it easier to use filters on a front end.

Included services
  • ListOrganizationUnitSets
  • ListOrganizationUnitSummaries
  • ListOrganizationUnits
  • ListOrganizationUnitsDetailed

βœ… Performance improvements​

We've introduced various small improvements to services.



Changes made to App settings will now be returned immediately in the response of GetApplicationConfiguration.


The ListEmployeesForOrganizationUnit service call has been made considerably more efficient and faster. This will especially help when choosing a different SoldBy user in the POS.

limit_large response warning headers​

To remind users not to use List services in ways they're not meant to, we are now including limit_large response warnings headers when using a page size at or above 500.

Making GetShoppingCart sticky​

We've made GetShoppingCart a little more sticky to prevent situations where it could be spammed. It will now return the same, newly generated order for one minute.

Transition to ListCouponsByQuery​

In step 6 of a discount, namely coupons, the service being called is now ListCouponsByQuery instead of the GetDiscountCoupons.


πŸ†• Vertex Divisions​

To account for the option to create subdivisions for TaxPayers in Vertex, we've introduced a new setting: Vertex:SellerDivision. You will need to set the came Code as what you have configured for it on Vertex.

This is used in combination with Vertex:SellerCompany.


  • Add some safeguards to prevent the possible creation of scripts that would loop recursively.
  • Scheduled task details will now properly display its new information after being updated.
  • We've made improvements to our ElasticSearch queries, allowing for more consistent results.
  • We made sure that even if you entered a (valid) IP address for a device that was configured as a mock device, EVA will not try to reach that IP address.
  • The EVA Pay mail for repair orders that need to be shipped and have an open amount will now be triggered properly.


⚑ Removed from typings​

These deprecations are now halfway through their deprecation timeline. As of now, these services and/or fields will no longer be exposed by our typings.

  • LowΒ PriceListID is deprecated and will be removed in 2.0.728: PriceListAdjustment shouldn't be moved from one pricelist to another.
    • UpdatePriceListAdjustment.PriceListID

Release dates may vary​

The exact date for deploying a Core release to production environments may vary. See How we handle Core releases for more details.