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
Setting | Functionality |
---|---|
OpeningHours:EnableOpeningHoursTemplates | OrganizationUnitSettings |
OpeningHours:ImportAsExceptions | OrganizationUnitSettings |
OrderAdvanceShipmentNotificationHandler | OrderFulFillments |
OrderExport:DaysToCommitBeforeRequestedDate | OrderFulFillments |
OrderExport:DaysToExportBeforeRequestedDate | OrderFulFillments |
OrderExporter | OrderFulFillments |
OrderExportValidator | OrderFulFillments |
OrderFulfillment:AllowPartialCancellation | OrderFulFillments |
OrderLine:LineActionType:OrderWhenOutOfStock | Orders |
OrderLineCancelled:Mail:Timeout | Orders |
OrderLineCancelled:RequestExternalCancellations | Orders |
OrderLineCommitment:CommitmentDuration | Orders |
OrderLineCommitment:EnsureStock | Orders |
OrderLineCommitment:ExtendDurationOnPendingPayment | Orders |
OrderLineCommitment:MaxWaitForPendingPaymentsDuration | Orders |
OrderLineCommitment:Moment | Orders |
OrderLineCreator:SetDefaultShippingMethod | Orders |
OrderLineMaximumQuantityOrdered | Orders |
OrderMaxLinesToReturn | Orders |
OrderQuantityModificationValidator | Orders |
OrderRouter | None |
Orders:AllowCartsToStayOpen | OrderStatus |
Orders:AllowMixed | Orders |
Orders:AllowOrderLinesForOtherStores | Orders |
Orders:Cancellations:RefundOpenAmountAfterCompleteCancellation | OrderStatus |
Orders:Cancellations:RefundOpenAmountAfterPartialCancellation | OrderStatus |
Orders:Carts:AllowQuantityOrderedReductions | Orders |
Orders:CreatePurchaseOrderFromReturnToSupplierOrder | PurchaseOrders |
Orders:CreateSalesOrderFromPurchaseOrder | Orders |
Orders:Default:AllowPartialFulfillment | OrderFulFillments |
Orders:DisallowAttachBusinessCustomerOnceComplete | Orders |
Orders:Display:CombineBundlePriceOnParent | Orders |
Orders:Display:ItemCount:CountBundleProductsAsOne | Orders |
Orders:Display:ShowFreeDiscountProductWithOriginalPrice | Orders |
Orders:Display:ShowOrignalPrice | Orders |
Orders:Display:ShowUnitPrice | Orders |
Orders:Display:SumOnFreeParent | Orders |
Orders:Display:UseNetAmounts | Orders |
Orders:Lines:UnitPriceCorrections:CreateSeperateLine | Orders |
Orders:Lines:UnitPriceCorrections:OnlyOnManualReturnLines | Orders |
Orders:Lines:UnitPriceCorrections:RequireReason | Orders |
Orders:Display:ShowTotalAmounts | Orders |
Orders:Display:ShowFreeProductsAsFree | Orders |
Orders:Display:ShowEcoTax | Orders |
OpeningHours:EnableOpeningHoursTemplates | OrganizationUnitSettings |
OpeningHours:ImportAsExceptions | OrganizationUnitSettings |
OrderAdvanceShipmentNotificationHandler | OrderFulFillments |
OrderExport:DaysToCommitBeforeRequestedDate | OrderFulFillments |
OrderExport:DaysToExportBeforeRequestedDate | OrderFulFillments |
OrderExporter | OrderFulFillments |
OrderExportValidator | OrderFulFillments |
OrderFulfillment:AllowPartialCancellation | OrderFulFillments |
OrderLine:LineActionType:OrderWhenOutOfStock | Orders |
OrderLineCancelled:Mail:Timeout | Orders |
OrderLineCancelled:RequestExternalCancellations | Orders |
OrderLineCommitment:CommitmentDuration | Orders |
OrderLineCommitment:EnsureStock | Orders |
OrderLineCommitment:ExtendDurationOnPendingPayment | Orders |
OrderLineCommitment:MaxWaitForPendingPaymentsDuration | Orders |
OrderLineCommitment:Moment | Orders |
OrderLineCreator:SetDefaultShippingMethod | Orders |
OrderLineMaximumQuantityOrdered | Orders |
OrderMaxLinesToReturn | Orders |
OrderQuantityModificationValidator | Orders |
OrderRouter | None |
Orders:AllowCartsToStayOpen | OrderStatus |
Orders:AllowMixed | Orders |
Orders:AllowOrderLinesForOtherStores | Orders |
Orders:Cancellations:RefundOpenAmountAfterCompleteCancellation | OrderStatus |
Orders:Cancellations:RefundOpenAmountAfterPartialCancellation | OrderStatus |
Orders:Carts:AllowQuantityOrderedReductions | Orders |
Orders:CreatePurchaseOrderFromReturnToSupplierOrder | PurchaseOrders |
Orders:CreateSalesOrderFromPurchaseOrder | Orders |
Orders:Default:AllowPartialFulfillment | OrderFulFillments |
Orders:DisallowAttachBusinessCustomerOnceComplete | Orders |
Orders:Display:CombineBundlePriceOnParent | Orders |
Orders:Display:ItemCount:CountBundleProductsAsOne | Orders |
Orders:Display:ShowFreeDiscountProductWithOriginalPrice | Orders |
Orders:Display:ShowOrignalPrice | Orders |
Orders:Display:ShowUnitPrice | Orders |
Orders:Display:SumOnFreeParent | Orders |
Orders:Display:UseNetAmounts | Orders |
Orders:Lines:UnitPriceCorrections:CreateSeperateLine | Orders |
Orders:Lines:UnitPriceCorrections:OnlyOnManualReturnLines | Orders |
Orders:Lines:UnitPriceCorrections:RequireReason | Orders |
Orders:Display:ShowTotalAmounts | Orders |
Orders:Display:ShowFreeProductsAsFree | Orders |
Orders:Display:ShowEcoTax | Orders |
Orders:Reservations:AutoPlaceOnPaid | None |
Orders:Reservations:ClickAndCollectEnabled | None |
Orders:Reservations:RequiredReservationTime | None |
Orders:Reservations:UseStockReservationTasksOnReceipt | None |
Orders:Returns:AllowCrossBorderReturns | ReturnOrders |
Orders:Returns:DefaultExporter | ReturnOrders |
Orders:Returns:DenyInNonShipFromShop | ReturnOrders |
Orders:Returns:DenyReturnsInNonReturnOrganizationUnit | ReturnOrders |
Orders:Returns:HandleReturnOrderGracefully | ReturnOrders |
Orders:Returns:NonReturnableProductProperty | ReturnOrders |
Orders:Shipment:Receipt:AllowOvershipment | ShipmentSettings |
Orders:Shipment:Receipt:AllowSurplus | ShipmentSettings |
Orders:Shipment:Receipt:CancelDeficiencies | ShipmentSettings |
Orders:Shipment:RefundOpenAmountAfterShipment | ShipmentSettings |
Orders:Shipment:UsePaymentValidation | ShipmentSettings |
Orders:TaxExemptionEnabled | Orders |
Orders:UseNewCalculation | Orders |
Orders:VerifyPushedSalesOrder | Orders |
OrderTaxCalculator | None |
OrganizationUnits:DefaultToAlwaysOpen | OrganizationUnitOpeningHours |
P4M:APIKey | None |
P4M:ClientID | None |
P4M:Url | None |
P4M:UseAccountID | None |
P4M:WorkStationID | None |
Paazl:Api:BaseUrl | Carriers |
Paazl:Api:Password | Carriers |
Paazl:Api:WebshopID | Carriers |
Paazl:App:Timeout | Carriers |
Paazl:DeliveryEstimate | Carriers |
Paazl:Enabled | Carriers |
Paazl:ShippingCosts:Limit | ShippingCosts |
PaymentMethods:PaymentTypeAvailabilityByOuSetType | PaymentTypes |
Payments:AllowOnPaidOrders | PaymentDetails |
Payments:AllowRefundsOnPaidOrders | Refunds |
Payments:Manual:UseSingleType | None |
Payments:TriggerCancellationsAfterLastCapture | PaymentTransactionCaptures |
Payments:ValidateRequirements | PaymentDetails |
PIM:ApplyAssortmentDateFilters | ProductContent |
PIM:UseStockPlugin | ProductContent |
PIM:UseSynonymPlugin | ProductContent |
PIM:UseNewPricingIdentifier | ProductContent |
PIM:ProductContentProvider:ReadFromDiskBatchSize | ProductContent |
PIM:Composition:VariationPropertiesToCopy:Children | ProductContent |
PIM:Composition:VariationPropertiesToCopy:Siblings | ProductContent |
PIM:Composition:VariationPropertiesToCopyLimit | ProductContent |
PIM:ApplyPublicationsStatusFiltersForEmployees | Product |
PIM:Autocomplete:Config | Product |
PIM:Autocomplete:Fuzziness | Product |
PIM:Composition:BatchesPerMessage | Product |
PIM:Composition:ComposedProductConsumers | Product |
PIM:Composition:ProductsPerBatch | Product |
PIM:ContentImport:DefaultColumns | Product |
PIM:DefaultBackendSystemID | Product |
PIM:DefaultFilterProvider | Product |
PIM:DisplayValue:AppendBrand | Product |
PIM:DisplayValueField | Product |
PIM:ExcelImport:KeepFiles | Product |
PIM:HideProductsWithoutPrimaryImage | Product |
PIM:HideUsedUpProducts | Product |
PIM:ImporterEditBatchSize | Product |
PIM:OrganizationVisibilityProvider | Product |
PIM:Product:IsNew:Days | Product |
PIM:QuickLayerName | Product |
PIM:RequireSalesPrice | Product |
PIM:Stopwords | Product |
PlaceOrder:SendConfirmationMail | OrderOptions |
PostcodeNL:AccountID | None |
PostcodeNL:BaseUrl | None |
PostcodeNL:Key | None |
PostcodeNL:Secret | None |
PostNL:Api:ApiKey | Carriers |
PostNL:Api:BaseUrl | Carriers |
PostNL:Api:CustomerCode | Carriers |
PostNL:Api:CustomerNumber | Carriers |
PostNL:AvailableOptions | Carriers |
PostNL:SameDayCutOff | Carriers |
PostNL:Sftp:Host | Carriers |
PostNL:Sftp:Password | Carriers |
PostNL:Sftp:Username | Carriers |
PostNL:ShippingCosts:AboveLimit:Evening | ShippingCosts |
PostNL:ShippingCosts:AboveLimit:Normal | ShippingCosts |
PostNL:ShippingCosts:AboveLimit:Pickup | ShippingCosts |
PostNL:ShippingCosts:AboveLimit:Sameday | ShippingCosts |
PostNL:ShippingCosts:AboveLimit:Sunday | ShippingCosts |
PostNL:ShippingCosts:Evening | ShippingCosts |
PostNL:ShippingCosts:Limit | ShippingCosts |
PostNL:ShippingCosts:Normal | ShippingCosts |
PostNL:ShippingCosts:Pickup | ShippingCosts |
PostNL:ShippingCosts:Sameday | ShippingCosts |
PostNL:ShippingCosts:Sunday | ShippingCosts |
PostNL:ShippingCosts:Swap | ShippingCosts |
PostNL:SundaySorting | Carriers |
Pricing:IgnoreInitialChanges | Pricing |
Pricing:ValidateAdjustments | Pricing |
Pricing:UpdatePricesOnOrders | Pricing |
Pricing:PricingGroupFromCustomField | Pricing |
Pricing:PricingGroupFromCustomField | Pricing |
Pricing:UpdatePricesOnOrders | Pricing |
Pricing:ValidateAdjustments | Pricing |
Primer:EstimateDeliveryDateForOutOfStockProducts | None |
Primer:ProductBundlesInStockFeed | StockFeed |
PrintPriceLabelTask:AutoGenerate | PriceLabels |
PrintPriceLabelTask:GenerateOnPriceChange | PriceLabels |
PrintPriceLabelTask:MaxProductsPerTask | PriceLabels |
PrintPriceLabelTask:PrintLabelPerUnit | PriceLabels |
ProduceReceipt:ReprintReturnedOrder | None |
ProductBundleAvailabilityCalculationMethod | None |
ProductSearch:MaxAggregationValues | None |
ProductSearch:MaxPageSize | None |
ProductSearch:PageSize | None |
PubliclyExposeStockQuantities | Stock |
PurchaseOrder:ReceiveMethod | ReceivePurchaseOrderShipment |
PurchaseOrderExporter:MailToBcc | None |
PurchaseOrderExporter:MailToCc | None |
PushNotifications:Sender | None |
ReassignCanceledReservations:CutOffInDays | None |
ReceiveShipmentTasks:Enabled | ReceiveShipments |
Refund:DisableRefundsWithoutOriginalTransaction | Refund |
Refund:LimitToOpenAmount | Refund |
Refund:SkipOpenAmountCheckInAvailableMethods | Refund |
RefundAfterReservationOrderLineCancelled | Refund |
Replenishment:AlwaysReplenishToRunRate | Replenishments |
Replenishment:DistributionTree | Replenishments |
Replenishment:IgnoreSupplierStock | Replenishments |
Replenishment:MinimumOrderProductQuantity | Replenishments |
Replenishment:Outputs | Replenishments |
Replenishment:RunRate:LookbackDays | Replenishments |
Replenishment:RunRate:ReplenishmentDays | Replenishments |
Replenishment:RunRateProvider | Replenishments |
Replenishment:UseReplenishmentProducts | Replenishments |
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
extend OrderCustomStatus
if Order.SoldFromOrganizationUnit.Name = 'Almere store' and Order.OrderCustomStatusBackendID <> 'ABC1' then
set status to 'ABC1'
end
if Order.OrderCustomStatusBackendID = 'ABC1' and Order.IsPickup then
set status to 'AlmereStore_ABC1'
end
output status
extend OrderCustomType
if Order.OrderCustomTypeBackendID = 'XYZ' then
set type to 'XYZ-A'
end
output type
π 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.
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
extend OrderCustomFieldEligibility
if OrderLine.IsShippingCost 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.
{
"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"
}
]
}
β External user searchβ
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
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.