Case Study

FNP - Product Shipment Availability (PSA)


Product Shipment Availability (PSA) module controls the order taking process by defining the availability of a product for delivery to a specific geo (atomic), on a specific day using a specific shipment method and a time-slot. PSA functionality contains the logical breakup of configuration sets that are created to allow answering the question:


“Is a product available for delivery to a specific geo (atomic), on a specific day using a specific shipment method and a time-slot, and which FC, and which Carriers will fulfil that order.”

Case Study

FNP - Product Shipment Availability (PSA)


Product Shipment Availability (PSA) module controls the order taking process by defining the availability of a product for delivery to a specific geo (atomic), on a specific day using a specific shipment method and a time-slot. PSA functionality contains the logical breakup of configuration sets that are created to allow answering the question:


“Is a product available for delivery to a specific geo (atomic), on a specific day using a specific shipment method and a time-slot, and which FC, and which Carriers will fulfil that order.”

Case Study

FNP - Product Shipment Availability (PSA)


Product Shipment Availability (PSA) module controls the order taking process by defining the availability of a product for delivery to a specific geo (atomic), on a specific day using a specific shipment method and a time-slot. PSA functionality contains the logical breakup of configuration sets that are created to allow answering the question:


“Is a product available for delivery to a specific geo (atomic), on a specific day using a specific shipment method and a time-slot, and which FC, and which Carriers will fulfil that order.”

Introduction

Key terminologies


Product - A finished good that is independently sold by FNP.


Component - Raw material from which a Product is manufactured. For example Red Rose is a component, whereas Vivid is a product that contains 8 red roses, filler, wrapper, & ribbon as components.


BOM - Abbreviation of “Bill of Materials” is the table that contains component quantities from which a product is manufactured. For example, Vivid’s BOM looks like (Red Roses - 8, filler - 50 grams, wrapper - 10 cm, ribbon, 20 cm).


Fulfillment Center (FC) - A facility that manufactures the Product and initiates the delivery to the recipient of the order. This may be a franchise store, warehouse, hub, or a third party drop shipper.


Carrier - A company that is responsible for moving the product from the fulfillment center to the recipient address.


Geo - a bounded geographical area defined on a map. It is used to mark the areas covered by a carrier for delivery.


Geo Group - A set of geos which share the same configuration. This is created to reduce the number of configurations required to be done in PSA. A geo may exist in multiple Geo groups. Each Geo group will contain only unique geos. Note that in Revvit 1.0, this was being referred to as Delivery Area. There will be no equivalent of Delivery Area Group in Revvit 2.0. A Geo Group will only contain Geos, and not other Geo Groups.


Product Group - Same as above, but products instead of Geos.


Component Group - Same as above, but Components instead of Geos.

01.

Introduction

Conceptual introduction


Tuples - a tuple is a finite list of elements


There are 7 variables ie,

Product - 100,000 SKUs

Destination geo - 30,000 pin-codes

Delivery date - 365 days in a year

Shipping method - 20 options

Time slot - 66 slots

Carrier - 1000 carrier options

Partner - 500 FCs

The resulting ruleset is going to have records to the order of sextillions rows in an excel sheet. It would be humanly impossible to manage so many records, hence a way to slice and dice the tuples and group them, expand them etc., is required to make it manageable.

The team decided to use the following model to group and summarise.

Have primary configuration that can be generalised for a product/product group combination for a geo-location and then we use the concept of “Override”, and “Exception to achieve the desired set.

02.

End users a.k.a. Actors


Partner Support Executives - Manage Components’ association against each partner

Availability Executive - Manage Data Masters such as: shipping and slot, geo. Manage exceptions and overrides.

Availability Manager - Will oversee the configurations in the system, use the dashboard for tactical decisions, notifications will go to this role, Geo-specific Ops head will also play this role.

Customer - Customer will consume the output of this PSA on the front-end in terms of availability

Partner (Fulfilment Centre) - Will See Configurations (associated components, serviceable pin-codes, etc) related to him/herself

Inventory Module - Inventory Module Will provide current Inventory at the component level at a certain frequency (after reconciliation with each entities)

