Skip to main content
Industry Solutions

Custom Software for Energy & Utilities

Secure, flexible, and compliant architecture tailored for the unique challenges of the Energy & Utilities sector.

Founder & Lead Architect, ERPStack

Quick Answer

In short: an energy ERP sits on the FERC Uniform System of Accounts with a firehose of telemetry attached. ERPStack builds custom utility software that books to 18 CFR Part 101, collects NERC CIP-013-3 vendor evidence, streams IEC 61850 and CIM points into TimescaleDB, and versions AMI meter reads so a corrected bill can be reproduced.

Why Custom ERP for Energy & Utilities?

Operating in the Energy & Utilities sector requires a systems architecture designed for high scalability, operational flexibility, and strict regulatory compliance. Standard off-the-shelf software forces your teams to reshape their workflows to fit rigid software packages. A custom ERP for the Energy & Utilities industry maps directly to your exact business logic. Deployed to your secure cloud infrastructure (AWS or Azure), the system isolates database schemas, automates redundant reporting tasks, and scales without user seat licensing fees. This ensures your corporate data remains under your absolute control, eliminates vendor lock-in, and lowers long-term operational technology costs by up to 70% over a 3-year period.

Industry Pain Points

  • The general ledger has a chart of accounts someone designed, so FERC Form No. 1 is rebuilt by hand from 18 CFR Part 101 mappings
  • NERC CIP-013 vendor evidence lives in email threads and PDFs instead of queryable PostgreSQL rows an auditor can be shown
  • SCADA and 15-minute AMI telemetry is written into the transactional PostgreSQL ledger, so IEC 61850 event floods contend with month-end close
  • AMI reads reach billing before VEE finishes, so measured, estimated and edited values are indistinguishable in a rate case
  • The EAM work order, the outage system and the IEC 61970-301 CIM network model each hold a different identity for the same energy asset
  • Day-ahead and real-time settlement statements from PJM, ERCOT, CAISO and MISO are reconciled in spreadsheets outside the ERP

Engineering Blueprint

An energy utility runs on a chart of accounts it did not choose. 18 CFR Part 101, the FERC Uniform System of Accounts prescribed by Order 218 in 1960, fixes the account numbers, and FERC Form No. 1 is what has to come out of them. ERPStack builds the energy ledger in PostgreSQL around that constraint.

The chart of accounts is prescribed, not designed

Account 101 Electric plant in service, 107 Construction work in progress, 182.3 Other regulatory assets and the 407.3/407.4 regulatory debit-and-credit pair are legal identifiers. SAP S/4HANA, Oracle NetSuite, Microsoft Dynamics 365 and Sage X3 treat them as a mapping layer, so rate-base accounting and the annual Form No. 1 and quarterly Form 3-Q become an export project and a permanent source of Technical Debt. ERPStack makes the FERC account a required PostgreSQL column, enforced by Drizzle ORM and TypeScript.

// Drizzle ORM on PostgreSQL — FERC accounts are law, not labels
      export const glEntries = pgTable('gl_entries', {
        fercAccount: text('ferc_account').notNull(), // 18 CFR Part 101
        functionClass: text('function_class'),       // transmission | distribution
        jurisdiction: text('jurisdiction'),          // FERC | state retail
        workOrderId: text('work_order_id'),          // 107 CWIP closes to 101
        amountCents: bigint('amount_cents').notNull(),
        postedAt: timestamp('posted_at').notNull(),
      });

Grid telemetry is not ledger data

IEC 61850 substation events, DNP3 SCADA polls and 15-minute AMI reads arrive at cadences a transactional ledger must never absorb: a million energy meters is roughly 96 million rows a day. ERPStack uses an Event-Driven Architecture — Apache Kafka into TimescaleDB, or a ClickHouse analytics database where nodal and congestion history is queried — and leaves only settled quantities in PostgreSQL. Asset identity is shared through IEC 61970-301, the Common Information Model base, so the outage system, the EAM work order and the ERP stop disagreeing about which asset is which.

A meter read is a version, not a number

Validation, estimation and editing — the VEE process inside every meter data management system — rewrites AMI reads before billing sees them, and a rate case can ask which value was measured and who edited it. ERPStack stores each VEE outcome as a new immutable row keyed to meter and interval, validated by Zod and ingested through an idempotent REST API so a replayed AMI file cannot double-bill. Time-of-use, net metering and demand charges recompute from lineage — an Immutable Audit Trail with an energy shape, and the same substrate that makes IEEE 1547 interconnection and OpenADR 3.0 demand response billable.

What moves first, and what moves last

Nothing in energy rewards a big-bang cutover. ERPStack applies the Strangler Fig Migration Pattern: ISO settlement reconciliation against PJM, ERCOT, CAISO and MISO statements moves first because it is spreadsheet-shaped and has an owner, EAM and outage integration follow, and the regulated ledger moves last behind a stable Next.js API.

