Project 2. Migrate BKD to new Loyalty platform

Timelines and status are being managed on this Monday board.

Contents

Milestones

Milestone

Name

Outcome

Work required

How to test

Owner

Milestone

Name

Outcome

Work required

How to test

Owner

1

Loyalty setup

Loyalty platform is technically ready, with no impact on guests or operations

  • Create the Loyalty back end in all environments (Staging, QA, Production)

  • Configure webhooks on Sanity and Terraform

  • App should continue to work as today

  • Look into database and ensure that new users have a Loyalty ID associated with their account

Valentina

2

Offer migration

Existing offers available to BKD guests exist in the Loyalty platform (excluding upsells, marketing tiles and guests assigned to personalised offers)

  • Development required to allow offers to be configured as Open or Closed

  • Migrate offer content using an existing script

  • From this point onwards, creating offers needs to be done both in CBA and Loyalty (Production)

  • Standard QA procedure to test that all the content was migrated over (estimated 1 week)

  • No impact for guests at this stage

Silvia

3

Redeem Loyalty offers

As a test user, I can place an order using the BKD app where the offer data comes from the Loyalty platform, and the experience does not change to what happens today. Excluding upsells, marketing tiles and personalised offers.

  • Display offers on the BKD app coming from Loyalty

  • For signed out guests: if offer is open, display the static code. If offer is closed, ask the guest to sign up or sign in

  • For signed in guests: display the QR code with the embedded Cognito ID (both open and closed offers)

  • Configure selected test users in Launch Darkly

  • Observe that my list of offers contains open offers, closed offers and no personalised offers

  • When I view an open offer, the behaviour is the same as today

  • When I view a closed offer while signed out, I am prompted to sign up or sign in

  • When I view a closed offer while signed in, the behaviour is the same as an open offer

  • I can place an order and redeem an offer that is configured in Loyalty

Valentina

4

Upsells

As a test user, I can see an upsell to another offer when I click on an offer that has an upsell configured on the Loyalty platform

  • Development work required on Sanity, BE and FE to support upsells

  • Manually configure upsells on the Loyalty platform by copying from CBA

  • Configure selected test users in Launch Darkly

  • Click on an offer that has an upsell configured, upsell shows up

  • Add the upsold offer to the order

  • Complete the order and ensure the user journey matches what we have today with CBA

Valentina (development)

Silvia (configuration)

5

Marketing tiles

As a test user, I can see marketing tiles on my offers page

  • Development work required on Sanity, BE and FE to support marketing tiles on the offers page

  • Manually configure marketing tiles on the Loyalty platform by copying from CBA

  • Configure selected test users in Launch Darkly

  • Check that marketing tiles show up in the offers page, and in the position that was configured in Sanity

  • Click on a marketing tile

  • Ensure the guest gets taken to the path configured in Sanity for that marketing tile

Valentina (development)

Silvia (configuration)

6

Personalised offers

As a test user, I can see current and past personalised offers on my offers page. “Past” means offers that were assigned to an user in CBA

  • We already support personalised offers for web and apps (not Kiosk), so no development work required. Kiosk will be handled in the Loyalty project which comes after this one

  • Ensure the migration script can be executed multiple times

  • Run the migration script to assign personalised offers to specific users in the Loyalty platform

  • Configure selected test users in Launch Darkly

  • Assign a personalised offer in CBA

  • Run the migration script

  • Ensure that the personalised offer becomes configured in Loyalty and appears on the users' offers page

  • Assign a different personalised offer on Loyalty

  • Ensure that the second personalised offer appears on the users' offers page

Valentina

7

Rollout

BKD is using open offers on the Loyalty platform for all stores and users. There is no CBA component in use. Loyalty features continue to be switched off

  • Configure Braze webhooks to connect to Loyalty instead of CBA

  • Run the personalised offers script one more time in Production

  • Enable the Loyalty (open offers) flag(s) to all users in Production

  • Regression testing in Production prior to rollout (including events)

  • In-store testing by BKD prior to rollout

  • Smoke test after rollout

QA Team

BKD

Scenarios

This section is used as a reference to help ensure that all development requirements are covered by this project.

1. In-store order at the counter

1.1. User is signed out

  • Guest goes to a store, opens the BKD app and selects a specific offer that they want to use on a purchase

  • Offer shows on on the app and displays a QR code and a 3 digit static code. There is a 15 minute timer to make the offer disappear from the user’s list (even if the user does not redeem it)

    • The QR code has the following format: BKCP01_[Cognito ID]_[PLU]. However, we don’t have a Cognito ID for a logged out user, so we use a 0 instead. An example QR code for a signed out user would be: BKCP01_0_32942

  • Guest makes their order at the counter, scans the offer code and completes the order at the counter. If there is a problem with the scanner, the cashier has the option to enter the code manually

  • In this scenario there is no integration from Toshiba to RBI. The offer code must have been previously configured in Toshiba for it to be recognised during purchase.

  • After 15 minutes the offer will disappear from the guest’s offers list

1.2. User is signed in

  • Guest goes to a store, opens the BKD app and selects a specific offer that they want to use on a purchase

  • Offer shows on on the app and displays a QR code and a 3 digit static code. There is a 15 minute timer as well. The QR code contains the user’s RBI Cognito ID and the offer PLU.

    • Example code: BKCP01_fd1e018a-e274-408e-beaf-f632a6851ea2_32873

    • The PLU is configured in Sanity at the offer level. Today in the offer config for CBA, later in the offer config for Loyalty, but the PLU field already exists

  • Guest makes their order at the counter, scans the QR code and completes the order at the counter

  • In this scenario, again there is no integration from Toshiba to RBI. Toshiba records the QR code to track users, and sends periodic reports (containing the Cognito ID’s and the offer PLU’s) to mParticle, which then flows into Amplitude. Assumption that this does not change

  • After 15 minutes the offer will disappear from the guest’s offers list

2. In-store order on a kiosk

2.1. User is signed out

  • Assumption that the flow is the same regardless of kiosk vendor

2.2. User is signed in

TODO

3. Mobile order

3.1. User is signed out

TODO

3.2. User is signed in

TODO