Skip to content

Latest commit

 

History

History
149 lines (82 loc) · 10.6 KB

1-0-migration-checklist.md

File metadata and controls

149 lines (82 loc) · 10.6 KB
title description contentType
n8n v1.0 migration guide
What's new in version 1
reference

n8n v1.0 migration guide

This document provides a summary of what you should be aware of before updating to version 1.0 of n8n.

The release of n8n 1.0 marks a milestone in n8n's journey to make n8n available for demanding production environments. Version 1.0 represents the hard work invested over the last four years to make n8n the most accessible, powerful, and versatile automation tool. n8n 1.0 is now ready for use in production.

New features

Python support in the Code node

Although JavaScript remains the default language, you can now also select Python as an option in the Code node and even make use of many Python modules{:target=_blank .external link}. Note that Python is unavailable in Code nodes added to a workflow before v1.0.

PR #4295{:target=_blank .external link}, PR #6209{:target=_blank .external link}

Execution order

n8n 1.0 introduces a new execution order for multi-branch workflows:

In multi-branch workflows, n8n needs to determine the order in which to execute nodes on branches. Previously, n8n executed the first node of each branch, then the second of each branch, and so on (breadth-first). The new execution order ensures that each branch executes completely before starting the next one (depth-first). Branches execute based on their position on the canvas, from top to bottom. If two branches are at the same height, the leftmost one executes first.

n8n used to execute multi-input nodes as long as they received data on their first input. Nodes connected to the second input of multi-input nodes automatically executed regardless of whether they received data. The new execution order introduced in n8n 1.0 simplifies this behavior: Nodes are now executed only when they receive data, and multi-input nodes require data on at least one of their inputs to execute.

Your existing workflows will use the legacy order, while new workflows will execute using the v1 order. You can configure the execution order for each workflow in workflow settings.

PR #4238{:target=_blank .external link}, PR #6246{:target=_blank .external link}, PR #6507{:target=_blank .external link}

Deprecations

MySQL and MariaDB

n8n has removed support for MySQL and MariaDB as storage backends for n8n. These database systems are used by only a few users, yet they require continuous development and maintenance efforts. n8n recommends migrating to PostgreSQL for better compatibility and long-term support.

PR #6189{:target=_blank .external link}

EXECUTIONS_PROCESS and "own" mode

Previously, you could use the EXECUTIONS_PROCESS environment variable to specify whether executions should run in the main process or in their own processes. This option and own mode are now deprecated and will be removed in a future version of n8n. This is because it led to increased code complexity while offering marginal benefits. Starting from n8n 1.0, main will be the new default.

Note that executions start much faster in main mode than in own mode. However, if a workflow consumes more memory than is available, it might crash the entire n8n application instead of just the worker thread. To mitigate this, make sure to allocate enough system resources or configure queue mode to distribute executions among multiple workers.

PR #6196{:target=_blank .external link}

Breaking changes

Docker

Permissions change

When using Docker-based deployments, the n8n process is now run by the user node instead of root. This change increases security.

If permission errors appear in your n8n container logs when starting n8n, you may need to update the permissions by executing the following command on the Docker host:

docker run --rm -it --user root -v ~/.n8n:/home/node/.n8n --entrypoint chown n8nio/base:16 -R node:node /home/node/.n8n

Image removal

We've removed the Debian and RHEL images. If you were using these you need to change the image you use. This shouldn't result in any errors unless you were making a custom image based on one of those images.

Entrypoint change

The entrypoint for the container has changed and you no longer need to specify the n8n command. If you were previously running n8n worker --concurrency=5 it's now worker --concurrency=5

PR #6365{:target=_blank .external link}

Workflow failures due to expression errors

Workflow executions may fail due to syntax or runtime errors in expressions, such as those that reference non-existent nodes. While expressions already throw errors on the frontend, this change ensures that n8n also throws errors on the backend, where they were previously silently ignored. To receive notifications of failing workflows, n8n recommends setting up an "error workflow" under workflow settings.

