Phase 5 — Resolver Adapters
Converts C# Rendering Contents Resolvers to TypeScript Edge GraphQL adapters — one resolver at a time, with live XMC Edge validation.
Phase 5 converts server-side data-shaping logic into TypeScript Edge GraphQL adapters. This is the final phase of the migration — once complete, your site is fully running on SitecoreAI SXA Headless with no remaining XP-specific dependencies.
Duration: Hours — iterative, one adapter at a time | Orchestrator: Resolver Adapters Orchestrator
Requires: All components complete in migration-state (pending=0), Discovery complete, plus live mode active
This phase may not apply to your migrationIf your source site has no C# Rendering Contents Resolvers and no controller-side data-shaping logic, the orchestrator detects this automatically and skips the phase. You don’t need to do anything — the migration is complete at the end of Phase 4.
Live mode requiredPhase 5 must run with the sandbox dev server connected to SitecoreAI Edge. Switch to live mode before starting: call
dev-server-set-mode { mode: 'live' }. This requiresSITECORE_EDGE_CONTEXT_ID— see the setup table below.
What Resolver Adapters does
Headless (JSS) source sites have C# Rendering Contents Resolvers — server-side logic that fetches and transforms data before it reaches the frontend. SitecoreAI has no equivalent. That logic must move to the Next.js application layer as TypeScript GraphQL adapters.
MVC source sites have two types of data-shaping logic that need adapters:
- C# Rendering Contents Resolvers (
IRenderingContentsResolverimplementations) — same as the Headless path - Controller-side data shaping — C# controller actions that fetch or transform data before passing it to the view. Discovery inventories both types; Phase 5 converts both.
For each resolver or controller-side pattern, the agent:
- Compares the XP layout response (with resolver/controller running) against the SitecoreAI Edge response (without)
- Identifies exactly what data was being enriched
- Builds a focused GraphQL query that fetches that data from SitecoreAI Edge
- Writes a TypeScript adapter with the resolver logic and appropriate caching
- Verifies the adapter produces enriched output (FIELDS_ENRICHED > 0)
Complexity order. Adapters are built from highest complexity to lowest — high → medium → low.
Validation guardrail. After each adapter, the orchestrator verifies enrichment evidence. If an adapter claims success but shows FIELDS_ENRICHED=0 or uses endpoint-construction anti-patterns, it is automatically re-classified as failed and you are asked how to proceed.
Before you start
- Phase 2 — Code Migration is complete (
migration-stateshows pending=0) - Phase 4 — SXA Conversion is complete
-
SITECORE_EDGE_CONTEXT_IDis set in your workspace - Dev server switched to live mode
Required SitecoreAI environment values:
| Value | Required for | Where to find it |
|---|---|---|
| Edge Context ID | Live mode | Sitecore Cloud Portal → Deploy app → Environment → Details → Context ID |
| Editing Secret | Pages editing integration | Sitecore Cloud Portal → Deploy app → Environment → Details → Editing secret |
Set these via:
migration-set-connectors {
xmCloudEnvironment: {
edgeContextId: "<your-context-id>",
editingSecret: "<your-editing-secret>"
}
}
Or individually via dev-server-set-env.
How to run Resolver Adapters
- Set the Edge Context ID using
migration-set-connectorsordev-server-set-env - Switch to live mode: call
dev-server-set-mode { mode: 'live' } - Open your project in Kajoo Agentic and start a new chat session
- Type "Start resolver adapters" to invoke the Resolver Adapters Orchestrator
- The agent loads the resolver inventory from the discovery report
- For each resolver or controller pattern, the agent builds and validates the adapter
- Review and choose your next action after each one (see below)
- Continue until all adapters are complete
What you’ll decide
After each adapter:
| Action | What it does |
|---|---|
| Continue | Accept the adapter and move to the next |
| Redo | Re-build this adapter — optionally with adjusted instructions |
| Skip | Leave this resolver for manual handling and move to the next |
| Stop | Pause — progress is saved, resume anytime |
On failure:
| Action | What it does |
|---|---|
| Retry | Re-attempt the adapter build |
| Skip | Mark as skipped and continue |
| Stop | Pause and review before continuing |
After a rollback, the orchestrator will ask how to reconcile state before proceeding.
Resuming Resolver Adapters
Progress is tracked in the resolver-adapter-state artifact.
To resume: open a new chat session in your project and type "Resume resolver adapters". The agent picks up from the next pending adapter.
What Resolver Adapters produces
| Artifact | What it contains |
|---|---|
resolver-adapter-state | Completed, pending, and skipped adapters. Per-adapter detail: queries built, fields enriched, complexity, checkpoint references |
rendering-resolver-details | Resolver and controller-side data shaping inventory loaded from Phase 1 discovery |
Completed adapter code is committed to your target repository alongside the migrated component code.
Troubleshooting
| Issue | Fix |
|---|---|
| "SITECORE_EDGE_CONTEXT_ID is not set" | Set via migration-set-connectors with xmCloudEnvironment.edgeContextId or via dev-server-set-env |
| "FIELDS_ENRICHED=0" on an adapter | Guardrail caught it — adapter is marked failed. Choose Retry with adjusted instructions or Skip |
| Dev server not connecting to SitecoreAI Edge | Confirm Edge Context ID is correct and the SitecoreAI environment is deployed and running |
| "Cannot resume" | resolver-adapter-state is missing. Safe to restart — the agent will reload the resolver inventory from discovery |
| Rollback needed | The orchestrator will ask how to reconcile state after rollback — follow its guidance |
Migration complete
Once all resolver adapters are built and validated, your migration is done. Your target repository contains:
- All components migrated to Content SDK 2.0 SXA Headless (JSS: migrated; MVC: reconstructed as React)
- Full content tree serialized and present in SitecoreAI
- SXA Headless site structure — tenant, partial designs, page designs, presentation
- TypeScript GraphQL adapters replacing all C# resolvers and controller-side data shaping
The next step is to push your final code to your production repository, complete any remaining QA, and cut over to the new SitecoreAI environment.
Need help with the final cutover or QA? Contact your Kajoo delivery contact or reach out to the TechGuilds team for post-migration support.