Skip to main content
Arrow Backward IconBack to Overview

Core 2.0.738

May 21, 2024

Released on all test and acceptance environments on May 21, 2024

Will be released to production in EUW and ASE on May 27, 2024*

Will be released to production in CUS on May 28, 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. The first, second and third batches of these adjustments have already been included in EVA Core drop 2.0.726, 2.0.730 and 2.0.735.

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.739 (May 28). We anticipate completing this process over approximately 5 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
GenerateCycleCountAfterNegativeStockAutoCorrectCycleCounts
GeneratePo:UseDefaultPlacementOrders
GetAvailabilityIndication:FastestPickupShopOnlyOrderFulfillments
GetShopsByProximityDefaultLimitOrderFulfillments
GiftCards:Digital:ProductIDPaymentMethods
GiftCards:Digital:StrategyPaymentMethods
GiftCards:Digital:TokenExpirationInDaysPaymentMethods
GiftCards:MaximumOverPaymentInCentsPaymentMethods
GiftCards:Payment:DenyPayingForGiftCardsPaymentMethods
GiftCards:RequireSuccesfulGetCardOnUpdateSerialNumberPaymentMethods
GiftWrapping:AvailabilityProviderOrders
GiftWrapping:CalculatorOrders
GiftWrapping:DescriptionOrders
GiftwrappingEANOrders
GlobalBlue:BaseUrlNone
GlobalBlue:DeskIDNone
GlobalBlue:EnabledNone
GlobalBlue:PasswordNone
GlobalBlue:ShopIDNone
GlobalBlue:UsernameNone
Google:Analytics:TrackingIDNone
Google:Directions:ApiKeyNone
Google:Directions:UrlNone
Google:Geocoding:ApiKeyNone
Google:Maps:ApiKeyNone
Google:Maps:ApiKey:AndroidNone
Google:Maps:ApiKey:HTTPNone
Google:Maps:ApiKey:iOSNone
Google:Maps:ApiKey:IPNone
Google:Orders:MerchantCertificateBlobIDNone
Google:Orders:MerchantIDNone
Google:Orders:MerchantServiceAccountNone
Google:Orders:UseSandboxNone
Google:Places:ApiKeyNone
Google:Places:ApiKey:AndroidNone
Google:Places:ApiKey:HTTPNone
Google:Places:ApiKey:iOSNone
Google:Places:ApiKey:IPNone
HoldFulfillmentOnInsufficientStockOrderFulfillments
Hybris:EndpointDiscounts
Hybris:Loyalty:EndpointDiscounts
Hybris:Loyalty:TokenDiscounts
Hybris:TokenDiscounts
IgnoreInsufficientStockForPickupOrderOrderFulfillments
ImageProvider:JpgQualityNone
ImageProvider:PaddingOptionsNone
ImageProvider:PngQualityNone
ImageProvider:ResizedCache:HoursNone
ImportEmployees:IncludePasswordsInResultMailEmployees
IncludeHistoricExchangeRatesExchangeRates
InsufficientStockForReservationStrategyCommitments
Interbranch:CopyShipmentBackendIDInterbranchOrders
Interbranch:DisabledInterbranchOrders
Interbranch:FilterByCountryInterbranchOrders
Interbranch:ShippingOptionInterbranchOrders
Interbranch:UseUnitCostOnReceivingPurchaseOrderInterbranchOrders
Intersolve:ClientTimeoutInSecondsGiftCardConfigurations
Intersolve:GetCard:ClientTimeoutInSecondsGiftCardConfigurations
Intersolve:GiftcardProduct:BackendIDGiftCardConfigurations
Intersolve:GiftcardProduct:BackendSystemIDGiftCardConfigurations
Intersolve:Giftcards:VersionGiftCardConfigurations
Intersolve:Sftp:CertificateGiftCardConfigurations
Intersolve:Sftp:CertificatePassPhraseGiftCardConfigurations
Intersolve:Sftp:HostGiftCardConfigurations
Intersolve:Sftp:UsernameGiftCardConfigurations
Intersolve:Voucher:VoucherProductBackendIDGiftCardConfigurations
Intersolve:Voucher:VoucherProductBackendSystemIDGiftCardConfigurations
IntersolveGiftcardUrlGiftCardConfigurations
IntersolvePasswordGiftCardConfigurations
IntersolveUsernameGiftCardConfigurations
IntersolveVoucherUrlGiftCardConfigurations
Intersport:DeliveredByShopProductIDsNone
Intersport:DemoEmailTriggerNone
Intersport:Paypal:BaseUrlNone
Intersport:Paypal:ClientIDNone
Intersport:Paypal:SecretNone
Intersport:ReturnDescriptionNone
Intersport:ReturnsCostsInCentsNone
Intersport:ShopWarehouseIDNone
InvoiceArchiveInvoices
InvoiceFilterInvoices
InvoiceLineDescriptionPropertyInvoices
InvoiceTriggerInvoices
Janrain:ClientIDNone
Janrain:ClientID:CrmNone
Janrain:DomainNone
Janrain:EnabledNone
Janrain:PolicyGateEndpointNone
Janrain:SecretNone
Janrain:Secret:CrmNone
Janrain:TenantCodeNone
Janrain:UserAgent:CrmNone
LimitOrderVisibilityForEmployeesOrders
LimitOrganizationUnitVisibilityOrganizationUnits
LimitUserVisibilityUserRoles
LinePay:ChannelIDPaymentMethods
LinePay:ChannelSecretPaymentMethods
LinePay:IsSandboxPaymentMethods
LinkMobility:BaseUrlNone
LinkMobility:EnabledNone
LinkMobility:PasswordNone
LinkMobility:PlatformIDNone
LinkMobility:PlatformPartnerIDNone
LinkMobility:TimeoutNone
LinkMobility:UsernameNone
ListReturnableSuppliersForOrderLegacyModeOrderFulfillments
LoginWithIdentificationPin:AllowOrganizationUnitSelectionLogin
LoginWithIdentificationPin:CreateLengthLogin
LoginWithIdentificationPin:EnabledLogin
LoginWithIdentificationPin:GenerateLengthLogin
LoginWithIdentificationPin:LengthLogin
LoginWithIdentificationPin:MethodLogin
LoginWithIdentificationPin:ResetLogin
LogRequestDataNone
Mail:SendOrderReturnedConfirmationFromStoreNone
Mail:StockReservationCreated:EnabledNone
MailGun:Api:BaseUrlNone
MailGun:Api:DomainNone
MailGun:Api:KeyNone
MailGun:Api:TimeoutInSecondsNone
MailGun:Api:UserNone
MailGun:Email:TestNone
MaxCycleCountsPerShopCycleCounts
MaxCycleCountsPerShopPerDayCycleCounts
MaxReservationTimeOrders
MessageBird:AccessKeyNone
MessageBird:BaseUrlNone
MessageBird:OriginatorNone
ModifyShippingAddressWhenReservationOrderHasToBeOrderedOrders
Mollie:Api:BaseUrlPaymentMethods
Mollie:Api:TokenPaymentMethods
Monitor:Orders:MaxResultSizeMonitors
MultiSafepay:ApiKeyPaymentMethods
MultiSafepay:ApiUrlPaymentMethods
MultiSafepay:SendOrderInformationPaymentMethods
MultiSafepay:VerifyNamePaymentMethods
MultiSafepay:VerifyName:PercentagePaymentMethods
MultiSafepay:VerifyNumberPaymentMethods
NormalizePhoneNumbersNone
Notificare:ApplicationKeyNone
Notificare:MasterSecretNone
Notificare:UserReferenceResolverNone
NoTransportationDatesOrderFulfillments
OCAPI:ApiBaseUrlNone
OCAPI:ApiClientIDNone
OCAPI:ApiPasswordNone
OCAPI:HierarchyProviderNone
OCAPI:ImageBaseUrlNone
OCAPI:Marketing:AccountIDNone
OCAPI:Marketing:ApiClientIDNone
OCAPI:Marketing:ApiPasswordNone
OCAPI:Marketing:SubscriptionOriginNone
OCAPI:OrderExportExTaxNone
OCAPI:PasswordNone
OCAPI:PreferredPaymentMethodNone
OCAPI:UseCustomIDNone
OCAPI:UserAgentNone
OCAPI:UsernameNone
OCAPI:VersionNone
OfferExpirationInDaysNone
OpenAI:ApiKeyNone