PR #6352{:target=_blank .external link}

Mandatory owner account

This change makes User Management mandatory and removes support for other authentication methods, such as BasicAuth and External JWT. Note that the number of permitted users on n8n.cloud{:target=_blank .external link} or custom plans still varies depending on your subscription.

PR #6362{:target=_blank .external link}

Directory for installing custom nodes

n8n will no longer load custom nodes from its global node_modules directory. Instead, you must install (or link) them to ~/.n8n/custom (or a directory defined by N8N_CUSTOM_EXTENSIONS). Custom nodes that are npm packages will be located in ~/.n8n/nodes. If you have custom nodes that were linked using npm link into the global node_modules directory, you need to link them again, into ~/.n8n/nodes instead.

PR #6396{:target=_blank .external link}

WebSockets

The N8N_PUSH_BACKEND environment variable can be used to configure one of two available methods for pushing updates to the user interface: sse and websocket. Starting with n8n 1.0, websocket is the default method.

PR #6196{:target=_blank .external link}

Date transformation functions

n8n provides various transformation functions that operate on dates. These functions may return either a JavaScript Date or a Luxon DateTime object. With the new behavior, the return type always matches the input. If you call a date transformation function on a Date, it returns a Date. Similarly, if you call it on a DateTime object, it returns a DateTime object.

To identify any workflows and nodes that might be impacted by this change, you can use this utility workflow{:target=_blank .external link}.

For more information about date transformation functions, please refer to the official documentation.

PR #6435{:target=_blank .external link}

Execution data retention

Starting from n8n 1.0, all successful, failed, and manual workflow executions will be saved by default. These settings can be modified for each workflow under "Workflow Settings," or globally using the respective environment variables. Additionally, the EXECUTIONS_DATA_PRUNE setting will be enabled by default, with EXECUTIONS_DATA_PRUNE_MAX_COUNT set to 10,000. These default settings are designed to prevent performance degradation when using SQLite. Make sure to configure them according to your individual requirements and system capacity.

PR #6577{:target=_blank .external link}

Removed N8N_USE_DEPRECATED_REQUEST_LIB

The legacy request library has been deprecated for some time now. As of n8n 1.0, the ability to fall back to it in the HTTP Request node by setting the N8N_USE_DEPRECATED_REQUEST_LIB environment variable has been fully removed. The HTTP Request node will now always use the new HttpRequest interface.

If you build custom nodes, refer to HTTP request helpers for more information on migrating to the new interface.

PR #6413{:target=_blank .external link}

Removed WEBHOOK_TUNNEL_URL

As of version 0.227.0, n8n has renamed the WEBHOOK_TUNNEL_URL configuration option to WEBHOOK_URL. In n8n 1.0, WEBHOOK_TUNNEL_URL has been removed. Update your setup to reflect the new name. For more information about this configuration option, refer to the docs.

PR #1408{:target=_blank .external link}

Remove Node 16 support

n8n now requires Node 18.17.0 or above.

Updating to n8n 1.0

  1. Create a full backup of n8n.
  2. n8n recommends updating to the latest n8n 0.x release before updating to n8n 1.x. This will allow you to pinpoint any potential issues to the correct release. Once you have verified that n8n 0.x starts up without any issues, proceed to the next step.
  3. Carefully read the Deprecations and Breaking Changes sections above to assess how they may affect your setup.
  4. Update to n8n 1.0:
    • During beta (before July 24th 2023): If using Docker, pull the next Docker image.
    • After July 24th 2023: If using Docker, pull the latest Docker image.
  5. If you encounter any issues, redeploy the previous n8n version and restore the backup.

Reporting issues

If you encounter any issues during the process of updating to n8n 1.0, please seek help in the community forum{:target=_blank .external link}.

Thank you

We would like to take a moment to express our gratitude to all of our users for their continued support and feedback. Your contributions are invaluable in helping us make n8n the best possible automation tool. We're excited to continue working with you as we move forward with the release of version 1.0 and beyond. Thank you for being a part of our journey!