AllodialHHI Transition Open questions

Project plan · Revision 2 · 7 October 2026

Custody first. Fixes next. Then one slice at a time.

Allodial's plan to move Hippocrates Wellness off SDSOL's HNS platform: secure HHI's code and data, close the 5 Critical defects among 55 open tracker items, and replace the system module by module on open source, with zero record loss.

55Tracker items in scope, 50 of them High or above
5Critical defects to close in Phase 1
W4–W8Gate 1: custody complete, earliest announcement
10Replacement slices, shadow → dual-run → cutover
15–18 moTo decommission HNS; only S6–S8 on the critical path
ContractorAllodial, Inc.
ClientHippocrates Wellness (HHI)
IncumbentSDSOL, developer of HNS

What the engagement covers

Four jobs, in this order, each with a gate before the next.

This revision supersedes rev1, which stopped partway through custody. It adds the full phase plan, the rules for when to announce, the record-safety rules, the open-source stack and the order of the slices.

Principles

Seven rules every later decision answers to.

  1. 01

    HHI owns everything. Allodial operates on HHI's behalf.Every repo, tenant, account and key sits in HHI's name, and Allodial gets delegated access. The takeover stays clean, and HHI cannot be locked in a second time, including by us.

  2. 02

    Custody before announcement.SDSOL hears about the transition only after HHI holds the code, data, keys and accounts, unless one of the triggers in §3 forces it earlier.

  3. 03

    No deception.HHI asks only for things it is entitled to, and gives reasons that are true. If SDSOL asks directly whether HHI is changing vendors, HHI does not lie; it can say it doesn't discuss vendor strategy. Quiet is fine. False is not.

  4. 04

    Fix first, then replace.Stabilizing HNS buys the operational goodwill and the time a careful rebuild needs.

  5. 05

    Strangler fig, not big bang.New services sit in front of or beside HNS and take over one slice at a time. Every slice has a rollback.

  6. 06

    No record is ever destroyed.Legacy data is archived immutably, each entity has exactly one writer at any moment, and every migration is reconciled. Money ties out to the cent.

  7. 07

    Open source first.Custom code goes only where HHI's workflow is unusual, which mainly means campus scheduling.

Pre-contract · Weeks −2 to 0

Clear the conflicts, read the contract and pay the bills before asking for anything.

ItemOwnerNotes
1.1MB conflict disclosureAllodial + HHIMB is HHI Sales Director and an Allodial co-founder. HHI's approver and signatory on the Allodial contract should be someone other than MB, with the conflict waiver in writing (already being drafted). This protects the deal if it is challenged later.
1.2Pull the HHI–SDSOL agreementHHI → Allodial counselRead for IP and work-product assignment, source-delivery obligations, escrow, termination notice, transition-assistance duties, non-solicit, reverse-engineering limits, hosting ownership, data-handling terms and payment status. §2's tactics depend on what this says.
1.3Bring SDSOL invoices currentHHIAn unpaid balance is SDSOL's best leverage to hold back code. Pay current, undisputed invoices before any custody request. Disputed items go in writing and stay separate.
1.4Allodial–HHI MSA + phased SOWAllodialOne SOW per phase, each with an exit. Confidentiality covering SDSOL materials. Add a BAA if any HNS data counts as PHI (open question Q4).
1.5HHI-owned admin identityHHI (Allodial sets up)An HHI-domain mailbox and account, e.g. it-admin@hippocrateswellness.org, owned by HHI, with MFA held by an HHI officer. Allodial operates it under the MSA. Every custody request in §2 goes out under this identity.
1.6HHI-owned code and storage homesAllodialAn HHI GitHub (or Azure DevOps) org and an HHI cloud storage account with immutable (WORM) retention. Allodial engineers are members of HHI's org.
Gate0

Contract read, invoices current, MSA and SOW signed, HHI identity and storage live.

Quiet custody

HHI holds the code. Allodial works from HHI's copy.

