Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

This document aims to explain in detail how BK ES will migrate their Loyalty system from SessionM to RBI. Prior understanding of the RBI Loyalty API is required.

Assumptions

Info

List of assumptions coming from the original RBIberia plans.

...

  • Phases 0 and 1 - doesn’t matter because RBI is not the master of loyalty

  • Phase 2:

    • Import loyalty data including earn and burn transactions for the last two years (no points expiration data will be imported)

    • Run the loyalty points expiration on our side

    • Update the loyalty points balance to match SessionM

    • From this point onward, rely on the RBI loyalty points expiration process

...

  • We will disable downgrades from Superking to King during the migration, to avoid guest frustration

    • We propose during During the migration (Phase 1-3) to we will change the requirements for users to move from Loyalty Tier 2 to Loyalty Tier 1 in Sanity to 6 months instead of 1 month as it is today. In this way, no users would be downgraded Tiers during the migration. In this way, no Development work would be needed.

Cancellations and refunds

  • There are no gaps with cancellations and refunds initiated by the POS, since they will use both the RBI and
    • .

  • User will continue being able to go from Tier 1 (King) to Tier 2 (Superking) by earning 15000 points in 6 months on a rolling basis.

    • Session M will send this information to RBI

Cancellations and refunds

  • There are no gaps with cancellations and refunds initiated by the POS, since they will use both the RBI and SessionM API’s

  • For cancellations and refunds currently handled in SessionM, during the transition period support staff will continue to use SessionM and, in addition, will repeat the operation on the RBI Support Tool

  • This will guarantee that cancellations and refunds result in the same loyalty points balance in both RBI and SessionM

...

  • Guest opens the Airtouch app or Homeria website and asks to show the Loyalty ID / SessionM ID

  • Airtouch app / Homeria should already have the static SessionM ID in the session

  • Guest scans the SessionM ID on the Tillster kiosk and authenticates (this returns the email address)

  • Guest fills up their basket and completes the order (this retrieves the basket price calculation)

  • Tillster creates a loyalty transaction in SessionM

  • Tillster creates a loyalty transaction in RBI

    • Call Identify by sending the email address

    • Call Transaction Update (CLAIMED) with an empty basket

In-store order on WinRest POS

  • Guest opens the Airtouch app or Homeria website and asks to show the Loyalty ID / SessionM ID

  • Airtouch app / Homeria should already have the static SessionM ID in the session

  • Guest scans the SessionM ID on the scanner and authenticates (this returns the email address)

  • Guest/operator completes the order (this retrieves the basket price calculation)

  • WinRest creates a loyalty transaction in SessionM

  • WinRest creates a loyalty transaction in RBI

    • Call Identify by sending the email address

    • Call Transaction Update (CLAIMED) with an empty basket

Changes needed

RBI

  • S3 data load script to be modified to capture loyalty data from SessionM also (which will result in creating a loyalty ID for each user). No longer necessary after the March changes in plan.

  • After importing users from Homeria (initial data load), there will be a data extract from RBI to be imported into Homeria. Today this data extract contains the RBI Cognito ID, and it needs to be extended to include the RBI Loyalty ID

  • Identify endpoint to accept an email address

SessionM

  • Extract of loyalty data (loyalty points balance, tier and loyalty transactions). No longer necessary after the March changes in plan.

Homeria

  • Extract of user data including email address (SessionM ID required to link with the above). No longer necessary after the March changes in plan.

Airtouch

  • Remove screens that will not be used (discussed separately)

Tillster

  • Call RBI Loyalty API (Identify and Transaction Update)

WinRest

  • Call RBI Loyalty API (Identify and Transaction Update)

...

  • Guest opens the Airtouch app or Homeria website and asks to show the Loyalty ID

  • Airtouch app / Homeria website calls the RBI Create OTP endpoint

  • Guest scans the OTP on the Tillster kiosk

  • Tillster calls the RBI Identify endpoint and uses the OTP to authenticate the guest. Identify responds with a Transaction ID, RBI Loyalty User ID and the guest’s email address

  • If guest wants to use offers/cupones, they would input their code directly in the kiosk. These offers are not configured in RBI

  • Guest completes the order

  • Tillster updates SessionM, using the email address retrieved previously

  • Tillster updates RBI Loyalty (this should be similar to what happens today on PLK ES):

    • Call Transaction Validate

    • Call Transaction Update (CLAIMED) with an empty basket

