Merit · E-Commerce Solution · Al Fursan (Saudia)

Moving Al Fursan off the legacy system

We know where we are going. We do not yet know what we are carrying. This is the plan to find out, build it, and cut over by the end of October, with a real go/no-go on 12 September.

Owner Brian Arfi Faridhi · Project Manager Mohammad Albadarneh · Target aiming October, likely November · Status draft for Fred's sponsorship · Node nw-afmig

01The problem, stated precisely

We cannot list what to build in the Ecommerce Solution, because nobody holds a full picture of what the legacy system does today.

LEGACY SYSTEM Al Fursan today Custom storefront Marketplace · Platform · Ops Live, and undocumented THE GAP ? What does it actually do ECOMMERCE SOLUTION Al Fursan, Oct 2026 Storefront · OMS · PIM Ecommerce Core · Seller Portal Multi-tenant, tenant #1

Why the list we already have is not the list

The repo holds a parity list: 14 P0 gaps in the Q3 2026 Ecommerce Solution Plan. That list is real and useful. It is also not the parity list, and treating it as one is the single largest risk in this migration.

Those 14 gaps were derived from what Marketplace and Platform shipped in Q2 2026. They are a one-quarter delta. Everything the legacy system gained before April 2026 is absent.

Known · on the current list
14 P0 gaps, from one quarter of shipping
Unknown · not on any list
? ? ?
Everything Al Fursan gained before April 2026. The base the delta was measured against.

We measured it. Here is what came back.

A mechanical comparison ran against both Jira instances on 24 August, epic by epic, before discovery started. It does not settle the question, and it does move it.

LegacyMP + MPS
12,286 tickets
Ecommerce SolutionMSP + STOR
580 tickets
21 times the ticket history on the legacy side. Most of it is bug fixes, iterations and dead ends, so it is not 12,286 tickets of work. It is 12,286 tickets nobody has ever counted, and the 14-item answer was never derived from them.
Absent

13 legacy epics

Nothing on our boards covers them at all.

MP: catalog selection and approval MP-11621 · fulfilment cooling period MP-11685 · earn model, cashback in miles MP-11785/86 · promotions engine phase 1 MP-12016 · data-driven ordering phases 1 and 2 MP-11568 MP-11841 · bulk order placement MP-12070

MPS: payouts MPS-17 · points exchange MPS-299 · online catalog MPS-483 · API client onboarding MPS-154 · Giftcardsby MPS-137 · RewardsBy MPS-261

Partial

8 more

Exist on both sides, narrower or unfinished.

Five bespoke storefronts collapse into STOR-1 Tenant Provisioning, still To Do · search MP-11888 to MSP-175 · product import MP-9603 to MSP-118 · MGC fulfilment MP-11581 to MSP-176 · SMS and email to MSP-48 · merchandise and catalog to MSP-283 · Content API to STOR-4, still To Do

Clean match

1

Webhooks. MPS-139 against MSP-27, done.

One clean match out of twenty-two compared.

So the list roughly triples, at epic level alone

14 known items, plus 13 absent, plus 8 partials that each need sizing. None of that counts capability living in stories rather than epics, and MP epics are named by client rather than by capability, so most of the surface never became an epic. The two that matter most: STOR-1 Tenant Provisioning is To Do and replaces five bespoke storefronts at once, and Points Exchange has no counterpart at all, which is the reason Al Fursan exists.

Read it with the caveat that makes it honest

A missing epic does not prove a missing capability. It proves nobody wrote an epic. This is a starting list for discovery to confirm, not a backlog. It is enough to say the 14-item answer was never derived from the real surface, and it understates rather than overstates. Comment on it here: the first-pass gap list.

Cause 1

The storefront is custom

Brian on the 30 July Marketplace sprint call: it "is custom and we definitely need to build everything that the marketplace team already have into what we have." A custom frontend has no vendor documentation and no feature list.

Cause 2

Three teams, no single map

Marketplace owns the storefront surface. Platform Services owns payments, payouts, messaging, content, partner integrations, catalog and merchandise. Ops owns the catalogue and the rules that never became code. No one person can answer the question.

Naming

Older meeting transcripts render this as "AlphaZen" or "AlphaSun", including the one that reached DEC-0066. Both are transcription errors for Al Fursan. There is no separate system by that name.

So the first deliverable is not a build plan

