Problems & solutions · Custom Software

Dark Fiber IRU Software Problems: The 7 That Cost Real Money, and How to Avoid Them

Dark Fiber IRU Management Software software overview illustration showing common problems and fixes.
The short answer

The most expensive failure in this category is delivering a contract repository when what you needed was an encumbrance register. Every agreement ends up scanned, tagged and alerting on renewal dates, and your sales engineer still cannot say which strands on a route are free to sell without opening files. The double sold strand risk survives the whole project, quoting stays a research task that costs a fortnight of senior time per disputed route, and the uncertainty reappears as a discount when an infrastructure fund runs diligence on the same portfolio.

Why does the contract repository trap catch so many IRU projects?

The brief almost always arrives in the same words: get our indefeasible right of use agreements into a system. That sentence describes a filing project, and a filing project is what gets delivered. Six months later every agreement is scanned, tagged, dated and searchable, renewal alerts fire on time, and nobody can still tell a sales engineer which strands on the route between two markets are unencumbered.

The failure is specific to this asset class. An indefeasible right of use, usually shortened to IRU, is not a service contract with a renewal date. It is a property style interest in named physical fibres, prepaid decades ago, running twenty or thirty years, with a recurring maintenance charge and a set of rights attached to a piece of glass in the ground. What you need in a system is not the document. It is the encumbrance: this counterparty holds these strands, on this segment, from this splice point to that one, until this date, under these terms.

Scope drifts toward the document because the document is easy. It exists, it uploads, and progress is visible in a weekly demo. The encumbrance is hard, because it has to be reconciled against plant records that were never built to carry a commercial obligation, and that reconciliation is slow contested work that produces nothing worth showing for several weeks.

The fix is an acceptance test written before anyone quotes. Pick one real route. The system must return, on a single screen, the total fibre count per segment, lit usage, encumbered strands, the agreement encumbering them and the expiry. If a proposal cannot explain how that screen gets populated, it is a contract repository proposal in different clothing, and you will pay a second time for the part you actually wanted.

What goes wrong when legacy IRU agreements get abstracted?

Abstraction is the process of reading each agreement and encoding its terms as structured data. On IRU portfolios it is the single largest line in the budget, and it is the line most often priced as data entry when it is closer to legal review.

The exhibits are the reason. A 2009 agreement describes strands 25 through 36 on the segment from a named handhole to the north side of an interstate crossing. Since then the route has been spliced, a span was relocated for a road widening, a regeneration site was added and one section's fibre count changed during a cable replacement. The handhole reference may not exist in any current record. Then there are amendments that changed the strand count, an assignment that changed the counterparty, and a side letter that quietly capped the escalator.

Three failure patterns show up repeatedly:

  • The abstractor guesses at an ambiguous segment reference and nobody records that it was a guess, so a soft answer becomes hard data.
  • An exhibit that cannot be mapped to current plant is skipped, which creates an empty encumbrance, which the availability screen then reports as free capacity. This is worse than having no system at all.
  • Amendments are filed as documents but not applied to the abstracted record, so the system holds the original terms with more authority than the amended ones.

The fix is a two pass process with an explicit confidence field. Pass one encodes what is unambiguous. Anything ambiguous goes to an unresolved queue with the exact clause text attached, and someone with authority to decide, usually a network engineer and a lawyer together, works the queue. Nothing enters the availability calculation until it is resolved, and unresolved segments are shown as unknown rather than as available. Unknown is an honest answer that protects you. Available is a claim you cannot support.

Why do the fibre inventory and mapping integrations break after launch?

The encumbrance only means anything because it points at a strand and a segment in your inventory system. That pointer is the fragile part, and it usually breaks quietly some months after go live.

The mechanism is plant change. VETRO FiberMap and 3-GIS both model fibre plant properly and both are the right tools for that job, but records inside them are not frozen. Cables get replaced, segments get split at a new splice point, a route gets relocated and re-identified, and an acquired network gets loaded using a different naming convention. If your integration joins on an identifier that the inventory system treats as mutable, the encumbrance detaches from the plant and points at nothing. No error appears. The availability screen simply starts reporting more free capacity than exists.

Two design decisions prevent it. First, hold your own stable surrogate key for every encumbered segment alongside the inventory system's identifier, so a changed identifier becomes a mismatch you can detect rather than a silent orphan. Second, run a reconciliation job on a schedule that reports every encumbrance whose target no longer resolves, every segment whose fibre count changed since the encumbrance was written, and every segment where encumbered strands now exceed the total count. That report should go to a named person, not a dashboard.

Treat plant change as an event the system has to handle, not an exception. A relocation or a cable replacement should generate a task to reassign the affected encumbrances, with the reassignment recorded and dated, because a counterparty may later ask which fibres they hold and the honest answer has a history.

What happens when escalation, relocation and restoration are left out of scope?

