Skip to main content
Arrow Backward IconBack to Overview

Core 2.0.742

June 18, 2024

Released on all test and acceptance environments on June 18, 2024

Will be released to production in EUW and ASE on June 24, 2024*

Will be released to production in CUS on June 25, 2024*


release notes image

Breaking‍

No breaking changes.

Settings & functionalities‍

πŸ†• Matching settings to functionalities​

A new batch of settings have had functionalities attached.

You can read more about the details below, or check the affected settings directly.

Details

Context: We intend for each setting to be linked to a specific functionality within EVA. This ensures that only designated roles will have the ability to modify certain settings, allowing for more precise control over your environments.

Example: For instance, the setting APIGiftCard:BaseUrl will be associated with the functionality named GiftCardConfiguration.

Implementation Plan: Given the extensive nature of EVA's settings (approximately 1500 in total), we will be rolling these out in batches, once every EVA Drop - effectively once every four weeks. Several batches of these adjustments have already been included in the following EVA Core drops:

  • 2.0.726
  • 2.0.730
  • 2.0.735
  • 2.0.738
  • 2.0.742

Timeline: This new batch of changes is now available on your Test and Acceptance environments. These changes will be deployed to Production environments next week with EVA Core drop 2.0.743 (June 25). We anticipate completing this process over approximately 4 more EVA Drops until all settings are included.

Action Required: We encourage you to review this batch of settings, which are already documented on our Docs. Ensure that the roles assigned within your organization align appropriately with the functionalities necessary for access to these settings.

