---
title: Powered by NiFi - Companies &amp; Organizations using Apache NiFi
---

<div class="large-space"></div>
<div class="row">
    <div class="large-12 columns">
        <h1 class="nifi-txt">
            <span>
                Powered by Apache <span class="ni">ni</span><span class="fi">fi</span>
            </span>
        </h1>
    </div>
</div>
</div>
<div class="row">
    <div class="large-12 columns">
        <p class="description">Below is a sample of companies and organisations using Apache NiFi</p>
    </div>
</div>
<div class="row">
    <div class="large-12 columns">
        <table>
            <tr>
                <th>Company / Organization</th>
                <th>Industry</th>
                <th>Summary</th>
            </tr>
	        <tr>
		        <td><a href="https://micron.com">Micron</a></td>
                <td>Semiconductor Manufacturing</td>
                <td>Micron's Enterprise Analytics and Data team uses NiFi to acquire worldwide manufacturing data and ingest it into symmetrical Global Data Warehouses.  This data is vaulted and exposed via data marts providing our data scientists and business partners a secured global view of our manufacturing processes.  For ingestion flows requiring higher performance transformations, we utilize the NiFi Site-to-Site protocol to seamlessly transfer processing to Spark jobs on our Hadoop clusters.  We have leveraged NiFi's REST API to automate the creation and monitoring of new ingestion pipelines which furthers our goal of providing a complete Global Data Warehouse.</td>
            </tr>
	        <tr>
		        <td><a href="https://macquarietelecomgroup.com">Macquarie Telecom Group</a></td>
                <td>Cloud and Telecommunications</td>
                <td>Uses Apache NiFi to securely and reliably transfer, transform, enrich and deliver billions of
                individual events per day (i.e. security logs, system metrics, aggregated data sets, etc) across
                multiple datacenters.</td>
            </tr>
            <tr>
                <td><a href="https://www.dovestech.com">Dovestech</a></td>
                <td>Cyber Security</td>
                <td>Dovestech's cyber security visualization product, <a href="http://www.dovestech.com/threatpop">ThreatPop</a>, uses Apache NiFi to enrich and
                normalize millions of cyber security related events into a central database
                which allows customers to interact with cyber security events through game
                engine visualization technology.
            </tr>
            <tr>
                <td><a href="https://www.flexilogix.com">Flexilogix</a></td>
                <td>Big Data / IoT</td>
		        <td>Builds all data ingestion pipelines using NiFi. Have deployed NiFi clusters to ingest, transform and deliver to data analytics backends serving all purposes of data mediation both for realtime and batch jobs.</td>
            </tr>
            <tr>
                <td><a href="https://www.payoff.com/">Payoff</a></td>
                <td>Financial Wellness (fintech)</td>
                <td>NiFi primarily serves as our consumer between Kafka and HDFS. NiFi also provides schema validation for event streams while enabling us to modify and republish secure event streams for general use. NiFi extracts and standardizes large datasets from third parties between various sources including HDFS/s3/Kafka/sftp.</td>
            </tr>
            <tr>
                <td><a href="https://www.onyxpoint.com">Onyx Point</a></td>
                <td>Commercial/Federal Consulting</td>
                <td>Design large scale NIFI clusters for high volume ingest/egress and provide day to day operational support and maintenance.</td>
            </tr>
            <tr>
                <td><a href="https://www.telekom.sk/about/">Slovak Telekom</a></td>
                <td>Telecommunications</td>
                <td>Uses Apache NiFi to power active monitoring. As various network devices are being monitored, SNMP as the unifying protocol is used for communication. Apache NiFi is in active query mode to periodically query these devices. Transformation of the SNMP responses and their transfer to HDFS and Elastic are built using Apache NiFi as well.</td>
            </tr>
            <tr>
                <td><a href="https://godatadriven.com">GoDataDriven</a></td>
                <td>Data Science & Engineering</td>
                <td>GoDataDriven, a Dutch service company in the data science and engineering space, helps customers ingest and process data in real time from the most disparate devices (including but not limited to trains!).</td>
            </tr>
            <tr>
                <td><a href="https://looker.com">Looker</a></td>
                <td>SaaS & Analytics Software</td>
                <td>We're building all new data ingestion pipelines using NiFi. Existing pipelines are being migrated to NiFi as well. We have deployed NiFi clusters to ingest, transform, and deliver data to various backends like Google Big Query, Amazon Redshift, and Amazon S3.</td>
            </tr>
            <tr>
            	<td><a href="https://www.thinkbiganalytics.com">Think Big, A Teradata Company</a></td>
            	<td>Data Science & Engineering</td>
            	<td>Think Big's open-source data lake management platform <a href="http://kylo.io">Kylo</a> offers a turn-key, enterprise-ready data lake solution that integrates best practices around metadata management, governance, and security gleaned from Think Big's 150+ big data implementation projects. Kylo uses Apache NiFi as the underlying scheduler and orchestration engine, along with other technologies like Apache Hadoop and Apache Spark.</td>
            </tr>
            <tr>
                <td><a href="https://www.hashmapinc.com/">Hashmap, Inc.</a></td>
                <td>Big Data / IoT</td>
                <td>Hashmap uses Apache NiFi to securely collect, transmit, and transform data for ingest and delivery into our IoT / Time Series Accelerator platform, allowing for outcome-based, real time analytics and visualization of oil & gas, utilities, manufacturing, industrial, retail, pharma, and process control data. Additionally, we are creating a catalog of open source, ready-to-run, industry specific NiFi processors and controller services for protocols like OPC-UA, ETP, WITSML, LAS, and many others.</td>
            </tr>
            <tr>
                <td><a href="https://www.hastingsdirect.com/">Hastings Group</a></td>
                <td>Insurance</td>
                <td>Hastings Group is a fast growing, agile, digitally focused general insurance provider providing services to the UK car, van, bike and home insurance market. We have strong relationships with all major price comparison websites (PCWs) and utilise Apache NiFi to process and ingest millions of items of data.</td>
            </tr>
            <tr>
                <td><a href="https://ona.io/">Ona</a></td>
                <td>International Development and Humanitarian Aid</td>
                <td>Ona is a software engineering and design firm based in Nairobi, Kenya and Washington, DC. Our mission is to improve the effectiveness of humanitarian and development aid by empowering organizations worldwide with collective and actionable intelligence. We use Apache NiFi to ingest, process, and disseminate global health and service delivery data from diverse sources.</td>
            </tr>
        </table>
    </div>
</div>
<div class="row">
    <div class="large-12 columns">
    <p>To add yourself to this list, submit a pull request to <a href="https://github.com/apache/nifi-site/">nifi-site</a> or
    send an email to the users mailing list with the organization name, industry and a brief description on how Apache NiFi
    is used to help your organization.</p>
    </div>
</div>
