Industry guide · Custom Software

Utilities Management Software: A Build Guide for Utilities and Co-ops

The short answer

If your utility or co-op is juggling outage calls in one system, work orders on paper and billing in a legacy CIS, the answer is usually to build targeted custom layers around what you already run, not to replace it. Based on Digital Heroes delivery experience across 2,000+ projects, a focused first release such as a unified outage intake and member notification layer runs $60,000 to $130,000 and ships in 12 to 16 weeks, while a full operations platform covering field work orders, rating and reliability reporting lands between $150,000 and $400,000 phased over 6 to 12 months.

Why operations software makes or breaks a utility or co-op

Picture a Tuesday night ice storm at a 28,000 meter electric cooperative. The dispatcher has Milsoft OMS open in one window, predicting fourteen device outages from inbound calls. The Landis+Gyr head end sits in a second browser tab holding four hundred last-gasp meter pings that the OMS cannot see because the AMI integration module was never purchased. Two member service reps are typing outage notes into a shared spreadsheet because the IVR overflow queue filled twenty minutes ago. The crews are working from printed switching orders, and the on-call engineer is texting them photos of the ArcGIS map from his kitchen table.

None of these tools is bad. NISC iVUE, SEDC, Daffron and Tyler for municipal utilities are all competent at their center of gravity, which is billing and accounting. Milsoft is good at outage prediction. Survalent and other SCADA platforms are good at the control room. The failure is at the edges, where the vendors expect a human in a swivel chair to move data between islands, and each bridge across those islands is sold as a separate per-meter module on the vendor's timeline.

In the utility operations we have audited, that glue work quietly consumes one to two full-time positions of re-keying and reconciliation, and every major storm adds overtime spent on data entry the systems should have exchanged on their own. For an operator with a real budget, the question is not whether the leak exists. It is whether to keep paying it monthly or fix it once.

Problem one: outage calls, AMI pings and SCADA live in three different rooms

A member on Route 9 calls in lights out at 2 a.m. The dispatcher checks the OMS, which predicts a blown tap fuse from three calls. What the dispatcher cannot see is that a recloser locked out eight minutes earlier in Survalent, and that 412 meters already sent last-gasp pings to the head end. Three signals, three screens, one tired human doing the correlation by hand, and a crew dispatched to the wrong device.

Off-the-shelf cannot fix this because every vendor bridges only to its own island. Milsoft and NISC both sell AMI integration, but it polls on a schedule, carries per-meter fees, and works best inside their own suite. SCADA speaks DNP3 to the control room, not to member services.

A custom build puts one event pipeline in the middle: head-end events over MultiSpeak or the meter vendor's REST API, IVR call records, and read-only SCADA status points from a historian feed, all normalized into a single outage stream keyed to your connectivity model, the transformer-to-meter mapping exported from GIS. The engine rolls calls and pings up to the likely protective device, the dispatcher confirms with one click, and the confirmed outage flows back to the OMS and out to affected members by text. Intake is queue-based, so a 50x call spike during a storm gets absorbed instead of busy signals.

Problem two: work orders die between the field and the billing system

A staking technician designs a line extension in ArcGIS or Futura and prints the staking sheet. The crew builds it, marks changes in pen, and the paper rides in a truck for two weeks. Someone in the office then re-keys material usage into iVUE inventory, the as-built edits to GIS wait months in a pile, and billing for the new service starts late. Worst of all, the connectivity model your outage prediction depends on is now stale.

The CIS work order modules assume a desk and a network connection. The GIS vendors' field apps capture geometry but never write billing determinants or inventory transactions. Nobody owns the loop end to end.

A custom field application does: offline-first on the truck tablet, with assignment, barcode material capture, photos and GPS-stamped as-builts. When the truck gets signal, the sync engine posts material issues to CIS inventory over MultiSpeak, queues the GIS edit for engineering review, and flips the service to billable the same day the crew closes the order. One capture, three systems updated, zero re-keying.

Problem three: the billing engine cannot price the rates your board keeps approving

The board approves a time-of-use EV rate and a solar buyback tariff. The CIS vendor quotes the rate change as a development request measured in months, and meanwhile the interval data that could power those rates sits unused in the head end. A prepaid metering pilot stalls for the same reason. Legacy rating engines were built for monthly kWh blocks, and every new determinant means waiting in a queue behind a thousand other utilities.

