Problem 1 — $node[“X”].json.data crash syntax
Old n8n API. Crashes on current versions. Fixed by replacing with $(“X”).all().
Status: Fixed in all G5 + G6 files.
Problem 2 — $items(“NodeName”,0,0) crash syntax
Same class of bug, different old API. Crashes with “Cannot assign to read only property ‘name’”. Fixed by replacing with $(“NodeName”).all().
Status: Fixed in all G5 + G6 files.
Problem 3 — $items() (no args) crash syntax
No-arg variant, used in Build GOV row nodes. Fixed with $input.all().
Status: Fixed in WF50-53.
Problem 4 — Missing wires (Read → Code)
Old n8n let code reference any node by name. New n8n requires a direct connection wire. Without it: “Node hasn’t been executed” error.
Status: Fixed — 15 wires added across G5 + G6.
Problem 5 — Deprecated CRON trigger
Old n8n-nodes-base.cron no longer works. Replaced with scheduleTrigger v1.2 preserving original schedules.
Status: Fixed in all files.
Problem 6 — Google Sheets sheetName/documentId as plain strings
n8n v4 requires {__rl: true, mode: “name”/“id”} objects. Plain strings fail silently.
Status: Fixed in all files.
Problem 7 — continueOnFail deprecated
Old error handling flag. Replaced with onError: “continueRegularOutput” on reads and retryOnFail on writes.
Status: Fixed in all files.
Problem 8 — n8n.cloud drops jsCode on import
When you import a JSON via the UI, Code nodes that use “language”: “JavaScript” lose their jsCode field. The node appears empty. This is an n8n platform bug — nothing we can do in the JSON.
Status: No fix possible. Workaround: paste code manually from the ALL_CODE_NODES_PASTE_READY.md doc.
Problem 9 — n8n.cloud rewrites autoMapInputData to defineBelow
On import, n8n reads the connected Google Sheet, pulls column schemas, and silently changes the mapping mode. Writes produce blank rows.
Status: No fix possible in the JSON. However — if you paste the code (fixing Problem 8), the code nodes emit proper JSON objects, and defineBelow with schema actually works because the field names match the schema columns. So this one is cosmetic, not fatal, as long as the code is intact.
1 Like
Hi @joseph_frangieh I would recommend reading this:
Problem 8 is a confirmed bug, there’s an open issue on GitHub for it (#25254) so worth giving that a thumbs up to get some visibility on it. For now yeah pasting the code manually is really the only workaround unfortunately. Solid writeup on the migration issues though, this is a useful reference for anyone else stuck importing old workflows.