Our Solutions

  • FERC Uniform System of Accounts as a first-class PostgreSQL column — 101, 107, 108, 182.3, 254, 407.3 and 407.4 enforced by Drizzle ORM and TypeScript
  • CIP-013-2 R1.2.1 to R1.2.6 vendor obligations captured as dated evidence rows behind an Immutable Audit Trail
  • IEC 61850, DNP3 and CIM events on Apache Kafka landing in TimescaleDB or a ClickHouse analytics database, never in the ERP ledger
  • AMI validation, estimation and editing as append-only versions, Zod-validated behind an idempotent REST API for time-of-use and net metering
  • PHMSA filings generated from the asset ledger — Form 7100.2-1 by 15 March, the one-hour 49 CFR 191.5 notice clocked as an obligation
  • RBAC scoped by CIP-002 impact rating, deployed to AWS or Microsoft Azure with Terraform, auditable against SOC 2 and ISO 27001

Compliance & Security

NERC CIP-013-3 NERC CIP-010-5 FERC 18 CFR Part 101 IEC 62443-3-3 IEC 61850 PHMSA 49 CFR 191 SOC 2 Type II

Energy compliance has an unusual shape: the utility certifies itself and its suppliers supply the evidence. ERPStack is not a NERC CIP registered entity — no software firm is — so the only useful question is what a supplier must produce.

  • NERC CIP by number, and what Order No. 919 changed

    CIP-002 categorises BES Cyber Systems, CIP-005 draws the electronic security perimeter, CIP-007 systems security management, CIP-010 configuration change management, CIP-011 information protection. On 24 March 2026 FERC issued Order No. 919 (91 FR 13957, effective 26 May 2026) approving 11 modified CIP standards, CIP-002-8 through CIP-013-3, and four new NERC Glossary terms: Cyber System, Management Interface, Shared Cyber Infrastructure, Virtual Cyber Asset. Virtualisation is finally named — which lets an energy utility argue an AWS or Microsoft Azure design against a definition.
  • CIP-013 governs how you buy software — including from ERPStack

    CIP-013-2 R1.2 names six things an energy procurement process must address: vendor notification of vendor-identified incidents, coordinated response, notice when vendor access should end, disclosure of known vulnerabilities, verification of software integrity and authenticity for every patch, and controls for vendor-initiated remote access. R3 makes the CIP Senior Manager re-approve that plan at least once every 15 calendar months, and FERC Order No. 912, issued 18 September 2025, gives NERC 18 months to pull Protected Cyber Assets into scope. ERPStack answers with signed GitHub Actions build provenance, Semgrep SAST in CI/CD deployment pipelines, and break-glass access stored as time-boxed rows.
  • The number that makes the audit a schema problem

    A Reliability Standard violation carries up to $1,584,648 per violation, per day under 16 U.S.C. 825o-1(b), inflation-adjusted at 18 CFR 385.1602 by FERC Order 906 on 14 January 2025. It accrues daily, so energy exposure tracks detection speed. ERPStack scopes RBAC by CIP-002 impact rating, isolates the corporate ERP from the perimeter, and treats the security levels of IEC 62443-3-3 as an infrastructure boundary, not an application concern — Zero-Trust Security on AWS, defined in Terraform, auditable against SOC 2 and ISO 27001.
  • Pipelines and climate disclosure are filings, not dashboards

    A gas operator has one hour after confirmed discovery to reach the National Response Center under 49 CFR 191.5, files DOT Form PHMSA F 7100.2-1 by 15 March under 191.17, and Form 7100.1 within 30 days of a distribution incident under 191.9 — each against an OPID. IFRS S2 Climate-related Disclosures, effective for annual periods beginning on or after 1 January 2024 and amended by the ISSB in December 2025, asks that same energy asset ledger for emissions by facility: one PostgreSQL record, four regulators.

Standards we engineer to

  • NERC CIP-013-3
  • NERC CIP-010-5
  • FERC 18 CFR Part 101
  • IEC 62443-3-3
  • IEC 61850
  • PHMSA 49 CFR 191
  • SOC 2 Type II

Get the Blueprint

Download our comprehensive Systems Architecture Blueprint to see how we architect compliant solutions.

Download Blueprint

Metrics & Integrations

Illustrative engineering targets for this sector — the SLAs and capacities we design and build toward, not a live service dashboard.

AMI ingest design target

96M rows/day

Kafka to TimescaleDB write path

250k points/sec

CIP-013 evidence export

< 15 min

VEE lineage retention

7 years

Integration: IEC 61850 / DNP3 gateway

Category: SCADA

Integration: IEC 61970-301 CIM

Category: Network model