The custom answer is a rating sidecar, not a CIS replacement. It pulls interval reads nightly from the head end, computes time-of-use, demand and net metering determinants, and writes them back into the CIS as billing line items, so bills still print from iVUE and the general ledger never notices. Rates are configured as data rather than code: the board approves in March, you bill on it in April.

Problem four: members learn about outages from Facebook before they hear from you

During any real event, the co-op's Facebook page fills with guesses and anger while member services drowns. SmartHub shows a map, but proactive texting, crew status and honest ETAs are extra modules tied to one vendor's stack, and the messages are generic because the app has no idea what the crews are actually doing.

A custom notification service subscribes to the same outage event stream described above. Members get a first text when the outage is confirmed, an update when a crew is assigned, and a restoration message triggered by power-restore pings from their own meters, so the message reflects AMI truth rather than dispatcher optimism. Every text that lands is a call that never rings, and you can measure the deflection week by week.

Problem five: reliability reporting is a two-week spreadsheet project

Every quarter an engineer exports OMS events to Excel, hand-scrubs duplicates and phantom restorations, and computes SAIDI, SAIFI and CAIDI for the state commission and RUS Form 7. The OMS reporting module only counts events the OMS saw, so anything handled by phone or paper is invisible, and the major event day exclusions under the IEEE 1366 beta method are done by hand where an auditor can and will question them.

With a unified outage stream feeding a small data warehouse, every event carries start time, restore time, cause code and affected customer count from the moment it happens. Indices compute continuously, major event days flag automatically, and the Form 7 and commission exports are one click with every number traceable to source events. The two-week project becomes a ten-minute review.

What custom utility operations software costs and how long it takes

Across 2,000+ delivered projects at Digital Heroes, the pattern in this category is consistent. A focused first release, typically the unified outage intake with member notifications, or the offline field work order app against your existing CIS, runs $60,000 to $130,000 and ships in 12 to 16 weeks. A full operations platform that adds the rating sidecar, GIS write-back and reliability warehouse lands between $150,000 and $400,000, phased over 6 to 12 months so each phase pays for itself before the next starts.

What pushes cost up in utilities specifically: every additional integration endpoint, since a second head end or a SCADA historian is real scope, not a checkbox; MultiSpeak version mismatches between your CIS and OMS; offline field requirements in territory with no coverage; storm-load engineering, because a system that works on a calm day and falls over at 50x event volume is worthless; and connectivity model cleanup, since outage prediction is only as good as your transformer-to-meter data.

Build vs buy: when off-the-shelf is genuinely right

Stay on the shelf if you are under roughly 10,000 meters, run standard residential rates, live entirely inside one vendor suite and have no one internally who wants to own software. At that scale the per-meter module fees are cheaper than any build, and the vendor's roadmap will eventually cover most of your gaps.

Build when the signals stack up: staff re-keying the same order into three systems, rate change orders quoted in quarters, module fees compounding every renewal, storm response that depends on one dispatcher's memory, and a board approving programs your CIS cannot price. Our position after building in this category: never rip out the CIS at this budget. iVUE, SEDC or Daffron should remain the system of record for money and members. Build the custom layers where the crews and the members actually feel the pain, and let the legacy core do the one thing it does well.

How to choose a developer for utility operations software

First, test domain data models. Ask the firm to whiteboard how a phone call rolls up through a transformer and a tap fuse to a recloser, and what happens to that prediction when the connectivity model is wrong. A team that cannot explain your feeder topology will model your outage data as a flat ticket queue, and you will find out during a storm.

Second, demand named integration experience. MultiSpeak versions, head-end APIs from Itron, Landis+Gyr or Sensus, and at least one project that exchanged live data with NISC, SEDC or Milsoft. References should be utilities, not lookalike industries.

Third, probe storm-mode engineering. Ask how the system behaves at 50x normal event volume, what the field app does after six hours offline, and what degrades gracefully when the head end itself is down. The honest answers are architectural, not reassuring.

Fourth, settle compliance and ownership before the kickoff. Full work-for-hire code ownership in the contract, a developer who knows to keep custom systems outside the NERC CIP electronic security perimeter with one-way read-only feeds, and enough RUS and FERC accounting literacy that work order costing lands in the right accounts. Any firm that shrugs at those three acronyms is learning your industry on your invoice.