Allodial never appears in any system SDSOL can see until announcement day. Asking for its own source, data and keys is ordinary governance for any client of a custom-software shop, and SDSOL's docs haven't been updated since January 2026, so a documentation and custody refresh is easy to justify. None of these requests implies a vendor change. They should still go out one at a time over 2–4 weeks: a single list reads like an exit.

2.1 · Take today, without asking SDSOL

Accounts HHI almost certainly already owns as merchant or licensee. Confirm each one, add the HHI admin identity and read the configuration. That alone tells us how HNS is wired.

  • Microsoft 365 / Entra ID tenant. The Outlook/Graph sync app registration should be in HHI's tenant. Record its permissions and secret expiry.
  • Authorize.Net merchant account (HHI is merchant of record): API login IDs, CIM profiles, settlement reports. These reports are the ground truth for money reconciliation later.
  • Cin7 Core, Shopify, Dialpad. Check whether API keys and webhooks point at HNS endpoints.
  • Domain registrar and DNS for hippocrateswellness.org and any app subdomains. DNS control is what lets us cut traffic over later.
  • AWS account behind SES, if it is in HHI's name.
  • Apple App Store / Google Play developer accounts. Find out today whose name these are in. If they are SDSOL's, moving them takes weeks and needs SDSOL's cooperation, so this is the item most likely to set the earliest announcement date.

2.2 · Ask SDSOL, one item at a time, framed as governance

RequestTrue reason HHI can giveWhat it gets us
AProduction database backupDisaster recovery and data retention. HHI should hold its own records. A full .bak delivered monthly to HHI's storage, starting now.All the data, plus the live schema. Allodial can start analysis right away.
BSource repo ownershipClient custody of work product is standard practice, and HHI's continuity planning requires it. Move the repo(s) into HHI's GitHub org with SDSOL keeping write access; second choice, HHI admin as owner on SDSOL's repo.The code, full history and CI config. Allodial works from a mirror in a separate HHI org, so SDSOL sees no Allodial accounts.
CCloud tenant ownershipHHI should own the infrastructure it pays for, with billing in HHI's name. Move the subscription to HHI's tenant, or add the HHI admin as Owner.Visibility into infrastructure and the deployment pipeline, and the ability to rotate secrets later.
DCredentials inventorySecurity hygiene and key-person risk. Every secret and where it lives; values go into an HHI-owned vault.The rotation list for announcement day.
EUpdated docs + deployment runbookDocs are 9 months stale, and HHI needs current SOPs anyway (GEN-01, GEN-02).Shortens Allodial's ramp-up.
FTracker responsesThe tracker has no SDSOL responses. Classification and target date for all 55 items.SDSOL's own view of root causes, and a record of their performance.

Who sends them: an HHI officer other than MB, from the HHI identity. Allodial writes the drafts; Allodial's name does not appear in them. If SDSOL stalls or refuses B, that is information: use the contract (1.2) to escalate while the work below keeps moving.

2.3 · Work that needs no code at all · from Week 0

  • Black-box reproduction. With HHI staff logins, reproduce the Critical and High bugs and record exact steps, screenshots and timing. Start with FD-01, FD-02, FD-04, SO-01, SO-03, SO-05, SALES-01, EO-03 and VIDA-01.
  • Data analysis from backup A, restored into an Allodial-isolated, HHI-owned environment: confirm the timezone hypothesis behind FD-04 and SO-03, find the overlapping bookings behind SO-01, and trace house-credit history behind SALES-01 through ActivityLogs.
  • Synthetic test data. hns_synth_oct26_apr27_900.sqlite can drive tests without exposing guest PII.
  • Fallback if B is blocked, legal sign-off first. If the compiled .NET 9 assemblies are deployed in an HHI-owned tenant, they decompile to readable C# with ILSpy. Only if counsel confirms the contract permits it. A last resort, not a plan.
Gate1

Custody complete. HHI holds the DB backup, the repo or a verified mirror, tenant ownership or Owner access, the credentials inventory, and confirmed ownership of every §2.1 account including the app stores. Gate 1 is the earliest sensible announcement date.

When to announce

Announce on A-day, with the fixes in hand.