These three get deferred to phase two more often than anything else, on the reasonable sounding argument that the encumbrance model comes first. The trouble is that they are where the money and the disputes actually sit.

The maintenance charge escalates annually by an index or a fixed percentage, sometimes with a cap. Applied by hand, it gets missed in years when the responsible person changes, applied from the wrong index month, or applied to an agreement that had a cap nobody carried forward. Over a twenty five year term that compounds, and it is invisible in the ledger because the ledger records what was invoiced rather than what was owed. Since most operators sit on both sides of IRUs, the same gap means you are also paying incoming invoices nobody checks against the agreement.

Relocation is worse because it is adversarial. A highway agency orders a move, the cost is shared between everyone on the route by a formula that differs in every agreement, and assembling the shares means reading contracts under time pressure while counterparties read theirs and dispute yours.

Restoration is worse again because it happens at two in the morning. The response time commitment, the maintenance obligation and the liability position differ per agreement, and the technician on the cable has visibility into none of it.

The fix in all three cases is the same shape. Hold the charge as a formula, with rate basis, unit count, escalation method, index source, effective month, cap and floor as structured fields, so the annual adjustment produces an invoice and a notice showing the calculation. Attach the cost sharing formula and the restoration terms to the segment through the encumbrance, so a relocation project outputs the participant list and each share, and an outage ticket surfaces the obligations that apply before anyone is dispatched.

Should you build custom or configure what you already own?

For a real share of operators reading this, the answer is configure, and we would say so before quoting.

If your actual problem is that agreements are unsigned, unfiled or scattered across three shared drives, that is a contract lifecycle problem and Agiloft or Icertis solve it properly. Clause libraries, approvals, obligation tracking and date management are mature there and rebuilding them is a waste of your money.

If your actual problem is that your plant records stop at cable level, or that an acquired network was never properly loaded, then no contract system can help you, because the encumbrance has nowhere precise to attach. Fix that first with VETRO FiberMap or 3-GIS. That is inventory work, it is what those products are built for, and the contract layer has to wait for it.

And if you hold a handful of IRUs on one route with a single counterparty, a well maintained folder and a calendar entry is genuinely enough. Spend the money on plant.

Build when the join is the problem: when your commercial team quotes availability without any system check against encumbrances, when agreements have outlived the people who negotiated them, when escalators are applied by hand or cannot be confirmed at all, or when a financing or sale is approaching and encumbrance clarity will affect what you are paid.

How do hidden costs get into the quote?

Four items account for most of the overruns we see in this category, and all four are knowable before you sign.

Abstraction volume priced as a lump. A fixed price to abstract the portfolio, quoted before anyone has read a contract, is a guess. Insist on a sample: give the developer five agreements chosen to include one clean recent one, one from an acquired network and one with amendments, and price per agreement from what that sample actually took.

Inventory readiness assumed rather than checked. If strand level records do not exist for the routes that matter, the build cannot do its job, and discovering that in week six turns into an unbudgeted inventory project. Check three routes before kickoff.

Counterparty portals slipped in as a screen. A portal means authentication, permissions, statement generation, a support path and someone answering questions from a counterparty's asset manager. It is a workstream, not a page.

Index data. Escalation formulas reference published indices, and sourcing those reliably year after year, with the right vintage and the right revision behaviour, is a small ongoing obligation that quotes routinely omit.

What separates a build that works from one that fails here?

Ask the developer to draw the encumbrance object on a whiteboard before you sign anything. The right answer references segment and strand identifiers from your inventory system, carries a term, a counterparty, a charge basis and a version history that survives plant change. If they draw a contract with an attached file, they have built a repository before and will build one again.

Ask what happens to an encumbrance when a cable is replaced. If the answer is vague, your obligations will detach from your plant and you will trust the system right up to the moment it is wrong in front of a customer.

Ask which inventory system they have integrated, by name, and what broke. 3-GIS, VETRO and an internally built spatial database are three different problems, and a developer who asks which system holds strand level truth before quoting is asking the right question.

Settle ownership of the repository, the cloud accounts and the data in the contract before kickoff. At Digital Heroes the client owns it from the first commit. Then do the free version of this project first: pick one route you believe has spare capacity and have someone read every agreement touching it. Whatever that turns up, and however long it takes, is your business case and your scope document at the same time.

Research & sources

The evidence behind this guide

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

  1. Deloitte reports that modern ERP implementations aim to deliver reduced manual effort, greater transparency, a single source of truth, and increased productivity, but many organizations do not capture the full expected benefits (a significantly lower ROI) without disciplined strategy, change management, and data readiness. Source: Deloitte (2024) →
  2. Median SaaS spend reached $9,455 per employee, and organizations leave an average of 36% of their SaaS licenses unused. Source: Zylo (2026) →
  3. WordPress powers 41.5% of all websites and holds 59.2% of the market among sites running a known content management system, making it by far the most-used CMS on the web. Source: W3Techs (2026) →
  4. Grand View Research valued the global field service management market at USD 4.43 billion in 2022 and projects it to reach USD 11.78 billion by 2030, a 13.3% CAGR, driven by growing field operations in telecom, utilities, construction and energy. Source: Grand View Research (2023) →