It is an inventory. Section 04 is how we produce it.

02What the migration must achieve

One thing for Saudia, one thing for Merit, and one rule that governs the whole build.

Saudia sees

No loss, one visible gain

Same journeys, same catalogue, same points behaviour, same order history. The only change a member notices is the new design, which Raneen is producing.

This gives a clean client conversation: it is a redesign, and the platform change sits underneath it. Honest, and it lowers the approval cost.

Merit gets

Tenant number one

Al Fursan stops being a bespoke build and becomes the first tenant on a multi-tenant product. The legacy system is one build per client. The Ecommerce Solution is one product serving many.

That is the moat argument: the stack compounds across tenants, a bespoke build never does.

Two boundaries that decide what nobody has to build

Boundary

Saudia only

This migration moves one client. Entertainer, Nielsen, NIQ, Kantar Verian, SAIB, MCM and Agora stay on the legacy system and stay supported there. The stack is built tenant-generic so they can follow, but no other client is in this plan and no date is implied for them.

Boundary

Legacy becomes a gift card supplier

Gift card fulfilment keeps running on the legacy system. The storefront never calls it directly: an order goes storefront to Ecommerce Core to order state management to fulfilment service, and only then triggers legacy to issue the card. Nothing in the register may propose rebuilding it. This is the meaningful cut: gift cards are the highest-volume thing Al Fursan does, and leaving that path untouched removes the largest single source of cutover risk.

Both boundaries were set before discovery, on purpose, so the lenses do not spend a week inventorying work nobody intends to do.

The scope rule, inside those boundaries

We rebuild the full surface. We do not measure which legacy features get used and drop the quiet ones. Everything Al Fursan does today gets built. That makes the build larger and the sequencing question sharper, and section 08 answers it: everything is built, but not all of it before cutover.

03The date

One date governs this migration. Every other date is a step toward it, not a second target.

The commitment
Aiming end of October
November is the more likely landing. Saudia only, and gift card fulfilment stays on the current service.

The runway, drawn

From 24 August to the end of October is 9.7 weeks. It divides three ways, and the split holds before we know anything else.

W1
W2
W3
W4
W5
W6
W7
W8
W9
W10

■ discovery, 2 weeks   ■ build, ~5 weeks   ■ dual run and cutover, 2 weeks

Nothing has started yet

No capability inventory exists, so the parity build has nothing to build from. That is why discovery takes the first two weeks rather than running alongside the build.

One date said out loud, everywhere

The team, Fred and Saudia hear end of October and nothing else. Carrying two dates at once is how the Al Fursan BRD ended up with two versions of v2.1.

04Phase 1: build the inventory

Reading documents will not produce it, because the documents were never written. Three independent lenses, run in parallel, then reconciled. Each finds what the others miss.

LENS A Code and routes Aditya LENS B Platform services Akshay LENS C Ops and catalogue Mawi · Raneem RECONCILE Brian, 5 Sep OUTPUT Capability Register
Lens A · Aditya Sanka

Code and routes

Walk the storefront routes and the Marketplace backend endpoints. Every screen, every API, every admin action.

Finds: the full surface, including features nobody remembers shipping
Lens B · Akshay Chennupati

Platform services

Inventory every Platform service Al Fursan calls: payments, payouts, messaging, content, partner integrations, catalog, merchandise.

Finds: the integration list, invisible from the frontend
Lens C · Mawi and Raneem

Ops and catalogue

Walk the Ops runbook: catalogue rules, supplier coverage, approval flows, merchandise handling, the manual steps that never became code.

Finds: the business rules that live in people
Lens C is the one that gets skipped

Ops rules that were never coded do not appear in lens A or lens B. They surface at cutover, as an incident.

05The Capability Register

One row per capability. No row leaves the register without every column filled.

ColumnWhy it is there
CapabilityThe thing Al Fursan does today
Legacy ownerMarketplace, Platform, or Ops
Where it livesStorefront route, Platform service, or manual process
Ecommerce Solution statusExists, partial, or absent
VerdictRebuild or integrate. Every row gets one
WaveCutover, or post-cutover
Size and ownerRequired on every row
The wave column is the deliverable

Because we build the whole surface, the register does not decide what gets built. It decides when. Every row is either in the cutover wave or the post-cutover wave, and every post-cutover row carries a named owner and a November date. That is what stops "later" from meaning "never".

