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.
Breaking
No breaking changes.
Event exports
🆕 Triggering Event exports
Calling the following services will now trigger a corresponding event export for the LoyaltyProgram Target:
DepositLoyaltyPoints
WithdrawLoyaltyPoints
RebalanceLoyaltyPoints
Details
Here's an example of the event being triggered:
{
“UID”:“155c86d3-6f1d-41cc-b9a1-de06a2ea8cb3",
“CreationTime”:“2023-03-24T08:23:50.1393393Z”,
“TimeZone”: null,
“Target”:“LoyaltyProgram”,
“EventType”:“deposited”, // or withdrawn/refunded/revoked
“Identifier”:1322-deposited,
“LoyaltyProgramBackendID”:“LP-1",
“LoyaltyProgramID”: 1,
“OrderID”: 1234,
“PointMutation”: 50,
“Region”:“euw”,
}
In this case the trigger of the event, and its consequent EventType is based on the following logic:
- If the original number of points is larger than the number of points deposited, the EventType is Withdrawn, and if smaller: Deposited.
- And in case of the
Rebalance
service: if the original number of points equals the new number of points, the event is not triggered.
🆕 CustomOrderType in EventExport extension point
Aside from CustomOrderStatus, the extension point EventExports now also supports the CustomOrderType.
Other topics
✅ Riskified
We've implemented several changes to Riskified's JSON export.
Details
- Discount codes are now mapped, and the BackendID is exported. In cases where the BackendID is not set, there's a fallback to the EVA ID.
- Negative amounts are exported as positive to align with Riskified's handling of values.
- The cardholder name no longer appears in the exported JSON.
- Customer.Addressbook is now mapped as Phone.Addressbook, including billing and shipping addresses. If the customer does not have a phone number, the exported JSON will not contain any phone numbers.
- The JSON structure was refined to align with Riskified's preferences.
🆕 Vertex
We've integrated Vertex to assist you in staying tax compliant in your operating countries. Check our docs on Vertex on how to set it up for your businesses.
🆕 New monitor
We've added an additional handler for monitoring failed settlement files: PaymentSettlementFiles.
This will make its way to the Admin Suite soon.
In order to send the mail, the PaymentSettlementFileMonitorNotificationor template needs to be configured.
🆕 Default workspaces for roles
We've done the back-end work for another great feature which will make working with Admin Suite's Orders chapter much easier: default workspaces.
To give some practical insight in how this will help is by considering the role of "Customer Service Agent Marketplaces" for example, which would be a role that benefits from a specific default overview such as including Marketplace Order IDs and excluding Carry-out orders. Similarly, a "Finance Agent" would prefer seeing particular payment states while a regular store employee should by default see only orders done from their store.
All of these workspaces will take into account the CurrentOrganizationUnit of the logged in user and the users' permissions (displaying only the orders sold, shipped and picked from the store they are allowed to see).
Details
- Added a new service:
SetDefaultSharedWorkspaceForRoles
. This will allow for setting and unsetting a default shared workspace for multiple roles. ListSharedWorkspacesResponse
andGetSharedWorkspaceByIDResponse
now have IsAllowedToEdit boolean (based on if the workspace is owned by the user).ListSharedWorkspacesFilter
now has the property RoleID.GetSharedWorkspaceByIDResponse
Roles has been deprecated and RolesWithDefault has been added → this lets you see if a role is default or not for a specific shared workspace.
Properties and services
✅ Improving RTS requests
In order to only return RTS requests for full OU set matches, we've added an OuSet filter to the ListReturnToSupplierRequests
service.
✅ Additional shipping information
You can now get all sorts of shipping information via the GetShoppingCart
service call, including minimum amounts and free shipping thresholds.
Details
{
"OrderID": 31581,
"AdditionalOrderDataOptions": {
"IncludeAvailableShippingMethods": true
}
}
{
"OrderID": 31581,
"AdditionalOrderDataOptions": {
"IncludeAvailableShippingMethods": true
}
}
"AdditionalOrderData": {
"AvailableShippingMethods": [
{
"AppliesToOrderLineIDs": [
63828
],
"Costs": {
"Amount": 0.0,
"Ranges": [
{
"MinAmount": 0.0,
"MaxAmount": 5.0000,
"Costs": 0.0
},
{
"MinAmount": 5.0000,
"MaxAmount": 200.0000,
"Costs": 4.0000
},
{
"MinAmount": 200.0000,
"Costs": 0.0
}
]
},
"ID": 4,
"CarrierID": 5,
"Carrier": {
"ID": 5,
"Name": "New Black",
"Code": "NEWBLACK"
},
"Name": "Own Delivery",
"Code": "OD",
"ExtraCosts": 0.0,
"Priority": 1,
"PaymentHandledByCarrier": false,
"DeliveryType": 3
}
]
}
✅ Enabling filter/search in FSC label overview
We've made a few changes to the ListFullStockCountLabelSummary
service, which will make it possible to filter labels in Admin Suite on the following:
- Products
- Whether it contains products
- Status
✅ Better filtering in ListPriceLists
The ListPriceLists
call now also allows for filtering based on:
- UsageType
- OuSet
These two can be combined.
✅ Checking for deviations on POs
To make it possible to check if purchase orders have been received with a deviation (based on the difference between QuantityDelivered and QuantityShipped), we've added the HasDeviations property to ListPurchaseOrderShipments
.
Additionally this will make it possible to filter on POs with deviations - although this will not affect existing orders.
✅ Clarifying the type of order for invoices
To clarify the origin of your invoices (such as sales order, return or price correction), we've added the Lines.OrderLine.Type to the GetInvoice
service call.
Fixes
The EVA loyalty handler will prevent fractional points in the user's balance after cancellation of paid products.
While
SubscribeUser
is rightly so giving an error when trying to subscribe an already subscribed user, this is causing issues in the POS. We're removing the error for now and focus on improving the service in its entirety instead.Fix the Consignor flow when returning an order.
GetConfigurableProductsDetail
now works when you request multiple children of a single root product.Waldo 2.0 migration fix for
SearchOrders
.Prevent calling
ShipExternalOrder
without either Lines or Packages.Remove readonly on TerminalReport.
Handle invalid configured JWT keys.
Copy Order.Customer as well.
Order.CustomerID was copied but Customer wasn't, so on new return orders you could have a non-null CustomerID while Customer was null
Handle deleted users graceful with TwoFactor services.
Skip user visibility checks on ou level when VisibilityGroups for Users is enabled.
Anonymous users should be able to see display price of a product.
Lock phone book
GetUserPhoneNumbers
service for migration inserts.Events were skipped when the user wasn't loaded on the UserSubscription.
Deprecations
🔙 Reverted
The deprecation of ReceiveShipment.Lines
, announced to go into effect with this core drop has been reverted due to its incompatibility with the rollback of Companion to version 1.50.
🚫 Effective
These deprecations are now effective. As of now, these services and/or fields are no longer available in EVA and can no longer be used.
Deprecated
- Medium CustomFields is deprecated since 2.0.716: Use CustomFieldValuesWithOptions instead..
- GetStationResponse.CustomFields
- GetCaseByIDResponse.CustomFields
- GetRepairResponse.CustomFields
- GetWishlistResponse.CustomFields
- GetOrganizationUnitDetailedResponse.CustomFields
- GetShipmentDetailsResponse.CustomFields
- GetUserResponse.CustomFields
- GetAnonymousWishlistResponse.CustomFields
- GetUserWishlistResponse.CustomFields
- Medium CustomFieldValues is deprecated since 2.0.716: Use CustomFieldValuesWithOptions instead..
- GetShipmentResponse.CustomFieldValues
- GetCustomUserTaskDataResponse.CustomFieldValues
- Medium Details.Corrections.OrganizationUnit.CustomFields is deprecated since 2.0.716: Use CustomFieldValuesWithOptions instead..
- GetFinancialPeriodDetailsResponse.Details.Corrections.OrganizationUnit.CustomFields
- Medium Details.Corrections.StockMutation.DestinationOrganizationUnit.CustomFields is deprecated since 2.0.716: Use CustomFieldValuesWithOptions instead..
- GetFinancialPeriodDetailsResponse.Details.Corrections.StockMutation.DestinationOrganizationUnit.CustomFields
- Medium Details.Corrections.StockMutation.OrderLine.CustomFieldsV2 is deprecated since 2.0.716: Use CustomFieldValuesWithOptions instead..
- GetFinancialPeriodDetailsResponse.Details.Corrections.StockMutation.OrderLine.CustomFieldsV2
- Medium Details.Corrections.StockMutation.OrganizationUnit.CustomFields is deprecated since 2.0.716: Use CustomFieldValuesWithOptions instead..
- GetFinancialPeriodDetailsResponse.Details.Corrections.StockMutation.OrganizationUnit.CustomFields
- Medium Details.Corrections.StockMutation.SourceOrganizationUnit.CustomFields is deprecated since 2.0.716: Use CustomFieldValuesWithOptions instead..
- GetFinancialPeriodDetailsResponse.Details.Corrections.StockMutation.SourceOrganizationUnit.CustomFields
- Medium Details.OrganizationUnit.CustomFields is deprecated since 2.0.716: Use CustomFieldValuesWithOptions instead..
- GetUserTaskDetailsResponse.Details.OrganizationUnit.CustomFields
- Medium Inquiry.Items.CustomField is deprecated since 2.0.716: Use CustomFieldMetadata instead..
- GetInquiryResponse.Inquiry.Items.CustomField
- Medium IsArray is deprecated since 2.0.716: Cannot be updated. Create a new custom field instead..
- UpdateCustomField.IsArray
- Medium Items.CustomField is deprecated since 2.0.716: Use CustomFieldMetadata instead..
- GetInquiryResponse.Items.CustomField
- GetUserInquiryResponse.Items.CustomField
- Medium Items.OrganizationUnit.CustomFields is deprecated since 2.0.716: Use CustomFieldValuesWithOptions instead..
- ListPlanningResponse.Items.OrganizationUnit.CustomFields
- Medium Order.CustomFieldsV2 is deprecated since 2.0.716: Use CustomFieldValuesWithOptions instead..
- CreateOrderFromShoppingCartResponse.Order.CustomFieldsV2
- Medium Order.Lines.CustomFieldsV2 is deprecated since 2.0.716: Use CustomFieldValuesWithOptions instead..
- CreateOrderFromShoppingCartResponse.Order.Lines.CustomFieldsV2
- Medium Products.PickupIndications.PickupOrganizationUnit.CustomFields is deprecated since 2.0.716: Use CustomFieldValuesWithOptions instead..
- GetAvailabilityIndicationResponse.Products.PickupIndications.PickupOrganizationUnit.CustomFields
- Medium Result.Children.CustomFieldsV2 is deprecated since 2.0.716: Use CustomFieldValuesWithOptions instead..
- GetRelatedOrderLinesResponse.Result.Children.CustomFieldsV2
- Medium Result.CustomFields is deprecated since 2.0.716: Use CustomFieldValuesWithOptions instead..
- GetOrganizationUnitResponse.Result.CustomFields
- GetOrganizationUnitsForUserResponse.Result.CustomFields
- GetReplenishmentProposalSourcesResponse.Result.CustomFields
- GetReplenishmentProposalTargetsResponse.Result.CustomFields
- Medium Result.CustomFieldsV2 is deprecated since 2.0.716: Use CustomFieldValuesWithOptions instead..
- CreateOrderLineUnitPriceCorrectionResponse.Result.CustomFieldsV2
- GetOrderResponse.Result.CustomFieldsV2
- GetRelatedOrderLinesResponse.Result.CustomFieldsV2
- EVAPayGetInfoResponse.Result.CustomFieldsV2
- Medium Result.Devices.OrganizationUnit.CustomFields is deprecated since 2.0.716: Use CustomFieldValuesWithOptions instead..
- GetStationResponse.Result.Devices.OrganizationUnit.CustomFields
- Medium Result.Lines.CustomFieldsV2 is deprecated since 2.0.716: Use CustomFieldValuesWithOptions instead..
- GetOrderResponse.Result.Lines.CustomFieldsV2
- EVAPayGetInfoResponse.Result.Lines.CustomFieldsV2
- Medium Result.Order.CustomFieldsV2 is deprecated since 2.0.716: Use CustomFieldValuesWithOptions instead..
- GetStockReservationTaskResponse.Result.Order.CustomFieldsV2
- Medium Result.Order.Lines.CustomFieldsV2 is deprecated since 2.0.716: Use CustomFieldValuesWithOptions instead..
- GetStockReservationTaskResponse.Result.Order.Lines.CustomFieldsV2
- Medium Result.OrganizationUnit.CustomFields is deprecated since 2.0.716: Use CustomFieldValuesWithOptions instead..
- GetDeviceResponse.Result.OrganizationUnit.CustomFields
- GetStationResponse.Result.OrganizationUnit.CustomFields
- Medium Result.Page.Children.CustomFieldsV2 is deprecated since 2.0.716: Use CustomFieldValuesWithOptions instead..
- ListOrderLinesInvoiceSummaryResponse.Result.Page.Children.CustomFieldsV2
- Medium Result.Page.Customer.CustomFields is deprecated since 2.0.716: Use CustomFieldValues instead..
- SearchOrdersResponse.Result.Page.Customer.CustomFields
- Medium Result.Page.CustomFields is deprecated since 2.0.716: Use CustomFieldValuesWithOptions instead..
- ListOrganizationUnitByProximityResponse.Result.Page.CustomFields
- Medium Result.Page.CustomFieldsV2 is deprecated since 2.0.716: Use CustomFieldValuesWithOptions instead..
- ListOrderLinesInvoiceSummaryResponse.Result.Page.CustomFieldsV2
- ListOrderLinesResponse.Result.Page.CustomFieldsV2
- ListOrdersForCustomerResponse.Result.Page.CustomFieldsV2
- Medium Result.Page.DestinationOrganizationUnit.CustomFields is deprecated since 2.0.716: Use CustomFieldValuesWithOptions instead..
- ListStockMutationsResponse.Result.Page.DestinationOrganizationUnit.CustomFields
- Medium Result.Page.Devices.OrganizationUnit.CustomFields is deprecated since 2.0.716: Use CustomFieldValuesWithOptions instead..
- ListStationsForOrganizationUnitResponse.Result.Page.Devices.OrganizationUnit.CustomFields
- Medium Result.Page.Lines.CustomFieldsV2 is deprecated since 2.0.716: Use CustomFieldValuesWithOptions instead..
- ListOrdersForCustomerResponse.Result.Page.Lines.CustomFieldsV2
- Medium Result.Page.OrderLine.CustomFieldsV2 is deprecated since 2.0.716: Use CustomFieldValuesWithOptions instead..
- ListStockMutationsResponse.Result.Page.OrderLine.CustomFieldsV2
- Medium Result.Page.OrganizationUnit.CustomFields is deprecated since 2.0.716: Use CustomFieldValuesWithOptions instead..
- ListBookingsResponse.Result.Page.OrganizationUnit.CustomFields
- ListStationsForOrganizationUnitResponse.Result.Page.OrganizationUnit.CustomFields
- ListStockMutationsResponse.Result.Page.OrganizationUnit.CustomFields
- ListOrganizationUnitShelvesResponse.Result.Page.OrganizationUnit.CustomFields
- Medium Result.Page.SourceOrganizationUnit.CustomFields is deprecated since 2.0.716: Use CustomFieldValuesWithOptions instead..
- ListStockMutationsResponse.Result.Page.SourceOrganizationUnit.CustomFields
- ListReplenishmentProposalResultsResponse.Result.Page.SourceOrganizationUnit.CustomFields
- Medium Result.Page.StockMutation.DestinationOrganizationUnit.CustomFields is deprecated since 2.0.716: Use CustomFieldValuesWithOptions instead..
- ListBookingsResponse.Result.Page.StockMutation.DestinationOrganizationUnit.CustomFields
- Medium Result.Page.StockMutation.OrderLine.CustomFieldsV2 is deprecated since 2.0.716: Use CustomFieldValuesWithOptions instead..
- ListBookingsResponse.Result.Page.StockMutation.OrderLine.CustomFieldsV2
- Medium Result.Page.StockMutation.OrganizationUnit.CustomFields is deprecated since 2.0.716: Use CustomFieldValuesWithOptions instead..
- ListBookingsResponse.Result.Page.StockMutation.OrganizationUnit.CustomFields
- Medium Result.Page.StockMutation.SourceOrganizationUnit.CustomFields is deprecated since 2.0.716: Use CustomFieldValuesWithOptions instead..
- ListBookingsResponse.Result.Page.StockMutation.SourceOrganizationUnit.CustomFields
- Medium Result.Page.TargetOrganizationUnit.CustomFields is deprecated since 2.0.716: Use CustomFieldValuesWithOptions instead..
- ListReplenishmentProposalResultsResponse.Result.Page.TargetOrganizationUnit.CustomFields
- Medium Result.Station.Devices.OrganizationUnit.CustomFields is deprecated since 2.0.716: Use CustomFieldValuesWithOptions instead..
- GetDeviceResponse.Result.Station.Devices.OrganizationUnit.CustomFields
- Medium Result.Station.OrganizationUnit.CustomFields is deprecated since 2.0.716: Use CustomFieldValuesWithOptions instead..
- GetDeviceResponse.Result.Station.OrganizationUnit.CustomFields
- Medium ScriptID is deprecated since 2.0.716: Use SecurityScriptID instead..
- SetCustomFieldOptions.ScriptID
- Medium ShoppingCart.CustomFieldsV2 is deprecated since 2.0.716: Use CustomFieldValuesWithOptions instead..
- ShoppingCartResponse.ShoppingCart.CustomFieldsV2
- Medium ShoppingCart.Lines.CustomFieldsV2 is deprecated since 2.0.716: Use CustomFieldValuesWithOptions instead..
- ShoppingCartResponse.ShoppingCart.Lines.CustomFieldsV2
- Medium Station.Devices.OrganizationUnit.CustomFields is deprecated since 2.0.716: Use CustomFieldValuesWithOptions instead..
- SelectStationResponse.Station.Devices.OrganizationUnit.CustomFields
- Medium Station.OrganizationUnit.CustomFields is deprecated since 2.0.716: Use CustomFieldValuesWithOptions instead..
- SelectStationResponse.Station.OrganizationUnit.CustomFields
- Medium Task.Lines.OrderLine.CustomFieldsV2 is deprecated since 2.0.716: Use CustomFieldValuesWithOptions instead..
- StartReservationCleanupResponse.Task.Lines.OrderLine.CustomFieldsV2
- Medium Task.Order.CustomFieldsV2 is deprecated since 2.0.716: Use CustomFieldValuesWithOptions instead..
- StartReservationCleanupResponse.Task.Order.CustomFieldsV2
- Medium Task.Order.Lines.CustomFieldsV2 is deprecated since 2.0.716: Use CustomFieldValuesWithOptions instead..
- StartReservationCleanupResponse.Task.Order.Lines.CustomFieldsV2
- Medium Tasks.OrganizationUnit.CustomFields is deprecated since 2.0.716: Use CustomFieldValuesWithOptions instead..
- ListTasksThatBlockPeriodClosingResponse.Tasks.OrganizationUnit.CustomFields
- Medium WorkedHours.OrganizationUnit.CustomFields is deprecated since 2.0.716: Use CustomFieldValuesWithOptions instead..
- ListWorkedHoursForCurrentEmployeeResponse.WorkedHours.OrganizationUnit.CustomFields
- Medium WorkSet.Order.CustomFieldsV2 is deprecated since 2.0.716: Use CustomFieldValuesWithOptions instead..
- StartStockReservationResponse.WorkSet.Order.CustomFieldsV2
- Medium WorkSet.Order.Lines.CustomFieldsV2 is deprecated since 2.0.716: Use CustomFieldValuesWithOptions instead..
- StartStockReservationResponse.WorkSet.Order.Lines.CustomFieldsV2
- Medium WorkSet.Orders.CustomFieldsV2 is deprecated since 2.0.716: Use CustomFieldValuesWithOptions instead..
- CompleteReservationDeviationTask.WorkSet.Orders.CustomFieldsV2
- StartReservationDeviationTaskResponse.WorkSet.Orders.CustomFieldsV2
- Medium WorkSet.Orders.Lines.CustomFieldsV2 is deprecated since 2.0.716: Use CustomFieldValuesWithOptions instead..
- CompleteReservationDeviationTask.WorkSet.Orders.Lines.CustomFieldsV2
- StartReservationDeviationTaskResponse.WorkSet.Orders.Lines.CustomFieldsV2
- Medium WorkSet.UserTask.OrganizationUnit.CustomFields is deprecated since 2.0.716: Use CustomFieldValuesWithOptions instead..
- CompleteCustomerInteractionTask.WorkSet.UserTask.OrganizationUnit.CustomFields
- StartCustomerInteractionTaskResponse.WorkSet.UserTask.OrganizationUnit.CustomFields
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.