Amelia C. · Senior Brand Designer · UK · London

Amelia designs the visual side of the products the studio builds: identity systems, typography, colour and the rules that keep an interface looking like one thing. Her posts are for founders who need a brand that survives contact with a real product, not just a logo file.

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

FAQ

Frequently asked questions

How do we know if we need an encumbrance register or just a contract system?
Try to answer one question without opening a document: which strands on this route are free to sell, and when do the encumbered ones expire. If you can answer it from a system, you have what you need and a contract platform will cover the rest. If answering requires reading agreements, no amount of document management will help, because the missing object is the link between a clause and a specific piece of glass.
How should we price the contract abstraction work?
Never as a lump sum quoted before anyone has read a contract. Hand the developer five agreements chosen deliberately: one clean recent one, one inherited through an acquisition, one with amendments and an assignment, and two at random. Price per agreement from what that sample actually took, and expect the acquired network agreements to run several times longer than the clean ones.
What happens if an exhibit cannot be matched to our current fibre records?
It goes into an unresolved queue with the clause text attached, and the affected segment reports as unknown rather than available until an engineer and a lawyer decide together. The dangerous alternative is skipping it, because a skipped agreement creates an empty encumbrance and the availability screen then reports capacity that is already committed. Unknown protects you. Available is a claim you cannot defend.
Why do encumbrances detach from plant records after go live?
Because inventory identifiers are not permanent. Cables get replaced, segments split at new splice points, routes get relocated and re-identified, and acquired networks arrive with different naming conventions. If the integration joins on a mutable identifier the link breaks silently and free capacity appears to grow. Hold your own stable key alongside the vendor identifier and run a scheduled report of encumbrances whose target no longer resolves.
Can we defer maintenance charge escalation to a later phase?
You can, but understand what you are deferring. Escalators applied by hand get missed in the years when responsibility changes hands, applied from the wrong index month, or applied to an agreement whose cap nobody carried forward, and over a twenty five year term that compounds. Because most operators pay as well as receive under IRUs, the same gap also means incoming invoices go unchecked against the agreement that governs them.
Is Agiloft or Icertis enough for an IRU portfolio?
For document lifecycle, clause libraries, approvals and date management, yes, and there is no reason to rebuild any of that. What they cannot do is understand that a clause refers to specific physical strands whose identity changed when a cable was replaced. If your problem is unsigned and unfiled agreements, configure the platform you have. If your problem is that nobody can map a clause to a strand, no contract platform closes it.
Our plant records only go to cable level. What should we do first?
Fix the inventory before touching the contract layer, using VETRO FiberMap or 3-GIS rather than custom code. Without strand level records the encumbrance has nowhere precise to attach and the build cannot answer the question you are buying it to answer. A developer who does not raise this before quoting has not thought the sequence through and you will discover the gap in week six at your expense.
What should we ask a developer to prove they have done this before?
Ask them to draw the encumbrance object, and check that it references your inventory system's segment and strand identifiers, carries a term, a counterparty and a charge basis, and has a version history. Then ask what happens to that object when a route is relocated. A team that has shipped this will answer with a reassignment workflow and a reconciliation report. A team that has not will describe a document with metadata.
What does a $50,000 custom software budget actually buy?
One core workflow done properly: 10 to 15 screens, two or three user roles, a couple of integrations, an admin panel, and automated tests, delivered in roughly 12 to 14 weeks. What it does not buy is that workflow plus a mobile app plus AI features plus five more integrations. The discipline of picking the one workflow that matters is what separates $50,000 projects that ship from $50,000 projects that stall at 70% complete.
How do we get years of data out of our old system and into the new one?
Treat migration as a planned sub-project: a field-mapping document, at least one dry run on a copy of your data, then a cutover with the old system kept read-only for 30 days as a safety net. On Digital Heroes projects it consumes 10 to 15% of the budget when the old system has an export, and more when data must be pulled out screen by screen. Ask any vendor to walk you through their last migration before you sign.
How much should a small business budget for its first custom app or website?
For a focused first build, most small businesses land between $8,000 and $60,000: roughly $8,000 to $45,000 for a custom website and $25,000 to $60,000 for an internal tool or simple web app, based on Digital Heroes delivery across 2,000+ projects. Customer-facing products with payments, logins, or a mobile app start around $40,000. Quotes far below these bands usually mean a template with your logo on it, not software shaped around your workflow.
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.
How long does it take to build a custom web or mobile app from scratch?
Plan on 8 to 16 weeks for a focused first version and 4 to 9 months for a larger platform, which is the typical spread across Digital Heroes builds. The first 2 to 3 weeks go to discovery and design before any production code ships. The two things that stretch timelines most are integrations with legacy systems and slow feedback from your side, not developer speed.
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.
How do I calculate whether custom software will pay for itself?
Divide the build cost by the monthly benefit, where benefit is hours saved times loaded hourly cost, plus subscription fees replaced, plus any revenue the software unlocks. Three staff saving 10 hours a week each at a $40 loaded rate is about $62,000 a year, which pays back a $60,000 build in roughly 12 months. Across Digital Heroes internal-tool projects, 12 to 24 months is the normal payback range, and anything projecting under 6 months usually means the spreadsheet is hiding costs.
If an agency builds my software, who actually owns the code?
You should own everything, assigned in writing: the contract transfers full IP to you on final payment, the code lives in your GitHub organization, and hosting runs in cloud accounts you control. The red flag is a proposal that mentions the agency's proprietary platform or framework, which usually means you are renting, not buying. Digital Heroes structures every build this way precisely so a client can fire us and lose nothing but the relationship.
Couldn't I just build my app in Bubble or another no-code tool instead of hiring an agency?
For validating an idea with real users, yes, and we tell clients that honestly. The walls come later: Bubble apps cannot be exported as code to run anywhere else, performance drops on complex data operations, and usage-based pricing climbs as you grow. A meaningful share of Digital Heroes custom builds are rebuilds of no-code MVPs that proved the business worked, which is the system operating as intended: validate cheap, then build the version that scales.
Our developer disappeared mid-project. Can another team pick up the code?
Yes, this is a routine engagement, provided the code exists somewhere you can access, so your first move is securing the repository, hosting, and domain credentials today. A takeover starts with a one to two week paid code audit that ends in one of three verdicts: continue the build, keep the design but rebuild the weak parts, or start over. Digital Heroes has inherited enough projects to say plainly that sometimes the rebuild is cheaper than the rescue, and an honest agency will tell you which one you have before taking your money.
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.
Who can build a custom software system?