A-day is the first business day after Gate 1 and after the §4 fix pack is ready to ship. Ideally both land together.

Announce earlier if
  1. 1

    SDSOL asks HHI directly about a vendor change (Principle 3).

  2. 2

    Allodial needs to appear in any system SDSOL can see: shared repo, prod tenant, tracker or email threads.

  3. 3

    Allodial needs to deploy anything to production. Two uncoordinated teams deploying to one system is how records get lost.

  4. 4

    The contract's termination notice period, counted back from HHI's planned end date, requires it.

  5. 5

    An app-store transfer needs SDSOL's cooperation and its lead time puts it on the critical path.

  6. 6

    Any sign of a leak. A clean announcement beats one SDSOL pieces together from rumor.

A-day checklist · same day
  1. 1

    Rotate every secret SDSOL knows: DB logins, Azure app-registration secret, Authorize.Net transaction key, Cin7/Shopify/Dialpad keys, SES credentials, push certs.

  2. 2

    Downgrade SDSOL's access to read-only, or remove it, per the agreed transition terms.

  3. 3

    Take a fresh full backup and a WORM snapshot (§6).

  4. 4

    Freeze deployments: no SDSOL deploys after A-day without Allodial review.

  5. 5

    Send a written transition request under the contract: knowledge-transfer hours, open-branch handover, work in progress.

How the announcement is worded, and whether SDSOL is kept on for a paid transition period, is HHI's call. Allodial drafts both options.

Phase 1 · Stabilize HNS

Built quietly on the mirror, shipped from A-day.

Fixes are prepared during the quiet period and deployed only after A-day (trigger 3). On day one HHI gets visible relief, which is the strongest case for the transition.

Fix packTracker itemsLikely root causeApproach
FP1Dates and time zonesFD-01, FD-02, FD-04, SO-03UTC stored, local date derived inconsistently. Filters truncate to UTC midnight.Normalize on America/New_York at the query layer with one shared date-range helper. Regression tests across DST changes.
FP2Double-booking and lost appointmentsSO-01, SO-04, EM-11, VIDA-02No transactional conflict check on staff, room or equipment.Overlap check inside a serializable transaction, or a slot-claim table with a unique index. Exceptions block booking and carry a reason.
FP3Money integritySALES-01, EO-01, EO-03, EO-04, EM-08, VIDA-01, FD-08House credits changed without ledger entries. Authorization-hold config. Duplicate posting or display.Append-only house-credit ledger (balance = sum of entries). 48-hour hold configurable per service. Reconcile against Authorize.Net. Audit history first: balances may already be wrong.
FP4PerformanceSO-05Missing indexes and N+1 queries in itinerary generation.Profile with Query Store; add indexes and projection queries. Itinerary in under 5 seconds, from about 5 minutes.
FP5Visibility and permissionsEM-01, SO-02, SO-07, ADMIN-02, GEN-05Role-matrix gaps.Fix the permission matrix. Add a read-only Security role.

Configuration and training items (EM-02, FD-06, GEN-04, SALES-04 monitoring) are handled as admin setup and SOP work. The remaining enhancements (HK, SH, SALES-05, ADMIN-01, ADMIN-03) are not built into HNS; they become requirements for the replacement slices, so nothing is invested in code being retired.

ExitPh. 1

All 5 Critical items closed and verified by HHI staff, house-credit balances reconciled and signed off by HHI finance, and CI with automated tests running on HHI's repo.

Phase 2 · Platform foundation

An open-source platform that sits in front of HNS, from Gate 1.

Runs alongside Phase 1. Every layer is open source unless noted, and the SaaS that already works stays.

