The most critical breaking changes between NiFi 1.27 and 2.5.0 are:
- Java Version Requirement: NiFi 2.x requires Java 21. This is a fundamental change that necessitates a Java upgrade on all NiFi nodes.
- No Rolling Upgrade Support: NiFi 1.x does not support rolling upgrades to 2.x. This means you cannot upgrade nodes one by one; a full cluster shutdown or a parallel deployment strategy is required.
- Removed Components: A significant number of processors and services have been removed in NiFi 2.x (e.g., PutIceberg, HBase processors, Kafka 2.6 processors, various ListenTCP/UDP processors, DecryptContent, Kudu, Yandex, QueryDNS, QueryWhois, ExtractTNEFAttachments, Repository Encryption, Shell User Group Provider). Any dataflows using these will need to be re-architected.
- Flow Configuration File Format Change: The nifi.flow.configuration.file property in nifi.properties must now reference flow.json.gz instead of flow.xml.gz. This indicates a fundamental change in how flow definitions are stored.
- API Changes: The NiFi API has undergone significant changes. Custom processors or services built against older APIs will likely require updates to compile and function correctly with NiFi 2.x.
- Distributed Cache Services Renaming: Services like DistributedMapCacheServer are renamed to MapCacheServer. This requires updates to existing configurations and custom code.
- UI Contract Changes: The way custom/advanced UIs and Data Viewer UIs are handled has changed, potentially requiring modifications to existing custom UIs.
- Additional Details Format: additionalDetails.html for custom NARs must be converted to additionalDetails.md.
These changes collectively mean that a direct, in-place upgrade is not feasible for a production multi-node cluster, and a more involved migration strategy (like parallel deployment) is necessary.
The most critical findings are: NiFi 2.5.0 requires Java 21 and does not support rolling upgrades for 1.x clusters, necessitating full shutdown or parallel deployment. Many components are removed (e.g., Iceberg, HBase, Kafka 2.6, Kudu), and flow files switch from XML to JSON format. API, UI, and configuration changes mean existing flows and custom UIs need re-architecting. A parallel deployment strategy is recommended to minimize risks.