In-store order on a WinRest POS

  • Guest opens the Airtouch app or Homeria website and asks to show the Loyalty ID

  • Airtouch app / Homeria website calls the RBI Create OTP endpoint

  • Guest scans the OTP on the WinRest QR reader

  • WinRest calls the RBI Identify endpoint and uses the OTP to authenticate the guest. Identify responds with a Transaction ID, RBI Loyalty User ID and the guest’s email address

  • If guest wants to use offers/cupones, they would ask the cashier to add the offer code to their order. These offers are not configured in RBI

  • Guest completes the order

  • WinRest updates SessionM, using the email address retrieved previously

  • WinRest updates RBI Loyalty (this should be similar to what happens today on PLK ES):

    • Call Transaction Validate

    • Call Transaction Update (CLAIMED) with an empty basket

Changes needed

RBI

  • No changes required since the Create OTP endpoint already exists

Airtouch

  • Call the RBI Get Loyalty OTP endpoint to retrieve an identification code

  • Use the RBI Loyalty API to record earn transactions for collection orders

  • Continue to use the SessionM API to record loyalty transactions for collection orders

  • Use the Homeria BE to record earn & burn transactions for delivery orders (this will cover both RBI and SessionM)

Homeria

  • Call the RBI Get Loyalty OTP endpoint to retrieve an identification code

  • Use the RBI Loyalty API to record earn transactions for delivery orders

  • Continue to use the SessionM API to record earn & burn transactions

Tillster

  • Use the RBI Loyalty API to record earn transactions

  • Continue to use the SessionM API to record earn & burn transactions

WinRest

  • Use the RBI Loyalty API to record earn transactions

  • Continue to use the SessionM API to record earn & burn transactions

...

  • During this phase, RBI will become the master for loyalty data, and SessionM will be used as a backup in case we need to roll back.

  • When Phase 2 starts, we need to import the last two years of loyalty transactions from SessionM, to make history available to guests (on the Airtouch app now, and when they later switch to the RBI app). The import process will be as follows:

    • All loyalty (earn) transactions made to date will be voided. We need to void instead of deleting, because data in Snowflake cannot be deleted.

    • An extract will be taken from SessionM, covering the last two years of transactions and the current loyalty points balance. Each transaction record needs to include the date and time when the transaction took place, loyalty points, whether earn or burn, channel, if the burn is due to spending rewards of points having expired.

    • The extract will be loaded into RBI, after which the expiration points feature will be switched on. This . RBI will migrate users without loyalty point expiration balance. From this point onward, rely on the RBI loyalty points expiration process. RBI will expire all loyalty points that were accrued over 6 months ago, rounded to the nearest month end.

    • At this point the RBI loyalty points balance will not match SessionM’s because it doesn’t have the full transaction history. So we will calculate the loyalty points balance on RBI based on the total of transactions and compare with the current SessionM balance for each user.

    • Finally, we will record a single remediation transaction per user with the difference, to make the loyalty points balance in RBI match SessionM.

  • Airtouch app and Homeria website will need to call the Get Loyalty User endpoint, using the RBI Loyalty User ID as input. Get Loyalty User will return RBI loyalty points balance, tiers and guest email.

  • Rewards will be configured in Sanity.

  • Configure the generic PLU for rewards

  • RBI rewards become active on the Airtouch app and the Homeria website, and guests are able to redeem them when making collection, delivery or in-store orders (requires the app to retrieve rewards from RBI)

  • Reward redemption should use the RBI Loyalty API version that was customized for RBIberia: RBI Iberia | Loyalty POS/Kiosk Integration

Changes needed

RBI

  • Importing loyalty transactions (2 years) and updating the loyalty points balance to match SessionM

  • Configuration of rewards in Sanity

Airtouch

  • Retrieve rewards from RBI and display them

  • Allow rewards to be added to the guest’s basket (collection orders)

  • Include rewards in the calls to the RBI Loyalty API (the reward ID’s are needed)

  • Disable calls to SessionM

