Back

EDUCATION

Chameleon: Custom JSON to Sitefinity Migration is Now Live

The first live production migration of custom system data into Sitefinity using Chameleon - 200+ multilingual profiles with ~1,000 relations, mapped and imported in under 8 hours. Here is what it unlocks for any API-enabled source system.

Sitefinity CMS Sitefinity Cloud
Chameleon: Custom JSON to Sitefinity Migration is Now Live

We just completed the first live production migration of custom system data into Sitefinity using Chameleon. A full showcase is coming, but the shape of what we did is worth sharing now - because it changes what Chameleon can do for you.

What we migrated

A client had 200+ structured profiles living in an external system. Each profile had 5-6 related entities. Multilingual content throughout. The source system had no direct migration path into Sitefinity.

What we did instead: exported the raw data as JSON, mapped it against Sitefinity's target content types in Chameleon, and imported. That is the whole shape of it.

Why this matters beyond one project

This unlocks more or less any API-enabled system as a Chameleon source. If a system can produce JSON - through an API, a scheduled export, even a one-off dump - Chameleon can take it from there. The upfront work is the mapping. The repeatable work is the import.

The relations problem, put in numbers

200 profiles with 5-6 relations each is roughly 1,000 relations. Done manually, that is 1,000 dropdowns to open, search, and select correctly. It is the kind of task that eats weeks and invites quiet errors that only surface months later.

With Chameleon, relations are part of the mapping. You configure them once. The import wires them.

"We'll just write a migration script" - the honest maths

The mapping and import part took under 8 hours end to end. That includes manually downloading the JSON files from the external system, which has no other interoperability points.

If you are thinking "we'll just write a custom migration script for this" - be honest about what that actually costs. Even with AI assisting, you are writing code to parse the JSON, authenticate against Sitefinity, resolve relations, handle multilingual fields, deal with the inevitable model changes, and log what failed and why. Then you are debugging it. Then you are rerunning it. Then the model changes again and you are back in the code.

Chameleon is the code you were about to write, already written, already debugged, already handling the edge cases you have not thought of yet. The 8 hours is not a fluke - it is what happens when the boring parts are already solved.

A nice piece of irony - and a real Chameleon strength

Here is the twist: the external system was already using images stored in Sitefinity's media library. The images were never external. Only the profile data was. Re-uploading them made no sense. Re-linking them across 200 profiles by hand made even less.

Chameleon supports runtime C# snippets as part of the mapping pipeline. We wrote a small snippet that, for each incoming profile, resolved the correct existing image in Sitefinity and attached it during import. No re-upload, no manual linking, no duplicate media.

And the snippets are not a toy hook. You can work with the current incoming item, search Sitefinity for a matching field (a URL, a slug, an external ID, anything), reach out to an external service, or even pass the item to an AI model and use the result in the mapping. Your call. No DLL to compile, no build step, no redeploy - you write the snippet in the mapping and Chameleon runs it at import time.

Most migration tools give you a fixed set of field transforms. Chameleon lets you drop real C# into the mapping - which means edge cases become short snippets rather than either "we can't do that" or "we will handle it manually after import".

The part that convinced us the approach was right

The data model changed 2-3 times during the project. It may change again. That is normal - as you look at real data landing in Sitefinity, you notice things the initial model missed.

Without an import tool, every model change means going back through every single profile by hand. Or - if you went the custom script route - back into the code. With Chameleon, you adjust the mapping and reimport. What would normally be a dreaded round of rework becomes a config change and a coffee.

What is next

We will follow this up with a problem / solution showcase - the specific things that were painful about this migration and how Chameleon handled each one. For now: if you have data trapped in a custom or legacy system and a Sitefinity target in mind, get in touch. The same approach almost certainly applies.

Read More

Explore more insights and case studies from our team.