Research & sources

The evidence behind this guide

Independent findings on why this investment pays off. Every link goes to the primary source.

  1. The share of tasks performed mainly by humans is projected to fall from 47% to 33% by 2030 as human-machine collaboration expands, with 170 million jobs created and 92 million displaced (a net gain of 78 million). Source: World Economic Forum (2025) →
  2. Across 1,471 IT projects the average cost overrun was 27%, but one in six projects was a 'black swan' with an average cost overrun of 200% and a schedule overrun of nearly 70%. Source: Harvard Business Review (Bent Flyvbjerg & Alexander Budzier, University of Oxford) (2011) →
  3. The EY survey of 508 payroll professionals at U.S. companies with 250-10,000 employees quantifies the direct and indirect cost of payroll inaccuracy, reinforcing the ROI case for payroll automation; the study is the original source of the frequently cited $291-per-error figure. Source: BusinessWire / EY (Ernst & Young) (2022) →
  4. SaaS spend averaged $4,830 per employee (up 21.9% year over year), with large enterprises (10,000+ employees) spending roughly $284M annually and running about 660 apps, while organizations wasted an average of $21M annually on unused licenses. Source: Zylo (2025) →
Rohan Malhotra · Enterprise Software Consultant

Rohan advises mid-market and enterprise teams on ERP, CRM and custom software, and has led delivery on dozens of business-software builds.

Writes for Digital Heroes, shipping business software for 2,000+ brands across 55+ countries since 2017.

FAQ

Frequently asked questions