06The plan, phase by phase

Everything before the go/no-go is fixed. Everything after it depends on what the register says.

24 AUG
1 SEP
8 SEP
15 SEP
22 SEP
29 SEP
6 OCT
13 OCT
20 OCT
27 OCT
Phase 0 Align + mandateworking group, Fred
24 Aug
Phase 1 Discovery3 lenses
26 Aug to 5 Sep
Phase 2 Size and decideBrian, Albadarneh, Fred
8 to 12 Sep
GO / NO-GO 12 Sep
Phase 3 Build4 parallel tracks
15 Sep to 17 Oct
Phase 4 Cutoverdual run, ramp, 100%
20 to 31 Oct

Phase 0 · Align and get the mandate · week of 24 August

#StepOwnerBy
0.1Kick-off with the working group. Confirm the approach, the two scope boundaries, and the Project Manager seat. Each member pulls in who they need and hands down what they ownBrian · Fayez Abu Helow · Mohammad Albadarneh · Mawi · Ghaith Fakhouri · Raneen Abdelfattah · Ammar AlSadeqMon 24 Aug, 12:00 Amman
0.2Confirm to Fred in writing what starts now, who is on it, the boundaries, and the honest date. Discussed offline alreadyBrian to Fred BarryMon 24 Aug
0.3Record the end-of-October commitment in the decision logBrianSame day
0.4Name one accountable engineering lead. The Project Manager seat is filled, the engineering seat is notFred BarryTue 25 Aug
0.1 comes before 0.2 on purpose

Fred is asked to sponsor a plan the working group has already agreed, not a plan he has to arbitrate. The four in the room are the ones who carry it: technology direction, project management, and the two Ops seats whose rules never became code.

0.4 matters more than it looks

Day 1 of the workshop closed with 84 of 106 epics unassigned. A migration with no named engineering lead inherits exactly that. The Project Manager covers coordination, not engineering accountability, and the two are not the same seat.

Phase 1 · Alignment and discovery · 26 August to 5 September

#StepOwnerBy
1.1Kick-off with Marketplace. Scope lens A, agree the route walkBrian, Aditya SankaWed 27 Aug
1.2Kick-off with Platform. Scope lens B, get the service call listBrian, Akshay ChennupatiWed 27 Aug
1.3How the Ecommerce Solution connects to everything around it, and which Platform services stay after cutoverBrian, Muneeb MeerThu 28 Aug
1.4Ops session. Scope lens C, the catalogue and merchandise rulesBrian, Mawi, Raneem AjanaThu 28 Aug
1.5Data session. Open the data continuity workstreamBrian, Marthino YudaFri 29 Aug
1.6Three lenses run, chased dailyLens owners, tracked by AlbadarnehFri 5 Sep
1.7Reconcile into one Capability RegisterBrian, Mohammad AlbadarnehFri 5 Sep

Phase 2 · Size it and decide · 8 to 12 September

#StepOwnerBy
2.1Every row in the register gets an engineering estimateEngineering lead, coordinated by AlbadarnehWed 10 Sep
2.2Compare the cutover-wave estimate against the weeks leftBrianThu 11 Sep
2.3Split into cutover wave and post-cutover wave. Every post-cutover row gets an owner and a November dateBrian, Mohammad AlbadarnehThu 11 Sep
2.4GO / NO-GO on the October cutoverFred BarryFri 12 Sep
2.4 is what this whole document exists to produce

Brian's own words: we do not yet have enough plan. This is the date we find out. A no-go on 12 September still leaves seven weeks to build a different answer, instead of discovering the problem in the last week of October.

Phase 3 · Build · 15 September to 17 October

Four parallel tracks. Contents come from the register, so they cannot be listed yet. The tracks and owners can.

Track

Frontend and design

Storefront build on Raneen's new design, covering the legacy storefront surface.

Storefront team, design from Raneen

Track

Parity build

The rebuild rows. The 14 P0 gaps plus the 13 absent and 8 partial epics the Jira comparison found, extended by whatever discovery adds.

Engineering lead, delivery tracked by Albadarneh

Track

Integration

The Platform service calls. Payments, payouts, messaging, partner integrations, redemption.

Akshay Chennupati, Muneeb Meer

Track

Catalogue and product