Compliance

🆕 Compliance changes


🇬🇧 Compliance changes in United Kingdom

Anti money laundering

To adhere to the money laundering rules for the UK, EVA will be triggering customer requirements for sales with over 10.000 GBP in the order basket.

The following fields will then become mandatory:

  • First Name
  • Last Name
  • Address 1
  • Zip / Postal Code
  • City
  • Country
  • Nationality
  • Date of Birth
  • (Optional) Phone number

Properties

🆕 Preventing discounts for self use

EVA now prevents using discounts on orders where the customer is equal to the logged in user. This is done by means of the CanBeUsedOnOwnOrder property.

Rectification 04-06-24

The relevant property is not called CanBeUsedOnOwnOrder, but CannotApplyToOwnOrder instead.

🆕 Optional Data element for Adyen payments

To allow for listing more information from Adyen payments, we are expanding the default payment transaction model with an optional Data element.

Details

The default payment transaction model, as received via GetPaymentTransaction for example, optionally shows a Data element if the following conditions are met:

  • You are an API type user
  • And you have the functionality PaymentData (scope View)
  • And the payment method explicitly maps data for visibility (by default, none are visible)

In case of Adyen payment methods, the following properties can be displayed in the element:

  • AuthCode
  • MerchantAccount
  • MerchantReference