How much does custom operations software cost for an electric co-op with 25,000 meters?
Expect $60,000 to $130,000 for a focused first release such as a unified outage intake and member notification layer, based on Digital Heroes delivery experience across 2,000+ projects. A full operations platform adding field work orders, a rating sidecar and reliability reporting typically runs $150,000 to $400,000 phased over 6 to 12 months. Meter count matters less than integration count, since each system like a second AMI head end or SCADA historian adds real scope.
Should we replace NISC iVUE or build custom software around it?
Build around it in almost every case. iVUE is wired into your accounting, payroll and member records, and a rip-and-replace carries multi-year risk that rarely pays off at a $100,000 to $400,000 budget. The pattern that works is keeping iVUE as the system of record for billing and finance while custom layers handle outage correlation, field work orders and member notifications, exchanging data through MultiSpeak or the vendor APIs.
Can custom software integrate with our Milsoft OMS and Itron AMI head end?
Yes, and this pairing is one of the most common integration jobs in the category. Milsoft exposes MultiSpeak endpoints and Itron head ends expose APIs for interval reads, last-gasp and power-restore events. A custom event pipeline consumes both, correlates them against your connectivity model, and pushes confirmed outages back to the OMS so dispatchers keep working in the tool they know.
How long does it take to build a custom outage communication and dispatch layer?
A working first release typically ships in 12 to 16 weeks in Digital Heroes delivery experience. That covers outage event intake from calls and AMI pings, roll-up prediction against your connectivity model, dispatcher confirmation and automated member texting. Later phases like SCADA feeds, crew mobile status and reliability reporting are added incrementally so the system earns its keep from the first storm season.
Do we own the source code if we hire a firm to build our utility software?
You should, and it must be written into the contract as work for hire with full assignment of the code, schemas and documentation. Insist on the repository living in your own GitHub or GitLab account from day one, not the vendor's. This protects the co-op if the relationship ends and satisfies board members and RUS lenders who ask about continuity.
How do we migrate decades of billing history off an AS/400 based CIS?
You usually do not migrate it into the new system on day one, and that is the honest answer. The proven approach is keeping the historical data in a read-only archive with a search interface, while the new custom layers work against current data through APIs or nightly extracts. Full historical conversion is a separate project you undertake only if regulators or auditors actually require queryable history in one place.
Can a custom system produce RUS Form 7 and SAIDI SAIFI numbers automatically?
Yes. When every outage event flows through one pipeline with start time, restore time, cause code and affected customer count, the IEEE 1366 indices compute continuously instead of quarterly in Excel. Major event day exclusions are flagged automatically by the beta method, and Form 7 and state commission exports become one-click reports with every figure traceable to source events for auditors.
What about NERC CIP compliance if custom software needs SCADA data?
The custom system should stay entirely outside your electronic security perimeter and receive SCADA points through one-way, read-only feeds from a historian in a DMZ. It never sends commands back toward control systems, so it does not become a CIP asset itself. Any developer you shortlist should propose this boundary unprompted, and hesitation there is a strong reason to pass.
Is SmartHub enough for member outage communication or do we need something custom?
SmartHub covers payments and a basic outage map well, and for small co-ops with quiet territories it is enough. The signals you have outgrown it are members learning about outages from Facebook first, call volume doubling during events, and no honest restoration estimates in the app. A custom notification layer driven by AMI power-restore pings sends updates grounded in what meters actually report, which is what cuts inbound calls.
Does the tech stack matter, and which one should I ask for?
It matters less than agencies imply, provided it is boring. A mainstream stack, something like React or Next.js on the front end, Node.js or Python behind it, and PostgreSQL for data, means thousands of developers can maintain your system if you ever change vendors. Apply one test: ask how hard it would be to hire a replacement developer for the proposed stack, and walk away from anything built on an agency's in-house framework.
Should I ask for a fixed price or pay the agency hourly?
Fixed price for the first version, hourly or retainer for what comes after launch. A fixed-scope, fixed-price V1 puts the estimation risk on the agency, which is exactly where you want it while trust is unproven; hourly billing on an unscoped greenfield build is a blank check. After launch, flip it, because maintenance and small features arrive unpredictably and fixed-pricing every ticket wastes everyone's time.
Should I hire a freelancer or an agency for my software project?
A skilled freelancer is the right call for a single-discipline scope under roughly $15,000, like a website, a plugin, or one integration. Above that, projects need design, backend, testing, and project management at once, and a solo builder becomes the single point of failure: if they get sick or take a bigger client, your project simply stops. Agencies bill 20-40% more per hour but carry continuity, code review, and someone to escalate to, which is what you are actually buying.
Will custom software work with the tools we already use, like QuickBooks and Stripe?
Yes, and this is one of custom software's genuine advantages: QuickBooks, Stripe, Shopify, and most mainstream business tools publish documented APIs built for exactly this. Expect each standard integration to add one to two weeks of build time, and be suspicious of any quote that lists five integrations without asking what data flows in which direction. The hard cases are legacy systems with no API, which is a question to raise in discovery, not in week nine.
Who owns the code when an agency builds my software?
You should, completely, through a written intellectual property assignment that transfers everything on final payment; without that clause, copyright stays with whoever wrote the code by default. Insist that the repository lives in your own GitHub organization from day one and that hosting, domains, and third-party accounts are registered to you. Also check for licenses to the agency's proprietary frameworks buried in the contract, because those can make switching vendors practically impossible even when you own your own code.
How many SaaS seats do we need before building custom becomes cheaper?
The crossover usually shows up between 20 and 50 seats on premium tiers. Salesforce Enterprise lists at $165 per user per month, so 40 users cost about $79,000 a year in subscriptions, which is real money against a custom system you would own outright. Run the comparison over three years: if subscription spend beats the build cost plus 15-20% annual maintenance, custom wins on price before you even count workflow fit.
What should I have ready before I contact a development agency?
Three things, none of them technical: a one-page description of the problem in your own words, a list of the tools and spreadsheets the new system must replace or connect to, and a must-have versus nice-to-have split of features. Add a budget range, even a wide one, because it changes the conversation from fantasy to engineering. You do not need a formal specification; producing that is what a discovery phase is for.
If we build for 20 users now, will the software cope with 500 later?
It should, without a rewrite, if it was built on a standard cloud stack; going from 20 to 500 users is mostly a hosting configuration change costing hundreds a month, not a second project. What actually breaks under growth is sloppier work: database queries never indexed for volume and features designed assuming one office's worth of data. Before signing, ask the vendor what happens to the system at ten times today's data, and listen for a specific answer.
Keep reading
let's build

Build something worth launching.

A plan, a team, a timeline, within 24 hours. No decks, no discovery calls. Tell us what you're building and we'll come back with a real scope and a real number.

message us directly · we reply within one business day

mission briefing

Monthly dispatch

Playbooks, real build costs, and what we're shipping. One email a month. No fluff.

visit us

New York HQ

1140 Broadway, Suite 704 · New York, NY 10001

Get directions
Online now

Hey there 👋 How can we help you today?