Integration: PI System historian

Category: Historian

Integration: TimescaleDB

Category: Telemetry store

Integration: PJM and ERCOT settlement files

Category: ISO market

Integration: OpenADR 3.0

Category: Demand response

Implementation Process

Phase 1

FERC account binding

Every PostgreSQL ledger posting bound to an 18 CFR Part 101 account, function class and jurisdiction.

Phase 2

CIP-002 scoping

Energy systems classified by BES Cyber System impact rating, with the RBAC model fixed to match.

Phase 3

Telemetry split

Apache Kafka into TimescaleDB on AWS; the PostgreSQL ledger keeps settled quantities only.

Phase 4

Meter data VEE

Validation, estimation and editing as Zod-checked append-only versions feeding tariff calculation.

Phase 5

Market and asset reconciliation

PJM, ERCOT, CAISO and MISO settlement statements resolved against EAM work orders and one asset id.

Phase 6

Evidence and filings

Generated FERC Form No. 1 extracts, PHMSA filings and CIP-013 vendor evidence exports.

Proven in Energy & Utilities

Field Operations & Compliance Portal

Unified operational portal for field tracking and compliance

Read Case Study

Frequently Asked Questions

Yes, for a FERC-jurisdictional utility. 18 CFR Part 101 prescribes the account numbers — 101 Electric plant in service, 107 Construction work in progress, 182.3 Other regulatory assets — and FERC Form No. 1 is generated from them. ERPStack makes the FERC account a required PostgreSQL column on every energy ledger posting, rather than a mapping table applied later at reporting time.

No, and no software vendor is. NERC registers and audits the utility, not its suppliers: the registered entity certifies its own compliance and vendors supply the evidence. What an energy buyer should demand is what CIP-013-2 R1.2 requires — incident notification, vulnerability disclosure, software integrity verification and controlled vendor remote access. ERPStack delivers those as records, not assurances.

Order No. 919, issued 24 March 2026 at 91 FR 13957 and effective 26 May 2026, approved 11 modified NERC CIP Reliability Standards plus four new NERC Glossary terms: Cyber System, Management Interface, Shared Cyber Infrastructure and Virtual Cyber Asset. Virtualisation is now named in the standards, so an energy utility can argue an AWS or Microsoft Azure design against a defined term instead of an exception.

No. One million energy meters at 15-minute intervals is roughly 96 million rows a day, and that write path should not share a transactional PostgreSQL instance with month-end close. ERPStack streams reads over Apache Kafka into TimescaleDB, or a ClickHouse analytics database where nodal and settlement history is queried, and keeps only billed quantities and adjustments in the ledger.

By versioning them, never overwriting. VEE — validation, estimation and editing — rewrites AMI reads before they reach billing, and a rate case can ask which value was measured and who changed it. ERPStack writes each VEE outcome as a new immutable row keyed to meter and interval, so energy time-of-use and net-metering charges are recomputed from lineage instead of patched.

Keep SAP S/4HANA if it already carries the regulated ledger and payroll — replacing a working energy ledger is rarely the highest-value project. The gap worth building sits around it: ISO settlement reconciliation against PJM, ERCOT, CAISO or MISO statements, meter data management, CIP-013 evidence and outage-to-work-order flow. No ERP package models those natively.

Up to $1,584,648 per violation, per day. That ceiling sits at 16 U.S.C. 825o-1(b) as inflation-adjusted in 18 CFR 385.1602 by FERC Order 906, published 14 January 2025. Because it accrues daily, an energy utility's exposure is really a function of detection speed — which is the argument for compliance evidence living in queryable rows rather than in documents.

Yes, as generated documents drawn from the asset ledger. 49 CFR 191.5 gives a gas operator no more than one hour after confirmed discovery to notify the National Response Center; 191.17 requires DOT Form PHMSA F 7100.2-1 by 15 March each year; 191.9 requires Form 7100.1 within 30 days of a distribution incident. ERPStack models each as a clocked obligation on an energy asset record.

You do not touch SCADA. ERPStack terminates IEC 61850 and DNP3 traffic at a gateway outside the electronic security perimeter, publishes normalised events onto Apache Kafka, and shares asset identity with the ERP through the IEC 61970-301 Common Information Model. The energy control system keeps its own lifecycle; only the model and the events cross the boundary.

By keying emissions to the asset that already carries the FERC account. IFRS S2 Climate-related Disclosures applies to annual reporting periods beginning on or after 1 January 2024, and the ISSB issued amendments to its greenhouse gas emissions disclosures in December 2025. ERPStack attaches fuel, generation and fugitive-emission records to the same energy asset id used for rate-base accounting.

Sectors with overlapping obligations

Related reading

Explore Custom ERP Solutions by Location, Industry, and Alternatives

Global Architectures