LayerChoiceWhy
Edge / strangler routerYARP MIT, .NETSame stack as HNS. Routes each path to legacy or new, so cutover is a config change per route and rollback is the same change in reverse.
Identity / RBACKeycloak Apache-2.0, federated with Entra IDOne login across legacy and new. HHI's 15+ roles become managed groups instead of hard-coded logic.
New system of recordPostgreSQLRange types plus EXCLUDE constraints prevent double-booking at the database level, permanently fixing the SO-01 class of bug.
Legacy → new data flowDebezium SQL Server connector (CDC)Streams every legacy change to new services during shadow and dual-run. Nothing goes through ad-hoc exports.
Reporting / BIMetabase AGPL, on a read replicaQuick win for SALES-05 and finance reporting, with no write risk.
ObservabilityOpenTelemetry + Grafana / Prometheus / Loki, GlitchTip for errorsHHI has had no visibility into failures. This gives it that.
Feature flagsUnleash Apache-2.0Per-department rollout inside a slice, e.g. Salon first, then Energy Medicine.
Background jobsHangfire LGPL core or a Postgres-native queueReplaces whatever HNS uses for the nightly Cin7 sync and scheduled jobs.
Kept as SaaSAuthorize.Net, Cin7 Core, Shopify, Dialpad, M365, SESThese work and aren't the problem. Re-point their integrations slice by slice.

ADR-1 · Base application platform

Decided at Gate 2, after a two-week bake-off against real HHI workflows using the synthetic database. Leaning: B for back office, with an A-style custom service for campus scheduling. Scheduling (rooms, staff, equipment, itineraries) is what makes HHI different and where HNS fails most, so we own that code. Everything generic comes from open source.

A · Custom .NET + OSSB · Odoo + OCA · leaningC · ERPNext / Frappe
FitMatches HNS skills and stack. Full control over scheduling.Highest OSS coverage of purchasing, POS, CRM and finance (OCA/pms plus OCA purchase, POS and accounting), with a custom scheduling service. The ERP engagement already discussed.GPL. Strong ERP core.
RiskMost custom code. Back-office functions (POs, POS) rebuilt from scratch.Odoo Appointments is Enterprise-only, so scheduling stays custom either way. OCA pms maturity needs a hands-on check. Python stack.Weakest hospitality and spa fit. More custom work than B.
Gate2

ADR-1 decided, router in front of HNS in passthrough mode, Keycloak SSO live for legacy, CDC streaming into Postgres, Metabase live.

Record safety

Nine non-negotiables. No record is lost, and money ties out to the cent.

  1. 01

    Immutable legacy archive.A full SQL Server backup plus a Parquet export of every table at A-day and before each slice cutover, in HHI WORM storage with SHA-256 manifests. Retained indefinitely, or for HHI's retention period as set by counsel. Retiring HNS never deletes its data.

  2. 02

    One writer per entity.A published ownership table (entity → system of record → date). An entity is never writable in two systems at once. Changes are signed off by Allodial and HHI.

  3. 03

    Shadow, then dual-run, then cutover.Shadow: the new service computes results from CDC data that users don't see. Dual-run: staff use the new UI and results are compared to legacy daily. Cutover: the router flips and the new system becomes the writer.

  4. 04

    Reconciliation gates every cutover.Row counts, per-record hashes on migrated fields, and money totals tied to the cent against Authorize.Net settlement and Cin7. Any variance stops the cutover.

  5. 05

    Rollback is rehearsed, not hoped for.Each slice has a written rollback with a time limit (default 72 hours). Writes made in the new system during that window are replayed to legacy by a tested script.

  6. 06

    Payment data never moves.Card data stays in Authorize.Net CIM; we migrate profile IDs, never card numbers. The 4 AES-encrypted fields are re-encrypted under an HHI-owned key.

  7. 07

    Audit history is carried forward.HNS ActivityLogs migrates into the new audit store, so a guest's full history stays queryable after decommission.

  8. 08

    Cutovers happen in low-occupancy windows,with HHI department leads on site and Allodial on call.

  9. 09

    Restores are tested monthly.A backup that has never been restored doesn't count.

Phase 3 · Piecemeal replacement

Low risk and high pain first. Money and reservations last.

Each slice runs shadow → dual-run → cutover → 30-day hypercare.