List of settings combined with functionalities in this EVA Core Drop
SettingFunctionality
OpeningHours:EnableOpeningHoursTemplatesOrganizationUnitSettings
OpeningHours:ImportAsExceptionsOrganizationUnitSettings
OrderAdvanceShipmentNotificationHandlerOrderFulFillments
OrderExport:DaysToCommitBeforeRequestedDateOrderFulFillments
OrderExport:DaysToExportBeforeRequestedDateOrderFulFillments
OrderExporterOrderFulFillments
OrderExportValidatorOrderFulFillments
OrderFulfillment:AllowPartialCancellationOrderFulFillments
OrderLine:LineActionType:OrderWhenOutOfStockOrders
OrderLineCancelled:Mail:TimeoutOrders
OrderLineCancelled:RequestExternalCancellationsOrders
OrderLineCommitment:CommitmentDurationOrders
OrderLineCommitment:EnsureStockOrders
OrderLineCommitment:ExtendDurationOnPendingPaymentOrders
OrderLineCommitment:MaxWaitForPendingPaymentsDurationOrders
OrderLineCommitment:MomentOrders
OrderLineCreator:SetDefaultShippingMethodOrders
OrderLineMaximumQuantityOrderedOrders
OrderMaxLinesToReturnOrders
OrderQuantityModificationValidatorOrders
OrderRouterNone
Orders:AllowCartsToStayOpenOrderStatus
Orders:AllowMixedOrders
Orders:AllowOrderLinesForOtherStoresOrders
Orders:Cancellations:RefundOpenAmountAfterCompleteCancellationOrderStatus
Orders:Cancellations:RefundOpenAmountAfterPartialCancellationOrderStatus
Orders:Carts:AllowQuantityOrderedReductionsOrders
Orders:CreatePurchaseOrderFromReturnToSupplierOrderPurchaseOrders
Orders:CreateSalesOrderFromPurchaseOrderOrders
Orders:Default:AllowPartialFulfillmentOrderFulFillments
Orders:DisallowAttachBusinessCustomerOnceCompleteOrders
Orders:Display:CombineBundlePriceOnParentOrders
Orders:Display:ItemCount:CountBundleProductsAsOneOrders
Orders:Display:ShowFreeDiscountProductWithOriginalPriceOrders
Orders:Display:ShowOrignalPriceOrders
Orders:Display:ShowUnitPriceOrders
Orders:Display:SumOnFreeParentOrders
Orders:Display:UseNetAmountsOrders
Orders:Lines:UnitPriceCorrections:CreateSeperateLineOrders
Orders:Lines:UnitPriceCorrections:OnlyOnManualReturnLinesOrders
Orders:Lines:UnitPriceCorrections:RequireReasonOrders
Orders:Display:ShowTotalAmountsOrders
Orders:Display:ShowFreeProductsAsFreeOrders
Orders:Display:ShowEcoTaxOrders
OpeningHours:EnableOpeningHoursTemplatesOrganizationUnitSettings
OpeningHours:ImportAsExceptionsOrganizationUnitSettings
OrderAdvanceShipmentNotificationHandlerOrderFulFillments
OrderExport:DaysToCommitBeforeRequestedDateOrderFulFillments
OrderExport:DaysToExportBeforeRequestedDateOrderFulFillments
OrderExporterOrderFulFillments
OrderExportValidatorOrderFulFillments
OrderFulfillment:AllowPartialCancellationOrderFulFillments
OrderLine:LineActionType:OrderWhenOutOfStockOrders
OrderLineCancelled:Mail:TimeoutOrders
OrderLineCancelled:RequestExternalCancellationsOrders
OrderLineCommitment:CommitmentDurationOrders
OrderLineCommitment:EnsureStockOrders
OrderLineCommitment:ExtendDurationOnPendingPaymentOrders
OrderLineCommitment:MaxWaitForPendingPaymentsDurationOrders
OrderLineCommitment:MomentOrders
OrderLineCreator:SetDefaultShippingMethodOrders
OrderLineMaximumQuantityOrderedOrders
OrderMaxLinesToReturnOrders
OrderQuantityModificationValidatorOrders
OrderRouterNone
Orders:AllowCartsToStayOpenOrderStatus
Orders:AllowMixedOrders
Orders:AllowOrderLinesForOtherStoresOrders
Orders:Cancellations:RefundOpenAmountAfterCompleteCancellationOrderStatus
Orders:Cancellations:RefundOpenAmountAfterPartialCancellationOrderStatus
Orders:Carts:AllowQuantityOrderedReductionsOrders
Orders:CreatePurchaseOrderFromReturnToSupplierOrderPurchaseOrders
Orders:CreateSalesOrderFromPurchaseOrderOrders
Orders:Default:AllowPartialFulfillmentOrderFulFillments
Orders:DisallowAttachBusinessCustomerOnceCompleteOrders
Orders:Display:CombineBundlePriceOnParentOrders
Orders:Display:ItemCount:CountBundleProductsAsOneOrders
Orders:Display:ShowFreeDiscountProductWithOriginalPriceOrders
Orders:Display:ShowOrignalPriceOrders
Orders:Display:ShowUnitPriceOrders
Orders:Display:SumOnFreeParentOrders
Orders:Display:UseNetAmountsOrders
Orders:Lines:UnitPriceCorrections:CreateSeperateLineOrders
Orders:Lines:UnitPriceCorrections:OnlyOnManualReturnLinesOrders
Orders:Lines:UnitPriceCorrections:RequireReasonOrders
Orders:Display:ShowTotalAmountsOrders
Orders:Display:ShowFreeProductsAsFreeOrders
Orders:Display:ShowEcoTaxOrders
Orders:Reservations:AutoPlaceOnPaidNone
Orders:Reservations:ClickAndCollectEnabledNone
Orders:Reservations:RequiredReservationTimeNone
Orders:Reservations:UseStockReservationTasksOnReceiptNone
Orders:Returns:AllowCrossBorderReturnsReturnOrders
Orders:Returns:DefaultExporterReturnOrders
Orders:Returns:DenyInNonShipFromShopReturnOrders
Orders:Returns:DenyReturnsInNonReturnOrganizationUnitReturnOrders
Orders:Returns:HandleReturnOrderGracefullyReturnOrders
Orders:Returns:NonReturnableProductPropertyReturnOrders
Orders:Shipment:Receipt:AllowOvershipmentShipmentSettings
Orders:Shipment:Receipt:AllowSurplusShipmentSettings
Orders:Shipment:Receipt:CancelDeficienciesShipmentSettings
Orders:Shipment:RefundOpenAmountAfterShipmentShipmentSettings
Orders:Shipment:UsePaymentValidationShipmentSettings
Orders:TaxExemptionEnabledOrders
Orders:UseNewCalculationOrders
Orders:VerifyPushedSalesOrderOrders
OrderTaxCalculatorNone
OrganizationUnits:DefaultToAlwaysOpenOrganizationUnitOpeningHours
P4M:APIKeyNone
P4M:ClientIDNone
P4M:UrlNone
P4M:UseAccountIDNone
P4M:WorkStationIDNone
Paazl:Api:BaseUrlCarriers
Paazl:Api:PasswordCarriers
Paazl:Api:WebshopIDCarriers
Paazl:App:TimeoutCarriers
Paazl:DeliveryEstimateCarriers
Paazl:EnabledCarriers
Paazl:ShippingCosts:LimitShippingCosts
PaymentMethods:PaymentTypeAvailabilityByOuSetTypePaymentTypes
Payments:AllowOnPaidOrdersPaymentDetails
Payments:AllowRefundsOnPaidOrdersRefunds
Payments:Manual:UseSingleTypeNone
Payments:TriggerCancellationsAfterLastCapturePaymentTransactionCaptures
Payments:ValidateRequirementsPaymentDetails
PIM:ApplyAssortmentDateFiltersProductContent
PIM:UseStockPluginProductContent
PIM:UseSynonymPluginProductContent
PIM:UseNewPricingIdentifierProductContent
PIM:ProductContentProvider:ReadFromDiskBatchSizeProductContent
PIM:Composition:VariationPropertiesToCopy:ChildrenProductContent
PIM:Composition:VariationPropertiesToCopy:SiblingsProductContent
PIM:Composition:VariationPropertiesToCopyLimitProductContent
PIM:ApplyPublicationsStatusFiltersForEmployeesProduct
PIM:Autocomplete:ConfigProduct
PIM:Autocomplete:FuzzinessProduct
PIM:Composition:BatchesPerMessageProduct
PIM:Composition:ComposedProductConsumersProduct
PIM:Composition:ProductsPerBatchProduct
PIM:ContentImport:DefaultColumnsProduct
PIM:DefaultBackendSystemIDProduct
PIM:DefaultFilterProviderProduct
PIM:DisplayValue:AppendBrandProduct
PIM:DisplayValueFieldProduct
PIM:ExcelImport:KeepFilesProduct
PIM:HideProductsWithoutPrimaryImageProduct
PIM:HideUsedUpProductsProduct
PIM:ImporterEditBatchSizeProduct
PIM:OrganizationVisibilityProviderProduct
PIM:Product:IsNew:DaysProduct
PIM:QuickLayerNameProduct
PIM:RequireSalesPriceProduct
PIM:StopwordsProduct
PlaceOrder:SendConfirmationMailOrderOptions
PostcodeNL:AccountIDNone
PostcodeNL:BaseUrlNone
PostcodeNL:KeyNone
PostcodeNL:SecretNone
PostNL:Api:ApiKeyCarriers
PostNL:Api:BaseUrlCarriers
PostNL:Api:CustomerCodeCarriers
PostNL:Api:CustomerNumberCarriers
PostNL:AvailableOptionsCarriers
PostNL:SameDayCutOffCarriers
PostNL:Sftp:HostCarriers
PostNL:Sftp:PasswordCarriers
PostNL:Sftp:UsernameCarriers
PostNL:ShippingCosts:AboveLimit:EveningShippingCosts
PostNL:ShippingCosts:AboveLimit:NormalShippingCosts
PostNL:ShippingCosts:AboveLimit:PickupShippingCosts
PostNL:ShippingCosts:AboveLimit:SamedayShippingCosts
PostNL:ShippingCosts:AboveLimit:SundayShippingCosts
PostNL:ShippingCosts:EveningShippingCosts
PostNL:ShippingCosts:LimitShippingCosts
PostNL:ShippingCosts:NormalShippingCosts
PostNL:ShippingCosts:PickupShippingCosts
PostNL:ShippingCosts:SamedayShippingCosts
PostNL:ShippingCosts:SundayShippingCosts
PostNL:ShippingCosts:SwapShippingCosts
PostNL:SundaySortingCarriers
Pricing:IgnoreInitialChangesPricing
Pricing:ValidateAdjustmentsPricing
Pricing:UpdatePricesOnOrdersPricing
Pricing:PricingGroupFromCustomFieldPricing
Pricing:PricingGroupFromCustomFieldPricing
Pricing:UpdatePricesOnOrdersPricing
Pricing:ValidateAdjustmentsPricing
Primer:EstimateDeliveryDateForOutOfStockProductsNone
Primer:ProductBundlesInStockFeedStockFeed
PrintPriceLabelTask:AutoGeneratePriceLabels
PrintPriceLabelTask:GenerateOnPriceChangePriceLabels
PrintPriceLabelTask:MaxProductsPerTaskPriceLabels
PrintPriceLabelTask:PrintLabelPerUnitPriceLabels
ProduceReceipt:ReprintReturnedOrderNone
ProductBundleAvailabilityCalculationMethodNone
ProductSearch:MaxAggregationValuesNone
ProductSearch:MaxPageSizeNone
ProductSearch:PageSizeNone
PubliclyExposeStockQuantitiesStock
PurchaseOrder:ReceiveMethodReceivePurchaseOrderShipment
PurchaseOrderExporter:MailToBccNone
PurchaseOrderExporter:MailToCcNone
PushNotifications:SenderNone
ReassignCanceledReservations:CutOffInDaysNone
ReceiveShipmentTasks:EnabledReceiveShipments
Refund:DisableRefundsWithoutOriginalTransactionRefund
Refund:LimitToOpenAmountRefund
Refund:SkipOpenAmountCheckInAvailableMethodsRefund
RefundAfterReservationOrderLineCancelledRefund
Replenishment:AlwaysReplenishToRunRateReplenishments
Replenishment:DistributionTreeReplenishments
Replenishment:IgnoreSupplierStockReplenishments
Replenishment:MinimumOrderProductQuantityReplenishments
Replenishment:OutputsReplenishments
Replenishment:RunRate:LookbackDaysReplenishments
Replenishment:RunRate:ReplenishmentDaysReplenishments
Replenishment:RunRateProviderReplenishments
Replenishment:UseReplenishmentProductsReplenishments

