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 migration

If 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 required

Phase 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 requires SITECORE_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 (IRenderingContentsResolver implementations) — 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:

  1. Compares the XP layout response (with resolver/controller running) against the SitecoreAI Edge response (without)
  2. Identifies exactly what data was being enriched
  3. Builds a focused GraphQL query that fetches that data from SitecoreAI Edge
  4. Writes a TypeScript adapter with the resolver logic and appropriate caching
  5. 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-state shows pending=0)
  • Phase 4 — SXA Conversion is complete
  • SITECORE_EDGE_CONTEXT_ID is set in your workspace
  • Dev server switched to live mode

Required SitecoreAI environment values:

ValueRequired forWhere to find it
Edge Context IDLive modeSitecore Cloud Portal → Deploy app → Environment → Details → Context ID
Editing SecretPages editing integrationSitecore 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

  1. Set the Edge Context ID using migration-set-connectors or dev-server-set-env
  2. Switch to live mode: call dev-server-set-mode { mode: 'live' }
  3. Open your project in Kajoo Agentic and start a new chat session
  4. Type "Start resolver adapters" to invoke the Resolver Adapters Orchestrator
  5. The agent loads the resolver inventory from the discovery report
  6. For each resolver or controller pattern, the agent builds and validates the adapter
  7. Review and choose your next action after each one (see below)
  8. Continue until all adapters are complete

What you’ll decide

After each adapter:

ActionWhat it does
ContinueAccept the adapter and move to the next
RedoRe-build this adapter — optionally with adjusted instructions
SkipLeave this resolver for manual handling and move to the next
StopPause — progress is saved, resume anytime

On failure:

ActionWhat it does
RetryRe-attempt the adapter build
SkipMark as skipped and continue
StopPause 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

ArtifactWhat it contains
resolver-adapter-stateCompleted, pending, and skipped adapters. Per-adapter detail: queries built, fields enriched, complexity, checkpoint references
rendering-resolver-detailsResolver 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

IssueFix
"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 adapterGuardrail caught it — adapter is marked failed. Choose Retry with adjusted instructions or Skip
Dev server not connecting to SitecoreAI EdgeConfirm 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 neededThe 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.