Every product live on the legacy system exists in the Ecommerce Solution, with correct suppliers and rules.

Mawi, Raneem Ajana, PIM team

The catalogue track quietly decides the date

A storefront with no products is not a migration. Section 07 covers the data half of it.

Phase 4 · Shadow run and switchover · 20 to 31 October

Decided 24 August: shadow migration, not a phased ramp

The new system runs alongside the legacy system and mirrors every order and every data change, while the legacy system keeps doing the real processing. Nothing customer-facing depends on the new system until its output matches. When it does, legacy goes off and the new world goes on, in one move.

DURING THE SHADOW RUN, 20 TO 24 OCT Saudia real traffic Legacy system AUTHORITATIVE. REAL PROCESSING Ecommerce Solution SHADOW. MIRRORS EVERYTHING Customer sees this Compared, never served zero customer risk AT SWITCHOVER, 27 OCT Output has matched for a full window, so legacy goes off and the Ecommerce Solution goes on. One move, no ramp. Legacy stays warm as rollback until 31 Oct, carrying no traffic.
#StepBy
4.1Shadow run starts. Both live, all data and processing mirrored, legacy still authoritativeMon 20 Oct
4.2Compare output continuously. Orders, settlement, points and fulfilment must match with zero unexplained differences20 to 23 Oct
4.3Go / no-go on switchoverFri 24 Oct
4.4Switchover. Legacy off, new world on, in one moveMon 27 Oct
4.5Legacy warm as rollback, no traffic27 to 31 Oct
Switchover gates, all four required on 24 Oct

Shadow output matches legacy exactly across orders, settlement and points · zero P0 failures during the shadow window · rollback tested and timed · Saudia has signed off on the new design.

What the shadow model does not prove

It proves the new system computes the same answers. It does not prove Ops can run it, and it does not prove Crystal can answer a customer question on it. Those are the next two sections.

06bThree requirements no board carries

Surfaced in the 24 August session. They appear on neither side's Jira, which is the clearest evidence the boards understate the work.

Not on any board

Saudia admin dashboard

Crystal, the third-party support team in Jordan that Merit manages, looks orders up by order ID or customer ID. They cannot be handed Merit-internal tooling, so the lookup has to live in the Saudia admin dashboard on the new world.

Ammar scopes it, after asking Raneem Ajana what Crystal uses today.

Not on any board

Seller Portal API

The Portal supports individual and bulk upload but not API. It was started and never finished. Migrating every active Al Fursan supplier depends on it.

Sellers integrate with our API, not the reverse. Custom integration only for a seller with the bargaining power to require it.

Not on any board

Notification migration

WhatsApp notification runs through Saudia's Accenture system, which has no team behind it. It moves to Marthino's platform, and which integrations move has never been identified.

Marthino Yuda.

STC is built in the new world only

The legacy system has no location awareness, because it was built for gift cards. The new system is warehouse-location aware, which matches how STC's city-level stock works. Manual fulfilment covers the gap until the new-world integration lands, and STC does not block the migration.

06cThe earn model is blocked on a number, not on engineering

The gap list marks cashback in miles as absent. That is right for the Ecommerce Solution, and the reason matters more than the status.

Legacy side

Exists and is proven

Configured on the demo environment, configurable per product by an admin with no engineering. Roughly ten minutes to apply. Apple products today, and widening it is an admin change.

New world

Not built at all

So this is a rebuild of something already working, not a design problem. That makes it cheaper than the gap list implies and it does not make it optional.

The actual blocker

A number from Saudia Finance

Merit is waiting on the cashback funding percentage. Hamza Shahbaz took the Merit and Saudia funding split to Julia and Justin at Saudia, and the decision sits with them. Thamer is still waiting.

The migration team cannot unblock this row

It needs a number from a client's finance function. Chase it on that basis, rather than tracking it as a build.

07Data continuity, a separate workstream

Owner: Marthino Yuda. It does not fail like a feature fails. A missing feature is visible on day one. Broken data continuity is invisible until a member opens their order history, or until Finance closes the month.

Must carry over

1 · Member order history

A member sees an empty account. This is the most visible possible failure to Saudia.

Must carry over

2 · Points and cashback balances

Including accruals in flight. Money. Any difference is a member complaint and a client escalation.

Must carry over

3 · Reporting continuity