Properties‍

πŸ†• OrderCustomStatus and OrderCustomType extension points​

We now expose the BackendID of the OrderCustomType and OrderCustomStatus extension points.

Details

By introducing this property in these extension points, you will be able to create scripts that have a state machine structure. In other words: you can better customize your scripts to transition from any possible order state to another throughout the script, based on your own conditions and actions.

extend OrderCustomStatus

set status to '{backendID1}'

if Order.OrderCustomStatusBackendID = '{backendID1}' then
set status to '{backendID2}'
end

output status

πŸ†• RepairOrderID in ListRepairs​

We've added the RepairOrderID property to ListRepairs to allow for filtering.

πŸ†• LoyaltyProgramName and LoyaltyProgramDescription in GetOrder​

The response of GetOrder now also includes LoyaltyProgramName and LoyaltyProgramDescription if a loyalty program is added via AttachLoyaltyProgram.

πŸ†• TotalQuantityToShip in ListShipmentLines​

The service ListShipmentLines now includes TotalQuantityToShip to for use by the Ordered column in the Receive goods chapter.

πŸ†• OrganizationUnitName in ListInvoiceExports​

We added OrganizationUnitName to the ListInvoiceExports service for the sake of displaying the OU name in the upcoming E-invoicing chapter.

Settings‍