Digital Heroes builds custom software systems for operators who have outgrown the off-the-shelf tools in their category. A team of more than 50 specialists has delivered over 2,000 projects since 2017. Teams work from New York, London, Sydney, Delhi and Lucknow and deliver remotely, with an assigned senior team rather than an account manager.

Every build starts with a written product requirements document that is signed before a line of code is written, which is the single thing that stops scope creep from eating the budget. Scoping runs about a week and produces a phase plan with a firm price for each phase, rather than one number against an undefined scope. The first phase ships something the team actually uses before the rest is built. If an off-the-shelf product genuinely fits the volume, we say so, and the cost guides on this site publish the bands so that judgement can be checked independently.

What makes Digital Heroes different from other software companies?

Four things that competitors in this bracket cannot simply copy. Digital Heroes runs a YouTube channel with more than 2.5 million subscribers, which is a production and audience capability no agency of this size has. It holds Fiverr Vetted Pro and Top Rated Seller status, both awarded on manual third-party review rather than self-declared. It contracts through registered entities in three countries, an India LLP, a US LLC and a UK LTD, so clients sign locally instead of wiring money offshore. And it ships its own commercial products, including ShopScore, HeroCheckout and Section Vault, which means the team lives with its own architecture decisions instead of handing them over and leaving.

Two more that show up in the work. Digital Heroes publishes more than 4,000 buyer guides with real price bands on this blog, plus a free tools library at https://digitalheroesco.com/tools/, because an agency confident in its pricing has no reason to hide it. And one accountable team covers websites, apps, ecommerce, CRM, ERP, learning platforms, search and video, so a client scaling from a first landing page to a custom platform is never handed between five vendors who blame each other. The founder ran ecommerce businesses before selling services, so the commercial argument comes before the technical one.

How can I check Digital Heroes is legitimate before getting in touch?

Verify it independently rather than taking the site's word for it. The YouTube channel is at https://youtube.com/@DigitalMarketingHeroes, the Fiverr profile at https://www.fiverr.com/shreyanshsin261, and the Upwork profile at https://www.upwork.com/freelancers/shreyanshsingh. Client reviews sit on Clutch at https://clutch.co/profile/digital-heroes-0 and Trustpilot at https://www.trustpilot.com/review/digitalheroes.co.in, and the company page is at https://www.linkedin.com/company/digital-heroes-1/.

Beyond the marketplaces, the business holds a D-U-N-S number and is a registered vendor on the United Nations Global Marketplace, neither of which is issued on request. Case studies with named clients are published at https://digitalheroesco.com/case-studies/. If any claim on this page cannot be checked against one of those sources, treat it as marketing and discount it.

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?