Metabase and the Ops dashboards keep working across the boundary. Otherwise Ops and Finance lose their numbers in the same week the platform changes.

Needs a design

4 · In-flight orders at cutover

An order placed on the legacy system and delivered after cutover must still resolve, refund and settle. This is a rule about which stack owns an order that spans the boundary, decided before the dual run, not during it.

There is precedent

DEC-0018 settled the same question for the Rewards Portal: 12 months searchable in the new system, plus an Excel dump for older history. A reasonable default to propose for item 1, and one to confirm with Saudia rather than assume.

08Can we hit October?

Direct answer: not the full surface. Yes for a cutover wave, with the rest landing in November.

Reason 1

Nobody can size it yet

That is the entire reason for the 12 September go/no-go. Anyone who gives a date before the register exists is guessing. That includes me.

Reason 2

Five build weeks

Discovery takes two of the 9.7, cutover takes two. Five weeks does not cover a full rebuild of a custom storefront plus its Platform integrations plus the catalogue.

Reason 3

Sequence is the only lever

We are not dropping capabilities, so scope cannot be cut. What can move is when each one lands: before the cutover, or in the weeks after.

So define the two waves carefully

Cutover wave · live 27 Oct

Reuse the Minimum Viable Migration already defined in the Q3 Plan. Do not invent a new one.

  • Storefront consumer surface live
  • Al Fursan catalogue
  • Search, PLP and PDP
  • Checkout on the new OMS
  • Gift-card cooling period
  • Cashback parity
  • Basic fulfilment
Post-cutover wave · November

Everything else in the register. Contents unknown until 5 September, but the rule is fixed now.

  • Every row carries a named owner
  • Every row carries a November date
  • Set at step 2.3, not later
  • Legacy system decommissions when this wave closes

A wave with no per-row owner is a backlog, and backlogs do not ship.

What to commit to Fred on Monday

CommitDate
Capability Register complete, all three lenses reconciled5 September
Cutover wave and post-cutover wave split, every row owned and dated12 September
Go/no-go on the end-of-October cutover, evidence-based12 September
Al Fursan on the Ecommerce Solution at the cutover wave, 100 percent traffic27 October
Post-cutover wave complete, legacy system decommissionedNovember, per-row dates from 2.3
Do not commit the full surface for October

Commit the cutover wave plus a dated November list. A cutover delivered on 27 October with a published November wave is a success. A full-surface promise is one nobody in the room can size today, so making it on Monday means making it blind.

09Risks, and what each one costs

Five. Two are cheap to fix on Monday and expensive to forget.

1 · Discovery finds more than five weeks in the cutover wave

October is impossible, and we learn it on 12 September.

MitigationThe wave split in 2.3. Move rows to November on 11 September, not in October.

2 · No engineering lead is named

The migration inherits the unassigned-epic problem and nobody escalates. The Project Manager can chase a gap, he cannot own the build.

MitigationStep 0.4 on Tuesday. Fred's call, and only Fred's.

3 · Ops rules surface at cutover

A production incident during the highest-visibility week of the year.

MitigationLens C. This is exactly what it is for.

4 · Saudia rejects the new design late

The frontend track stalls with no fallback, because we removed the legacy storefront from the plan.

MitigationGet the design in front of Saudia during phase 2, not phase 4. Their sign-off is already a 24 October gate, so pulling it forward costs nothing.

5 · The November wave never ships

Al Fursan sits half-migrated and the legacy system never gets decommissioned.

MitigationEvery post-cutover row carries an owner and a date at 2.3.
Risk 5 is the one this plan creates

Deciding to build everything and then phasing it is correct. It only works if the second phase is as owned as the first.

10What I need from Fred on Monday, 24 August

Four things, all one-word answers, asked after the 12:00 alignment session so the working group is already behind it.

  1. Sponsorship for the migration
    On the end-of-October target.
  2. A named engineering lead
    Mohammad Albadarneh takes the Project Manager seat and runs the plan. Engineering accountability is a separate name and is still open.
  3. A week of Marketplace, Platform and Ops time
    For discovery, 26 August to 5 September.
  4. Agreement that 12 September is a real go/no-go
    And that a no-go answer is acceptable.
Item 4 is the important one

A go/no-go that can only return "go" is not a gate, it is a ceremony. A date nobody is allowed to challenge stays on the plan long after it stops being real, and everyone downstream keeps building to it.