πŸ†• Discounts:PickProductAction:FilterOptionsOnAssortment​

Currently, any configured welcome gifts span across all countries with the same currency.

To allow for further fine-tuning, you can now set Discounts:PickProductAction:FilterOptionsOnAssortment to true to limit the configured welcome gifts based on the assortment of OU the user's logged into.

This works in tandem with Discounts:PickProductAction:FilterOptionsOnStockAvailability, which limits the welcome gifts based on available stock.

Scripting‍

πŸ†• GenerateRepairCancellationDiscountCoupon extension point​

To be able to offer customers coupons for repairs that are cancelled, for example because they turn out to be too costly, we are introducing the GenerateRepairCancellationDiscountCoupon extension point.

Details

The following values of the script are most relevant:

  • Repair and Repair.CustomFields
  • Repair.Order and Repair.Order.CustomFields
  • Repair.Case and Repair.Case.CustomFields
  • Repair.Case.Customer

The script returns the BackendID of a discount that should be active in the organization unit of the repair with Coupon as its trigger. The coupon value itself should be customized by means of repair custom fields, which can then be selected in the flow.

A generated discount is added as CouponCode to the RepairCancelled email stencil template.

Sample

extend GenerateRepairCancellationDiscountCoupon

output 'RepairCancellationCoupon200'

if Repair.CustomFields.CancellationCoupon = '200,-'

then output 'RepairCancellationCoupon200'