🆕 CurrencyID in ListLoyaltyProgramPriceLists

We now expose the CurrencyID in the response of ListLoyaltyProgramPriceLists.

Services

🆕 OU creation language validation

To ensure adherence to ISO format for languages, we now validate the input in the CreateOrganizationUnit call. Any uppercase input will be automatically converted to lowercase.

Watchtower API keys

As a security measure, the Watchtower's API key will no longer be returned in several services and has instead has been limited to the CreateWatchtowerDevice service. Furthermore, this service will return the key only when creating a virtual Watchtower.

Details

The API key will no longer be returned in the following services:

  • GetDevice
  • WatchtowerGetDeviceDetails
  • ListWatchtowerDevices
  • WatchtowerGetDeviceByHardwareID

✅ More efficient FSC API calls

To allow for adding products in the front end with just a single service call, while at the same time sorting counted products in the order they were counted, we're making some changes to a few services.

Details

The addition of:

  • nullable CreationTime and LastModificationTime to ListFullStockCountLabelProductDto;
  • IncrementQuantity to AddProductToFullStockCountLabel;
  • Product model to AddProductToFullStockCountLabel's response`, which comes with the following properties:
    • ProductID
    • BackendID
    • CurrentCountUserID
    • PreviousQuantity
    • PreviousCountUserID
    • Properties
    • Quantity
    • CreationTime LastModificationTime

To allow for the inclusion of codes in Magic links, which can then be used manually in portal applications, we've made several changes.

Details

The use of manual codes in Magic links is only enabled when the new setting MagicLink:AllowManualCode is set to true.

Afterwards, a new property called IncludeManualCode (which defaults to null) can be set to true to have the email sent with a short code for users to manually input into your application.

A new service called ConfirmMagicLink can then be called with both the RequestToken and the ManualCode to obtain either the TemporaryToken or ApiKey when the values are valid - which is the same flow as before.

This setup honors all previous integrated MagicLink flows and scenarios. Front end work is still underway.

Settings

🆕 Minimum/MaximumOrderAmount

To be able to set a minimum and maximum amount for orders to be viable (and potentially displaying to customers how much more they would need to add to their basket), we're adding two new settings.

Details
  • RequiredData:MaximumOrderAmount
  • RequiredData:MinimumOrderAmount

If an amount is specified in either, then those values will become exposed in GetShoppingCart and GetOrder as order requirements. In practice this means an order cannot be placed below nor above the specified value.

Note: The minimum and maximum values include any discounts and exclude shipping costs.

Other topics

🆕 IsTransferOrder in Cookbook

To allow for the identification of transfer orders in Cookbook, both the 1.0 and 2.0 version of Cookbook now support the Order.IsTransferOrder property.

✅ Whitelabel giftcard solution

The whitelabel giftcard solution APIGIFTCARD now supports giftcard providers sending in dates of purchase, expiration dates and whether the cards are expired or not.

Details

This means that when using a relevant service, such as CardBalanceCheck, for a giftcard provider using the APIGIFTCARD configuration, the corresponding endpoint will return the following new properties:

  • BaseUrl/card-info

  • BaseUrl/purchase

  • BaseUrl/refund

    • DateOfPurchase
    • DateOfExpiration
    • Expired:true/false
  • BaseUrl/activate

  • BaseUrl/issue

    • DateOfPurchase
    • DateOfExpiration

These properties (when applicable) will then be returned in the response of your service call.

Additionally, these properties are now usable in the following stencils:

  • ThermalReceipt
  • CertifiedInvoice
  • GiftCardOrderShippedConfirmation
  • OrderShippedConfirmation (orderline)
  • DigitalGiftCardMessage
  • DigitalGiftCardSenderMessage
  • DownloadDigitalGiftCard

🆕 Repairs in Data lake

Repairs is now available as a Data lake export.

Details

The file path for this new export: EVA/{region}/repairs/{date.Year:0000}/{date.Month:00}/{date.Day:00}/{id}

This export is available by default - no need to schedule a new task.

Sample

{
"ID": "",
"OrganizationUnitID": "",
"AssignedUserID": "",
"ReceiveMethodID": "",
"ExpectedArrivalDate": "",
"CaseID": "",
"ProductID": "",
"OrderLineID": "",
"RepairOrderID": "",
"SerialNumber": "",
"StatusID": "",
"ShippingOptionID": ""
}

Fixes

  • As a small improvement, using the EditProductPropertyType service will respond with a clearer error when you don't input the right data.
  • A CaseInteractionCreatedEmail template will be triggered again when logging a public interaction during an Execute repair task.
  • EVA now returns the SubscriptionID from SubscribeUser for external handlers (instead of the entire Subscription object).
  • GetTaxExemptionReasons will return the appropriate (non-cached) reason for non-Avatax calls.

Deprecations

No deprecation announcements.





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.