Homeria

  • Retrieve rewards from RBI and display them (TBC if it will be needed)

  • Allow rewards to be added to the guest’s basket (delivery orders)

  • Include rewards in the calls to the RBI Loyalty API (the reward ID’s are needed)

  • Disable calls to SessionM

Tillster

  • Retrieve rewards from RBI and display them

  • Allow rewards to be added to the guest’s basket

  • Include rewards in the calls to the RBI Loyalty API (the reward ID’s are needed)

  • Disable calls to SessionM

WinRest

  • Allow rewards to be added to the guest’s basket

  • Include rewards in the calls to the RBI Loyalty API (the reward ID’s are needed)

  • Disable calls to SessionM

...

  • Points should only be assigned when order is delivered or picked up

    • If the transaction is burn only - points are substracted when order is placed

    • If the transaction is earn only - points are assigned when order is delivered or dropped off

    • If the transaction is earn + burn -

      • Output is user earnt points are > than burnt points - points are adjusted when order is delivered

      • Output is user burnt points > that earnt points - points are adjusted when order is placed

Since we dont expose this information in our API. RBIberia Homeria and Airtouch do not have this functionality configurable, RB Iberia has accepted this edge fraud case for phase 2 until we switch to white label app

...

, i.e. all points will be awarded as payment is placed. RBIberia acknowledged on April 4th 2024 -

View file
nameMicrosoft Outlook - Memo Style - loyalty compliance.pdf

Phase 3 (white label app migration)

...

The RBI Loyalty API endpoints are documented here: Loyalty API

In addition, these will also be used:

Name

Input

Output

Get Loyalty OTP

RBI Loyalty ID

Loyalty One Time Passcode (valid for 15 minutes, suitable to call the Identify endpoint)

Get User Details

RBI Loyalty ID

Email address, loyalty points balance and tier of the guest

Open questions

  • Point expiration

    Point expiration will be set to 180 days and will expire

    Data Dump at the

    end of each month (confirmed by @Raúl Moreno)

    We will only migrate user’s point expiration based on their active loyalty points. Past loyalty points expiration from previous point balance will not be migrated.

    ACTION:@Raúl Moreno to confirm by April 3
  • After migration, RBI point expiration dates will be different from SessionM since SessionM will expire points daily and RBI will expire points at the end of the month (confirmed by @Raúl Moreno)

  • Confirm how SessionM will send us the point expiration date

    ACTION:@Raúl Moreno to confirm by April 3

    Loyalty Tiers

    Users will be able to upgrade tiers. Can you confirm how many crowns users need to earn and in how much time for them to become Tier 2?

    ACTION:@Raúl Moreno to confirm by April 3
  • Users that are in Tier 2 will continue in Tier 2 for the next 6 months once the migration starts  (confirmed by @Raúl Moreno)

  • Loyalty Transactions

    • Two years worth of loyalty transactions will be migrated to the RBI app at the end of Phase 1 (confirmed by @Raúl Moreno)

  • Cancellations

    • Vendors will send us cancellations using the VOID endpoint (confirmed by @Raúl Moreno)

    • Customer Support team will also have access to the support tool and will cancel orders in RBI support tool as well as Session M support tool only in Phase 2 and onwards (confirmed by @Raúl Moreno)

  • When to send Identify and Update Transactions

    Raul raised potential fraud implications for order to be identified and claimed only when the order is picked up/ delivered for mobile ordering

  • Potential solutions: Homeria creates 2 orders - (1) to claim Rewards only and deduct points right after payment is complete and (2) to earn points after order is delivered or picked up

  • Implications: If the above solution is chosen, then to cancel orders Homeria will need to VOID both order 1 and order 2 to void complete order

  • ACTION:@Raúl Moreno to confirm which solution to be used by April 3

Next actions

  • Phase 0:

  • Phase 1:

  • Phase 2:

    Define how rewards will be handled (Silva, Carlos)

    End of Phase 1

    • Pending on understanding the structure and size of the data dump to be sent from SessionM to RBI at the end of Phase 1 for script to be worked on

Change Log

  • In March 2024 there were two changes of plans:

    • To continue to burn rewards throughout Phase 0, to minimise impact on sales. This means that burn transactions will be sent to RBI, and the loyalty points balance will not match between RBI and SessionM

    • To change the Loyalty API interface allowing authentication with an email address, to reduce the number of calls made by POS/Kiosks