else if Repair.CustomFields.CancellationCoupon = '300,-'
then output 'RepairCancellationCoupon300'

else if Repair.CustomFields.CancellationCoupon = '400,-'
then output 'RepairCancellationCoupon400'

else if Repair.CustomFields.CancellationCoupon = '500,-'
then output 'RepairCancellationCoupon500'

else if Repair.CustomFields.CancellationCoupon = '100%'
then output 'RepairCancellationCoupon100%'

end

βœ… Skipping required custom fields​

You can now use scripting to allow users to skip Order custom fields which are configured to be required.

Details

The OrderCustomFieldEligibility script now allows you to customize scripts that allow users to skip required order (line) custom fields when they match your conditions.

In practice it means that if no script is configured to affect this, order custom fields which are required will remain required. Furthermore, they remain required if there is a script available but the script's conditions are not matched.

If a script is available and its requirements are met, the custom field's IsValid property will be set to true, meaning that the custom field does not need to be filled in by the user.

extend OrderCustomFieldEligibility

if Order.UserAgent has value then
set output.IsRequired to false
end

Other topics‍

πŸ†• Cases Data lake export​

We've added an additional Data lake export: Cases.

Details

The file path for this new export is as follows: /cases/Year/Month/Day/

No specific cron task is required, the export is done by default.

Sample

{
"GenerationTime": "2024-06-14T14:06:44.7800549Z",
"ID": "string",
"Priority": {
"ID": "string",
"Name": "string",
"Description": "string"
},
"Status": {
"ID": "string",
"Name": "string",
"Description": "string"
},
"Topic": {
"ID": "string",
"Name": "string",
"Description": "string"
},
"Title": "string",
"Description": "string",
"OriginatingOrganizationUnitID": "string",
"CustomerID": "string",
"CustomerCountryID": "string",
"CustomFields": [
{
"CustomFieldID": "string",
"Name": "string",
"BackendID": "string",
"Value": "string"
}
],
"Interactions": [
{
"ID": "string",
"Type": {
"ID": "string",
"Name": "string",
"Description": "string"
},
"Text": "string"
}
]
}

The External user search functionality has been expanded with a Get method to extract the details of a user.

πŸ†• Price list per order line in Data lake​

The Lines object of the Orders Data lake export now also contains a UnitPricePriceListID per order line.

Fixes‍

  • Fixed an issue where a loop was introduced which cconsequently spiked order exports.
  • Returns performed in the Middle-East will no longer turn into exchange orders, but be regular returns instead.
    • partial returns without retake will show the amount on the invoice
  • Fixed an issue which lead to empty shipments for Interbranch orders in combination with Unified orders.
  • When checking the Include empty checkbox when downloading Replenishments, but forgetting to select any actual products, the resulting email will now deliver a clarifying error message.
  • Fixed an issue with custom tags not rendering properly in Invoice email templates.
  • Fixed an issue with InvoiceTotals.Taxes not being displayed in Endless aisle credit Invoice email templates.
  • Fixed an issue where an active promotion price list was used as the UnitPricePriceList even if the product wasn't actually part of it.
  • Orders with a discounted multi-line which are returned will no longer lead to an incorrect total amount.

Deprecations‍

πŸ†• Introduced​

These deprecations are now announced for the first time. Usage of these services and/or fields will return the appropriate EVA-Warnings header.

Deprecated​

Medium​

  • MediumΒ Definition.IsEmpty is deprecated and will be removed in 2.0.758: This property is now exposed as a settable property, which isn't the case.Will be removed for clarity.
    • CreateOrganizationUnitSet.Definition.IsEmpty
    • PreviewOrganizationUnitSet.Definition.IsEmpty
  • MediumΒ Definition.Value.IsEmpty is deprecated and will be removed in 2.0.758: This property is now exposed as a settable property, which isn't the case.Will be removed for clarity.
    • UpdateOrganizationUnitSet.Definition.Value.IsEmpty
  • MediumΒ Set.Definition.IsEmpty is deprecated and will be removed in 2.0.758: This property is now exposed as a settable property, which isn't the case.Will be removed for clarity.
    • GetOrganizationUnitSetDetailsResponse.Set.Definition.IsEmpty
    • PreviewOrganizationUnitSetResponse.Set.Definition.IsEmpty
Impact descriptions

For more details on the impact categories, please see When are changes communicated?.





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.