Price Indexing
Proposal
Below shows our proposal for the price service. The price service ingest from Nav is consistent for any third party consumer. All that changes is we introduce a price processing service in the Algolia layer.
Common Flow
- Gitlab triggers a pipeline via a scheduled event based on currency/timezone. This pipeline starts an instance of Platform - Get Current Prices (dockerized node app)
- Get Current Price app requests the current price via the Nav APIGW.
- The APIGW requests the current prices based on currency/timezone.
- Price data is returned from Nav. The XML data is transformed into the Price Interface at this stage.
- Prices are put into our Elasticache (redis) in bulk
Algolia

- When the pipeline is complete it will send a finished event back to Gitlab. This will then trigger a cross project pipeline.
- The pipeline will need to trigger an instance of the Algolia Price Process (dockerized node app) as well as triggering the respective Hybris and NewStore node applications.
- Prices are fetched from Elasticache based on currency and are transformed for Algolia.
- Prices are then ingested into Algolia. Depending on our index structure this will either be by updating a single price attribute or getting prices first and updating the price by currency key.
- The new prices are then indexed in Algolia.
Fields required in the NAV payload
Price data sent from Nav via the Nav API Gateway require the following fields for each price.
| Name | Description | Example | Comments |
|---|---|---|---|
| SKU | Product ID | WLO01XXNBPSML | |
| StartDate | Start date price | 2020-10-20T10:00:00Z | Currently not used in either hybris or newstore |
| EndDate | End date price | 2035-10-20T10:00:00Z | Currently not used in either hybris or newstore |
| Price | Price | 95 | |
| WasPrice | WasPrice | 110 | |
| Currency | Currency of the price | EUR | |
| Type | Campaign (rccpricegroup, customerpricegroup, archivepricegroup…) | customerpricegroup | |
| Source | WEB/RETAIL | WEB |