Navision - Will provide the feed of all components to PSA

Product Information Management System - Will provide a feed of all Products to PSA

Front-end Module: Will consume availability information from PSA and populate the serviceability accordingly, validate the serviceability during checkout & Abandoned Cart.

03.

Layers


Entire PSA consists of a significantly large number of configurations. If these configurations are not “organized” properly, it can become easily overwhelming for the Business Team - the “Availability Configuration” team. For this purpose, all configuration sets are laid out in 3 different layers:


Static Layer

Configured during the onboarding of a partner/product/carrier etc., and defines the configuration that is more or less static, and edits to this configuration happen very rarely - whenever the partner changes her business guidelines.


Dynamic Layer

Configuration to take care of planned changes - some impending event that affects availability. It is this layer that listens to inventory changes and enables / disables products / geos etc.


Runtime Layer

Configuration to take care of unplanned eventualities that should affect the current order-taking process - that affects changes in real time! This layer will very closely interact with all frontend modules that utilize PSA for validating before taking an order.

04.

User stories

Static Layer

Configured during the onboarding of the partner, and defines the configuration that is more or less static, and edits to this configuration happen very rarely - whenever the partner changes his business guidelines.


Create Component Group

Delete Component Group

Search Component Groups

Rename Component Group

Add Components to Component Group

Remove Components from Component Group

Create Product Group

Delete Product Group

Search Product Groups

Rename Product Group

Add Products to Product Group

Remove Products from Product Group

Create Geo

Modify Geo

Delete Geo

Search Geos

Create Geo Group

Delete Geo Group

Search Geo Groups

Rename Geo Group

Add Geos to Geo Group

Remove Geos from Geo Group

Create Shipping Method

Delete Shipping Method

Search Shipping Method

Rename Shipping Method

Create Shipping Method Group

Rename Shipping method Group

Add Shipping Methods to the Shipping group

Remove Shipping Methods to the Shipping Group

Create Timeslot in Timeslot master

Edit Timeslots in Timeslot master

Delete Timeslots from Timeslot master

Add Timeslot to Shipping Method

Remove Timeslot from Shipping Method

Bootstrapping Partner (irrestive of Geo) availability in the PSA system

Add / Edit postal code

Add / Edit Store Lat / Long

Search components in the component section

Add / delete components from the list

Add / Edit Common Prep time

Add / Edit Shipping Methods

Add / Edit Time slots, Time slots would be shipping method specific

Add / update Business Hours

Add / update Common Cut-Offs

Add / remove serviceable Pin Codes/delivery areas along with cut-offs

Manage Overrides

Manage Exceptions

Manage Fulfilment Center Holiday

Manage Overrides

Manage Exceptions

Copy availability configuration from one partner to another

Manage Common Product-group-vs-Prep-Time configuration (across vendors) Mapping of Carriers with Partners 43. Mapping of availability for Express Partner (Fulfilment Centre)

Mapping of availability for Warehouse (Fulfilment Centre)

Mapping of availability for Third Party ((Fulfilment Centre)

Mapping of availability for International Partner (Fulfilment Centre)

Show list of Products not mapped to any Fulfilment Center (to do group mapping)

Create a Carrier in Carrier Master

Associate a carrier to the partner

Dynamic Layer

Configuration to take care of planned changes - some impending event that affects availability. It is this layer that listens to inventory changes and enables / disables products / geos etc.

Runtime Layer

Configuration to take care of unplanned eventualities that should affect the current order-taking process - that affects changes in real time! This layer will very closely interact with all frontend modules that utilise PSA for validating before taking an order. Runtime Tool will utilise the Runtime Layer to switch on/off availability in bulk. The view includes order analytics, and is used as “decision-making-and-execution” event.

05.

Design


The design is huge can be accessed in the figma file:


https://www.figma.com/file/kzmzNG4pT0f9R3ggRm9StL/PSA?type=design&node-id=515%3A0&mode=design&t=sz0jAK1Gz3H3xFil-1

Check out my first project!

Osmo - ID Service