STEP Import
The STEP Import is essentially a whole bunch of files dumped on an FTP. At predefined times we trigger an import of products.
#
ImportProductsTaskFirst, we loop through all files in the folder /Outbox/Stepout-Products
that end with .zip
or .xml
(depends on setting)
Second, we read products and parse the contents, we map these to a RitualsProduct
and a basic ProductToImport
where the RitualsProduct
contains all data from the STEP import and the ProductToImport
represents the product to import into EVA.
Next, we configure the ProductToImport
through a number of categories of logic. Below is a overview of these categories:
#
AssortmentsOn import start:
We make sure all countries (OUs with type country) have an assortment. If not, we create it.
For every product:
We determine the PhaseInPhaseOutDates
(these are per contry, and are sent as eg: phase_in_NL
), when these are not set, but the product has children, we use theirs (mapped to a single in/out). For each country, we link the product to the country's assortment (with the configured PhaseInPhaseOutDates
)
#
AllBackendID =
ID
attribute of productParentID =
ParentID
attribute of productUserTypeID =
UserTypeID
attribute of productIsSet = if UserTypeID is
prd_BundleArticleFixedComponents
IsBundle = if UserTypeID is
prd_BundleArticleConfigurableComponents
IsTradeUnit = if UserTypeID is
RIT_TU
IsVariant = if UserTypeID is
RIT_Variant
IsArticle = if UserTypeID is
RIT_Article
IsProduct = if UserTypeID is
prd_Product
PrimitiveName = product element
Name
else product elementProductName
IsDigitalGiftCard = the BackendID is one of:
TU1330728
TU3007279
TU3007201
TU3007284
TU3007280
IsGreetingCard = the BackendID is one of:
TU2018006
TU2018008
TU2018010
TU2018011
TU2009330
TU2009333
TU2009334
TU2009335
TU7086781
ProductType is set to
BundleProduct
when IsBundle or IsSetGreetingCard
is added when IsGreetingCardGiftCard
andCustomPricing
is added whenProductID
is95_GiftCards
Service
ifProductID
(from STEP) is16_Spa City Rituals
(overwrites previous)Marketing
is added whenProductID
is one of:11_Merchandising
15_Styling
10_Tester
21_Activation
25_XMAS_Hampers_Rituals_Staff
26_MDC_POS_Promo
27_MDC_Activation
28_Conceptual_Maintenance
31_Shopwear
Stock
is added when `IsTradeUnit
or has aBarcodeCU
and notMarketing
and not IsDigitalGiftCardVirtualProduct
is added when `IsTradeUnit
or has aBarcodeCU
and IsDigitalGiftCardConfigurable
is added when IsArticle and it has a IsVariant parent or it is IsVariant itself
#
BarcodesFor every product:
We register the BarcodeCU
property as the barcode for 1 item (when present).
We register the BarcodeTU
property as the barcode for a box (when present). The quantity is determined by the Collation
property (with a minimum of 1).
#
ContentEditorFor every product:
We set the following properties as follows (these have specific logic):
- exclude_from_giftwrapping = step property
GiftWrapIndicator
(false ifyes
(case-insensitive), else true) - online_valid = step property
OnlineValid
set toY
(or any children have it set toY
) - available_app = step property
AvailableApp
set totrue
(or any children have it set totrue
) - available_social_order_service = step property
AvailableInSocial
set totrue
(or any children have it set totrue
) - is_hazmat = step property
Warning
exists (we don't care about the value) - best_seller = step property
BESTSELLER
exists (we don't care about the value) - scaling_factor_image = step property
ScalingFactorImage
divided by 100, else 0 - is_talisman = product IsBundle or IsSet and PrimitiveName contains
Talisman
(case-sensitive) - step_option_only = step property
OptionOnly
set toY
, else not set - customizable_set = step property
att_Customize
set toYES
(case-insensitive), else not set - search_placement_id = step property
DW_SearchPlacement
, else not set - tax_class = step property
TaxCode
, else not set
We set the following properties as follows:
- top_notes_1 comes from the STEP property
ptp_TopNotes1
- top_notes_2 comes from the STEP property
ptp_TopNotes2
- top_notes_3 comes from the STEP property
ptp_TopNotes3
- base_notes_1 comes from the STEP property
ptp_BaseNotes1
- base_notes_2 comes from the STEP property
ptp_BaseNotes2
- base_notes_3 comes from the STEP property
ptp_BaseNotes3
- heart_notes_1 comes from the STEP property
ptp_HeartNotes1
- heart_notes_2 comes from the STEP property
ptp_HeartNotes2
- heart_notes_3 comes from the STEP property
ptp_HeartNotes3
- step_product_detail_title comes from the STEP property
att_ProductDetailTitle
- step_product_detail_description comes from the STEP property
att_ProductDetailDescription
- color_group_hor comes from the STEP property
att_ColorGroupHoR
- fragrance_hor comes from the STEP property
att_FragranceHoR
- fragrance_family comes from the STEP property
att_FragranceFamily
- bottle_shape comes from the STEP property
att_BottleShape
- name_color_design comes from the STEP property
att_NameColorDesign
- duration_label comes from the STEP property
att_Duration
- item_size_textile comes from the STEP property
att_ItemSizeTextile
- item_size_height comes from the STEP property
att_ItemSizeHeightCm
- item_size_width comes from the STEP property
att_ItemSizeWidthCm
- ancient_ritual_ecom comes from the STEP property
AncientRitualEcom
- barcode_cu comes from the STEP property
BarcodeCU
- barcode_tu comes from the STEP property
BarcodeTU
- box_contains comes from the STEP property
BoxContains
- color comes from the STEP property
Color
- composition comes from the STEP property
Composition
- condition comes from the STEP property
Condition
- consumer_code comes from the STEP property
Consumercode
- content_quantity comes from the STEP property
Content
- current_price_eur comes from the STEP property
CurrentPriceProduct
- current_price_au comes from the STEP property
CurrentPriceProductAU
- mark_up_price_eur comes from the STEP property
CurrentPriceProductEUR2o
- current_price_us comes from the STEP property
CurrentPriceProductUS
- seo_article_page_description comes from the STEP property
DW - SEO Article PageDescription
- searchable comes from the STEP property
DW_Searchable
- search_placement comes from the STEP property
DW_SearchPlacement
- refinement_category comes from the STEP property
DW-refinementCategory
- seo_article_page_title comes from the STEP property
DW-SEOArticlePageTitle
- e_comm_active comes from the STEP property
eCommActive
- e_comm_label_text comes from the STEP property
eCommLabelText
- gender_sw comes from the STEP property
GenderSW
- inci comes from the STEP property
INCI
- instructions_for_use comes from the STEP property
InstructionsForUse
- item_status comes from the STEP property
ItemStatus
- item_size_sw comes from the STEP property
ItemSizeSW
- long_product_description_seo comes from the STEP property
Long Product Description-SEO
- marketing_long_description comes from the STEP property
Marketing Long Description
- marketing_short_description comes from the STEP property
Marketing Short Description
- marketing_usps comes from the STEP property
MarketingUSPs
- market_item_is_sold comes from the STEP property
MarketItemIsSold
- product_name comes from the STEP property
ProductName
- quality comes from the STEP property
Quality
- rit_primary_color comes from the STEP property
RIT_PrimaryColor
- rit_product_name_website comes from the STEP property
RIT_ProductNameWebsite
- rit_previously_known comes from the STEP property
RIT_PreviouslyKnown
- sales_vat comes from the STEP property
SalesVAT
- sales_vat_product comes from the STEP property
SalesVATProduct
- seo_calculated comes from the STEP property
SEO Calculated
- short_product_description comes from the STEP property
ShortProductDescription
- long_product_description comes from the STEP property
LongProductDescription
- size_range comes from the STEP property
SizeRange
- soulwear_material_web comes from the STEP property
Soulwear Material (Web)
- tax_code comes from the STEP property
TaxCode
- tradecode comes from the STEP property
Tradecode
- usp1 comes from the STEP property
USP1
- usp2 comes from the STEP property
USP2
- usp3 comes from the STEP property
USP3
- usp4 comes from the STEP property
USP4
- usp5 comes from the STEP property
USP5
- usp6 comes from the STEP property
USP6
- ecom_usp1 comes from the STEP property
att_eComUSP1
- ecom_usp2 comes from the STEP property
att_eComUSP2
- ecom_usp3 comes from the STEP property
att_eComUSP3
- warning comes from the STEP property
Warning
- dangerous_goods_classification comes from the STEP property
DangerousGoodsClassification
- un_classification comes from the STEP property
UNClassification
- net_weight comes from the STEP property
NetWeightProduct
- grundprice comes from the STEP property
Grundprice
- merchandising comes from the STEP property
Merchandising
- spa comes from the STEP property
Spa
- soulwear comes from the STEP property
Soulwear
- styling comes from the STEP property
Styling
- product_title_ecom comes from the STEP property
ProductTitleEcom
- how_to_use_block comes from the STEP property
HowToUseBlock
- step_product_range comes from the STEP property
Range
#
GiftcardFor every product:
If the product IsGiftCard, we set the GiftCardType
to INTERSOLVE
. When it not IsDigitalGiftCard, we set the StockResource
to RequiredForSale = true
.
If the setting Rituals:Loyalty:MemberCards
contains the CustomID
of the product, we also set the StockResource
to RequiredForSale = true
. However, we also make sure it does not have the product type GiftCard
because member cards are not activated by intersolve.
#
PricesFor every product:
Prices are configured for all products that are: IsBundle, IsSet, IsTradeUnit
(from STEP) or has a BarcodeCU
(from STEP).
#
ProductstatusFor every product:
The publication statuses for the no-language content are set to import
, public
and step_status_STEPSTATUS
where STEPSTATUS
comese from STEP property ItemStatus
.
If the product is a giftcard but not a digital giftcard, the productstatus DisablePickup
is added.
#
SearchWhenUnavailableFor every product:
Set the property hide_when_out_of_stock_in based on the DW_NotSearchableIfUnavailable
property from STEP.
#
TalismanFor every product:
If the product IsTalisman, we add the following product requirements:
- talisman-name type: string, required: true, array: false
- batch-code type: string, required:true, array:false