Why NiFi 2 flows that use Hive or HBase need a plan before upgrade
If your NiFi 1.x estate has flows that write to Hive, HBase, Kudu, Cassandra or Solr, plan for those flows before you upgrade. None of these components appear in the NiFi 2.12.0 components index, so each flow that uses them must be replaced with a different pattern or retired. The NiFi deprecation list already flags several of them in 1.x, including PutHive3QL, PutHive3Streaming, SelectHive3QL, PutHBaseRecord, PutKudu, PutCassandraRecord, QueryCassandra and PutORC. Because the 1.x line is nearing its end, leaving these flows untouched is not a long-term option. Start by inventorying which processors are in use, which process groups contain them, and which downstream systems depend on their output. Check the NiFi deprecated components list against your own flows rather than relying on memory of what you built.
The supported route runs through 1.x first. The NiFi migration guidance requires upgrading to NiFi 1.27.0 before moving to 2.0.0, and it changes the flow configuration file from flow.xml.gz to flow.json.gz. That means the component replacement work is not optional at the end of the journey. A flow that still depends on a removed processor will not load cleanly on NiFi 2, so the sequence matters: confirm the 1.27.0 step, then decide per flow whether to replace, move, or retire it before the 2.x cutover. Confirm the exact upgrade steps for your current version with the migration guidance, since your starting point determines how many hops you need.
The reason the path cannot stop at 1.x is structural. The NiFi project has stated that the 1.x line cannot be maintained further because it depends on Jetty 9.4, Spring Framework 5.3 and AngularJS 1.8, none of which can be upgraded within that line. Staying on 1.x therefore means running a platform that will not receive the security and dependency updates you need. Some organizations consider keeping a 1.x island for flows that depend on Hadoop or NoSQL stores while they are rebuilt. That choice carries its own risk, which the sections on the 1.x island and the replacement patterns cover in detail.
Which removed components affect your flows and what to do
This table lists the component families from NiFi's deprecation list that do not appear in the NiFi 2.12.0 components index, with the release in which each was deprecated, what it means for a flow, and the action to plan. Absence from the 2.12.0 components index is the basis for treating these components as removed, so confirm each one in your own flows before you plan the cutover.
| Component family | Deprecated in | Impact on your flows | Action needed |
|---|---|---|---|
| Hive (PutHive3QL, PutHive3Streaming, SelectHive3QL) | 1.26.0 | Flows that write to or read from Hive tables stop having a shipped processor in NiFi 2. | Find each Hive processor, then choose a replacement path such as a supported database or lakehouse processor. Confirm the target in the components index. |
| HBase (PutHBaseRecord and other HBase components) | 1.29.0 | HBase reads and writes have no shipped NiFi 2 processor, so these flows fail to load or run. | List every HBase processor and its target tables. Plan a replacement write path and test record mapping against the new target. |
| Kudu (PutKudu) | 1.28.0 | Flows that load Kudu tables lose their processor in NiFi 2. | Identify Kudu write paths and downstream consumers. Decide whether the data moves to another store or stays on a 1.x island. |
| Cassandra (PutCassandraRecord, QueryCassandra) | 1.26.0 | Cassandra writes and queries are not shipped in NiFi 2, which affects enrichment lookups and inserts. | Map each Cassandra query to its caller. Redesign enrichment lookups with a supported source and retest error handling. |
| Couchbase components | 1.27.0 | Couchbase reads and writes are not in the NiFi 2.12.0 components index. | Inventory Couchbase controller services and processors. Rebuild the integration on a supported client or source. |
| Solr | Confirm in NiFi deprecation list | Solr indexing and query flows are not in the NiFi 2.12.0 components index, so they need a replacement before upgrade. | Confirm the exact deprecated Solr components in the deprecation list. Plan the index target and the cutover order. |
| PutORC | 1.26.0 | ORC file writes lose their processor, which affects lakehouse and file landing flows. | Check downstream readers of ORC output. Choose a supported columnar format or keep the writer on a 1.x island. |
| ReportLineageToAtlas | 1.26.0 | Lineage reporting to Apache Atlas stops, which can break governance records that depend on it. | Confirm which governance tools read Atlas lineage. Agree the replacement reporting method with the owners before cutover. |
How to find every removed component in your flows
This sequence produces a complete, dated inventory of every flow element that uses a Hive, HBase, Kudu, Cassandra, Couchbase, Solr, ORC or Atlas component, so you know which flows must be replaced or retired before a NiFi 2 move. It covers the flow files, the version control history, the controller and reporting layers, and the parameter contexts that can hide references.
Confirm the removed component list first
Before searching, build the list of component type names to look for. Use the NiFi deprecated components page, which lists the Hive 3 processors deprecated in 1.26.0, PutKudu from 1.28.0, the HBase components from 1.29.0, the Cassandra processors and ORC writer from 1.26.0, the Couchbase components from 1.27.0 and ReportLineageToAtlas from 1.26.0. Then check each name against the NiFi components index for 2.12.0, where none of these components appear. Record the exact class names and the version each was deprecated in, so the inventory can be reused in later upgrade planning. Done when you have a written list of type names that an engineer on the team has reviewed.
Export every process group and template
A platform engineer with read access to the 1.x instance exports each top-level process group as JSON and collects any XML templates still stored on the instance, keeping them in a single read-only folder with the date of export. Include disabled and stopped process groups, because they are still part of what must be migrated. Also export the current flow.xml.gz from each node or from the cluster's primary node, and note the NiFi version and cluster name in the folder. Done when every process group on the canvas has a file in the folder and the count matches what the canvas shows.
Search exported definitions for component type names
Run a text search across the exported JSON files and the decompressed flow.xml.gz for each type name from your list, such as PutHive3QL, PutHBaseRecord, PutKudu, PutCassandraRecord, QueryCassandra, PutORC and ReportLineageToAtlas, plus the Couchbase and Solr class names. Search for both the short name and the fully qualified class name, since the exported form can differ. Record the file, the process group path and the component name for every hit. Done when each search term has a result or a recorded zero count, and you have a hit list with group paths.
Check nested process groups and parameter contexts
Search results can miss components inside nested process groups, so confirm that each exported file covers the full hierarchy, including child groups that appear only when expanded in the UI. Then review the parameter contexts attached to the groups. Hive connection strings, HBase configuration paths, Cassandra contact points and Kudu master addresses are often stored as parameters, and a processor may show only a parameter reference. Record each parameter that points to one of these systems so the reference can be traced back to the processor that uses it. Done when every hit is traced to a group path and every parameter linked to a removed system is listed.
Review Registry-versioned flows and controller services
Flows under version control can differ from what is running on the canvas. Compare each versioned process group with its registry version, and identify any local changes that have not been committed. Include controller services in the search, since services such as Hive connection pools or Cassandra session services can exist without a processor on the canvas and still need replacement. Confirm which registry or repository holds each versioned flow, because that decides where the replacement must be committed. Done when every versioned group is marked as in sync or out of sync, and every controller service linked to a removed system is listed.
Check reporting tasks for Atlas lineage
Reporting tasks run outside the flow canvas, so they are easy to miss. Open the controller settings and list every reporting task, whether running, stopped or disabled. Look specifically for ReportLineageToAtlas and any other reporting task that sends data to a removed system. Note the Atlas endpoint and the owning team for each task, because stopping an Atlas task on the 1.x instance changes what lineage is captured. Done when every reporting task has a line in the inventory, and each Atlas task is identified with its owner.
Include disabled and unused flows in the count
Do not exclude a flow because it is disabled, stopped, seasonal or believed to be unused. A dormant process group can be restarted during a migration, and a disabled reporting task can be re-enabled by mistake. Mark each such item with its status and the last recorded run time from the provenance or log history where available. Ask the owning team to confirm whether each one should be migrated, replaced or retired. Done when every item in the hit list has a status and an owner decision field, even if the decision is still open.
Close the inventory with a signed-off hit list
Combine the search hits, parameter references, controller services, versioned-flow status and reporting tasks into one table with one row per affected component. Each row should name the flow, group path, component, registry status, owner and disposition: replace, retire or keep on a 1.x island. Have a second engineer repeat a sample of the searches to confirm the results match. The output is a complete inventory that the replacement planning can work from. Done when the table is reviewed by the platform and application owners and the count of rows is recorded.
Replacement patterns for Hive, HBase, Kudu, Cassandra and Solr
Hive and ORC workloads are usually replaced by writing to the target warehouse or lakehouse table through a JDBC or lakehouse processor from the NiFi 2 integration bundles. The deprecated Hive 3 processors (PutHive3QL, PutHive3Streaming, SelectHive3QL) and PutORC do not carry over as-is, so the new path is a different write mechanism with its own type mapping and transaction behavior. Confirm the exact processor names and their availability in the NiFi components index before you design around them.
- Type mapping: Hive column types, ORC schema and the target table's types rarely match one to one. Decimal precision, timestamps and nullable fields are the usual sources of silent change.
- Batching and transactions: Batch size and commit points differ between the old and new processors, which changes what a partial failure leaves behind in the target.
- Error routing: Confirm which failures route to retry, which to failure, and whether a failed batch can be replayed without duplicating rows.
- Table format: Check whether the target table format supports the write pattern you need, including upserts or merges if the old flow relied on them.
- Credentials: Move Kerberos-based Hive access to the authentication your target platform supports.
Before cutover, run both paths against a copy of the table and compare row counts, types and rejected records for a representative window.
HBase, Cassandra and Couchbase components have been deprecated, and none of them appear in the NiFi 2.12.0 components index. For these stores the usual replacement is a call through an API the store exposes, or a native client used from custom code or a scripted component. This moves the integration from a supported processor into code your team owns, so the cost of the change shifts to build, test and maintenance.
- Ownership: A custom processor or scripted component becomes a piece of software you must version, test and upgrade with each NiFi release.
- Idempotency: Writes to these stores are often keyed. Decide how retries behave so a replayed FlowFile overwrites rather than duplicates the record.
- Consistency settings: Consistency levels, timeouts and retry policies are set in the client, not in a processor property you can inspect quickly.
- Scripted code caveats: Scripted components built on languages removed or changed in NiFi 2 need rewriting before they run on the new platform.
- Connection management: Client connections and pools must be shared and closed correctly, or the flow will leak connections under load.
Ask the team that owns the store whether a managed API or a supported client already exists, since that often reduces the custom code you need to maintain.
Solr was removed from the NiFi 2 component set, so flows that indexed documents into Solr need a new destination. The usual candidates are the search engine processors for OpenSearch or Elasticsearch, but you must confirm which processors exist and which versions they support in the NiFi components index for your target release. Do not assume the index mapping from Solr carries over unchanged.
- Index mapping: Field types, analyzers and multi-valued fields behave differently in each engine, so define the target mapping before moving data.
- Document identity: Confirm how document IDs are generated so that re-sent records update the existing document rather than creating duplicates.
- Bulk behavior: Compare bulk sizes, partial failure reporting and retry routing between the old and new processors.
- Query consumers: Applications that query Solr directly will need their own change plan, which NiFi does not cover.
- Reindexing: Plan whether historical data is reloaded into the new index, and how long the two indexes run in parallel.
Run a sample of documents through both indexes and compare search results for the queries your users rely on before you retire the Solr path.
ReportLineageToAtlas was deprecated in 1.26.0 and is not part of the NiFi 2 component set. Lineage that your organization needs for audit or data governance must be produced another way. The candidate approaches are an OpenLineage-based integration or a custom reporting task, but you must confirm the current options in the NiFi components index and the NiFi documentation before selecting one, since the availability of each can differ by release.
- Requirement first: Write down which lineage facts the governance team needs, such as source, transformation and destination, before choosing a mechanism.
- Reporting task design: A custom reporting task runs inside NiFi and must be built, versioned and upgraded with the rest of your extensions.
- Catalog target: Confirm which metadata catalog will receive the lineage, and whether it accepts the format your chosen approach produces.
- Provenance overlap: NiFi provenance already records events for each FlowFile, so decide what extra lineage is needed beyond it.
- Gaps during migration: Document any period where lineage is produced by the old path and not the new one, so auditors can see the change.
Confirm with your data governance owner that the replacement meets the reporting obligation before the Atlas path is switched off.
What to prepare before you replace or isolate these flows
Removed components such as the Hive, HBase, Kudu, Cassandra and Solr processors are usually found late, after a flow has already been moved. The cards below cover the work that makes replacement or isolation predictable, from knowing every flow that touches these systems to getting sign-off from the teams that own the destinations.
Full flow inventory with owners
List every process group, including nested and disabled ones, that contains a removed component or a reference to one. Record the flow owner, the destination system, the schedule and the business purpose for each. Search exported flow definitions and parameter contexts as well as the canvas, because a removed processor can sit inside a process group that nobody has opened in months. Without named owners, nobody can approve the cutover decision for a given flow. Ask each owner to confirm whether the flow is still needed at all before any replacement work starts.
Backups of flow.xml.gz and 1.x configuration
Before any change, take a copy of flow.xml.gz along with nifi.properties, bootstrap.conf, the authorizers file, and the sensitive properties key. Store them outside the NiFi host with a restore procedure that has been tested. Keep the 1.x installation binaries and custom NARs as well, so the original state can be rebuilt quickly. Note that the migration path to NiFi 2 changes the flow file format, so a backup is the only clean way back if a conversion goes wrong.
Test environment on the target release
Stand up a non-production NiFi on the exact NiFi 2 release you plan to run, using a copy of the production flow. Confirm which processors fail validation, which controller services are missing, and which replacement components need configuration. Test against non-production copies of each destination, such as a test Hive metastore or a test HBase cluster, so that writes do not reach live data. Record the version used so that test results can be tied to a specific release.
Data reconciliation baselines per destination
For each destination, capture a baseline before the cutover: row counts, key ranges, latest timestamps, and a sample of checksummed records. Define the comparison query or script and who runs it. Running old and new paths in parallel for a set period lets you compare outputs before retiring the 1.x flow. Confirm how duplicates and partial writes are handled, since a flow stopped midway through a Hive or Cassandra write can leave data that is hard to identify later.
Credentials and Kerberos dependencies
Removed components often authenticate with Kerberos keytabs, service principals or database passwords held in parameter contexts or the sensitive properties store. List each credential, the system it unlocks, its owner and its rotation schedule. Check whether any Kerberos login depends on the SPNEGO provider, which NiFi documents as deprecated. Replacement processors may need different connection services, so confirm the new authentication method with the destination team before you build it.
Sign-off from destination owners
Each destination system has an owner who can confirm the schema, the expected write pattern and the acceptable downtime. Get written approval from those owners for the replacement design, the reconciliation method and the cutover window. Ask them to name who will validate data after cutover, and what they need to see before the old path is switched off. Sign-off from the flow team alone does not cover a change that alters what the destination receives.
When keeping a NiFi 1.x island is a defensible choice
Keeping a NiFi 1.x island is defensible only when a small set of legacy flows that use Hive, HBase, Kudu or Cassandra components cannot be rebuilt in NiFi 2 before a cutover date, and when the business can accept running software that no longer receives upstream fixes. The island is a transition tool, not a place to park flows. The NiFi project states that 1.x cannot be maintained further because it depends on Jetty 9.4, Spring Framework 5.3 and AngularJS 1.8, which cannot be upgraded within that line. Every vulnerability in those components becomes your problem to mitigate, and the 1.x line is not a route to a supported runtime for those flows.
If you keep the island, treat it as a controlled system with conditions attached. Confirm with your security team which network paths the 1.x instance needs, then restrict it to the specific sources and sinks its flows touch, with no general internet egress and no shared access to the NiFi 2 cluster. Decide in advance who approves patch exceptions, what compensating controls apply to the 1.x UI and API, and how credentials for the Hive, HBase or Cassandra endpoints are rotated. Check that your scanning and asset inventory still cover the instance, since an isolated server that falls out of monitoring is a common way legacy flows outlive their plan.
Write the exit condition down before the island goes live. A useful record names each remaining flow, the NiFi 2 replacement or the decision to retire it, the owner, and a retirement date agreed with the business owner of the data. It also names the trigger that ends the exception early, such as a vendor end-of-life notice for the target store or a change to the data contract. Review the list at each NiFi 2 minor upgrade, because a flow that was blocked by a removed component may become straightforward once its target system is migrated. An island without a dated exit condition tends to become permanent infrastructure.
Sequence for replacing removed components on the way to NiFi 2
This sequence moves each flow that depends on Hive, HBase, Kudu, Cassandra, Couchbase, Solr or Atlas onto a tested replacement, so that no data path is switched off before its successor has been reconciled and can be reversed.
Inventory every flow that uses removed components
Export each 1.x flow definition and search it for processors and controller services from the deprecated list, including Hive 3 query and streaming processors, HBase record writers, PutKudu, Cassandra processors, Couchbase components, PutORC, ReportLineageToAtlas and any Solr usage. Record the process group, the destination system, the owning team and whether the component sits on a live path or a dormant one. The owner of each flow signs off the list. Done when every component reference is listed against a flow and an owner, and nothing is left as an unnamed 'other' item.
Classify each path and choose a replacement pattern
For each inventoried path, decide whether the destination is retired, moved to a supported NiFi 2 processor bundle that writes to the same system, or moved to a different target that your data platform team already runs. Note the record format, the write semantics (append, upsert, delete), the schedule and any dependency on Atlas lineage or Solr queries. Paths that cannot be replaced directly are marked for a design decision before build. Done when each path has a named replacement or a retirement decision recorded with its approver.
Build replacement flows on a non-production NiFi 2
Stand up a non-production NiFi 2 instance on Java 21, with the same parameter values as production but with test destinations. Build each replacement flow there, including its error relationships and retry behavior, and version it in your flow registry. Confirm that the 1.x flow definitions were moved to the flow.json.gz format through the 1.27.0 intermediate release before import, since the migration guidance requires both steps. Done when each replacement flow runs end to end against test data and its definition is stored in version control.
Run the 1.x and 2.x paths in parallel
Keep the original 1.x path and the replacement running against the same source for a period you agree in advance, writing to separate staging targets. Compare row counts, key sets, field values and failure counts between the two outputs, and review provenance events for the replacement to confirm that every input reaches a terminal state. Investigate and fix every difference before continuing, and record which differences were expected. Done when the reconciliation report shows no unexplained gaps for an agreed window and the owner accepts it in writing.
Set a rollback point before each cutover
Before switching a destination, take a copy of the 1.x flow definition, the parameter contexts, the controller service configuration, the state of any processors that hold state, and a backup of the target data where the replacement writes to it. Label the copy with the cutover date and the destination name. Confirm that the backup can be restored into a test instance. Done when the restore has been rehearsed and the rollback steps are written down for the on-call team.
Cut over one destination at a time
Move one destination to its replacement in a planned change window. Stop the 1.x path for that destination, start the NiFi 2 replacement, and watch the queues, error counts and destination writes until the owner confirms the output. Do not move a second destination until the first has been stable for an agreed period. Done when the owner signs off the cutover and the change record links to the rollback point.
Keep the 1.x flow disabled but recoverable
After each cutover, disable the original 1.x process group and keep it in place with its configuration and state intact, rather than deleting it. Record in the runbook when the retained copy can be removed and who decides. Confirm that a disabled flow cannot start by accident and that its credentials and sensitive values are still protected. Done when every retired path is marked disabled in the inventory with a named decision date and the retained copy is verified in storage.
What makes removed-component work take longer
This table compares the factors that expand removed-component work, why each one adds effort, and what to confirm before estimating. Read it as a checklist: the more rows that apply to your flows, the more likely the work moves from a component swap to a redesign with a destination owner, testing and a cutover plan.
| Driver | Why it adds effort | What to confirm |
|---|---|---|
| Number of flows and process groups | Each flow using Hive, HBase, Kudu, Cassandra or Solr needs its own mapping, testing and cutover, and shared process groups multiply the impact. | Count flows that reference the removed processors, including nested and parameterized process groups and flows stored only in the 1.x instance. |
| Custom Groovy or scripted code touching Hive or HBase | Scripts that open JDBC or HBase client connections are not covered by a processor swap and must be rewritten or retired before the upgrade. | Search ExecuteScript, InvokeScriptedProcessor and custom NARs for Hive, HBase, Cassandra or Kudu client code and record the owner of each script. |
| Destination schema changes | Replacement targets such as Parquet files, Iceberg tables or a new database often need different column types, partitioning and record schemas. | Whether the destination schema will change, who approves it, and whether downstream consumers read the old table layout. |
| Kerberos-secured Hadoop clusters | Keytabs, principals and ticket renewal must be rebuilt for the replacement path, and Kerberos login in NiFi 2 is deprecated. | Which principals and keytabs the flows use, where they are stored, and whether the destination accepts the same authentication method. |
| Data volume to reconcile | Large backlogs in HBase, Kudu or Cassandra tables need backfill, row-count checks and a defined cutover point, which takes longer as volume grows. | Row counts, retention windows, and whether historical data must be moved or can stay in a read-only 1.x island. |
| Destination owner availability | Schema, credential and cutover decisions sit with the team that owns the target, and delays there hold up the whole flow change. | Named owner for each destination, their approval window, and who signs off on data equivalence before traffic switches. |
Questions teams ask before replacing Hive, HBase and Kudu flows
How much does replacing removed NiFi components cost?
The cost depends on how many flows use the removed components, how complex each flow is, and how many destinations must be re-tested. DeployOpen does not publish a price list. A quote follows from a written scope that lists the flows, the replacement pattern for each component, the test plan and the deliverables, and it is agreed in writing before work starts. Ask the quote to separate the discovery and inventory work, the rebuild of each flow, the validation against real destinations, and any ongoing support. Ask whether each item is one-time or recurring, and what changes the quote, such as additional destinations, custom Groovy or Python code, or a need to keep the 1.x instance running in parallel.
How long does a Hive, HBase or Kudu flow replacement take?
Duration is set by the number of flows, the number of distinct removed components, and how much of each flow depends on the destination's behavior. Flows that write one table format with simple record handling are usually quicker to rebuild than flows that depend on partitioning, upserts, or ordering guarantees. Verification often takes longer than the rebuild because the team must confirm that data lands correctly in the target system. Ask for a schedule that shows discovery, design of each replacement, test cycles and cutover windows, and confirm which steps depend on access to your Hadoop, HBase or Kudu clusters and on the owners of downstream systems.
What must our team provide before the work starts?
Provide the NiFi flow definitions for the affected process groups, exported in a form the team can review, along with a list of the processors that reference Hive, HBase, Kudu, Cassandra, Couchbase, Solr, ORC or Atlas. Name an owner for each destination system who can confirm table schemas, key design, and expected write semantics. Supply sample or anonymized test data that reflects real record shapes, and access to a non-production destination for validation. Also provide the parameter contexts, the controller services that hold connection details, and the change window your organization uses. Missing destination owners are the most common cause of delay.
Can our internal team replace these components without a partner?
Yes, a capable internal team can do this work if it has NiFi administration skills, access to the destination systems and time to test. The work is mostly flow engineering and validation rather than new code, but it needs people who understand both the NiFi processors and the target platform. Consider whether the team has done a NiFi version upgrade, can run a non-production NiFi instance, and can build test evidence that auditors or data owners will accept. Partners are most useful when the inventory is large, several teams own flows, or the schedule is tight. Ask for a written scope if you want a partner to take on part of the work.
Is it safe to keep a NiFi 1.x island running, and for how long?
A 1.x island can carry flows for a period while replacements are built, but it is not a stable long-term setup. The NiFi project states that the 1.x line cannot be maintained further because it depends on Jetty 9.4, Spring Framework 5.3 and AngularJS 1.8, which cannot be upgraded in that line. The downloads page lists an end-of-support date of December 8, 2024 for 1.28.1. Treat the island as a time-boxed exception with a named exit date, restricted network access, reviewed patches from your own process, and a record of which flows still depend on it. Confirm the current support status on the NiFi downloads page before you decide.
Does a replacement processor exist for each removed component?
Not every removed component has a one-to-one replacement in NiFi 2. The deprecation list covers Hive 3 query and streaming processors, HBase record processors, PutKudu, Cassandra record and query processors, Couchbase components, PutORC and ReportLineageToAtlas. None of these appear in the NiFi 2.12.0 components index, so the replacement path must be confirmed for each one. Check the components index for the processor that writes to your destination, and check the NiFi migration guidance for any published mapping. Where no direct match exists, the design may use a different destination protocol, an intermediate file format, or a custom extension. Confirm each choice with the destination owner before the build starts.
How do we find every flow that uses these components?
Start by searching the flow definitions and registry versions for the processor type names listed in the deprecation documentation, then check parameter contexts and controller services for the same connection details. Export each process group and record the processor, its properties and the downstream destination it writes to. Include flows that run on other nodes or are stopped, because they still need a decision. Confirm the result with the flow owners, since some flows may call Hive or HBase indirectly through scripts or custom processors. The inventory should become the basis for the scope document.
How DeployOpen works on this
DeployOpen starts by inventorying where Hive, HBase, Kudu, Cassandra, Couchbase, Solr and Atlas components sit in your flows, then agrees a written scope before any change is made. The work is delivered inside infrastructure you control, with replacements tested against your own data and handed over with documentation.
How we scope
- Inventory every flow, process group and template that references a removed or deprecated component, including ones inside versioned flows
- Record each affected component, its owning team, data destinations and the replacement pattern agreed for it
- Agree the scope in writing, including which flows move to NiFi 2 and which, if any, remain on a 1.x instance
- Confirm the target NiFi 2 release and the lists of components that must be validated against your environment
How we build
- Rebuild affected flows with replacement processors or controller services, keeping parameter contexts and record schemas intact
- Test each rebuilt flow against representative inputs, checking provenance, error routes and downstream data formats
- Validate sensitive values, credentials and network paths in your environment before any cutover step is scheduled
- Document decisions, component mappings and rollback steps so your engineers can review each change
How we hand over
- Deliver flow definitions in your Git repository with a layout and branch approach your team has agreed
- Provide runbooks covering cutover order, verification checks and the criteria for retiring any 1.x island
- Walk your engineers through the rebuilt flows and the open items that still need a business decision
- Record what was tested, what was not, and which items your team must confirm with its data owners
How we support
- Fixed-scope engagements end with a handover review against the written deliverables
- Ongoing support, upgrades and continuous testing are available as a retainer after handover
- Retainers can cover later NiFi 2.x upgrades, new component changes and periodic flow reviews
- Scope changes are priced and agreed in writing before additional work begins