SliceAbsorbsBaseRiskDuration
S1Reporting and BI (read-only)SALES-05, SH-04, finance viewsMetabaseVery low3–4 wks
S2Itinerary and schedule printingSO-03, SO-05, EM-03, SO-02Custom read-only rendering service on CDCLow4–6 wks
S3Housekeeping and maintenance work ordersHK-01, HK-02, HK-03OSS work-order module (Odoo Maintenance in B)Low6–8 wks
S4Purchasing / POsSH-01, SH-02, SH-03, SH-04Odoo Purchase (B) + Cin7Medium6–8 wks
S5Guest profiles and CRMSO-06, EO-02, GEN-03, GEN-07Odoo contacts / CRM (B) + merge toolingMedium8 wks
S6Campus scheduling engineFD-03, FD-05, FD-07, EM-04, EM-05, EM-07, EO-05, VIDA-02, GEN-06Custom service on Postgres EXCLUDE constraints, Outlook via GraphHigh12–16 wks per department, behind flags
S7Payments, folios and house creditsSALES-02, SALES-03, EM-06, EM-09, EM-10Odoo POS / accounting (B) + append-only credit ledgerHigh10–12 wks
S8Reservations / PMS coreRemaining Sales & ReservationsOCA pms (B) or customHighest12+ wks
S9Guest mobile app—Rebuilt on the new APIs, published from HHI's developer accountsMedium8–10 wks alongside S6–S8
S10Decommission HNS—Final archive (§6.1); read-only legacy viewer kept 12 months, then archive onlyLow4 wks

Rough calendar · months from Gate 0

Only S6–S8 are on the critical path. Estimates firm up after Gate 2.

Team and cadence

A small Allodial team, an HHI sponsor who isn't MB, and a super user per department.

Allodial

Delivery team

  • Engagement lead
  • Tech lead and architect
  • 2–3 engineers: one .NET, one Postgres / data
  • QA and test automation
  • CTO signs off on architecture: ADR-1 and each slice design
HHI

Owners and validators

  • Executive sponsor, not MB (per 1.1)
  • Finance lead for reconciliation sign-off
  • One super user per department for dual-run validation
Cadence

How we report

  • Weekly status to HHI
  • Cutover go / no-go per slice, with written sign-off
  • Monthly steering review

Risks

What could go wrong, and what we do about it.

RiskLikelihoodImpactMitigation
SDSOL refuses or slow-walks custody (§2.2 B)MediumHighInvoices current first (1.3), contract escalation, work from the DB backup and black-box testing meanwhile; decompile only with legal sign-off.
SDSOL figures out the plan earlyMediumMediumTruthful framing, staggered requests, no Allodial footprint. If it happens, announce immediately (§3).
SDSOL degrades or sabotages after announcementLowHighCustody and credential rotation on A-day, deployment freeze, WORM backups.
App-store accounts held by SDSOLUnknownMediumIdentify in Week 0. Treat as a possible early-announcement trigger.
House-credit or payment balances already wrongMediumHighForensic ledger reconstruction from ActivityLogs + Authorize.Net before any migration. HHI finance signs off on opening balances.
Guest data is PHIUnknownHighDecide Q4 early. BAA, access logging and data minimization in the new design.
Key-person risk on the Allodial sideMediumMediumEverything in HHI's repo, ADRs written down, runbooks per slice.
Scope creep from the 55-item backlogHighMediumEnhancements go to the slice backlog. Only defects get fixed in HNS.
MB conflict challenged laterLowHighSection 1.1 waiver, non-MB approver.

Open questions

Seven answers we need, and who has them.

#QuestionFor
Q1What does the HHI–SDSOL contract say on IP assignment, termination notice and transition assistance?HHI / counsel
Q2Whose names are the Azure/AWS prod tenant and the Apple/Google developer accounts in?HHI, via the HHI admin identity
Q3Is HHI current on SDSOL invoices? Any disputed amounts?HHI finance
Q4Does HNS store health information that makes HHI a HIPAA covered entity or makes the data PHI (e.g. Energy Medicine or medical program notes)?HHI / counsel
Q5What does “HNS” stand for?MB
Q6Does HHI want SDSOL on a paid transition period after A-day, or a clean exit?HHI sponsor
Q7Busiest and quietest operating periods, to choose cutover windows?HHI ops