Problems & solutions · Internal Tools

Number Porting Software Problems: The 5 That Take Customer Phone Lines Down, and How to Avoid Them

Number Portability Management Software product interface illustration showing common problems and fixes.
The short answer

The most expensive failure mode in this category is a port rejection that nobody reads. The losing carrier bounces the request for a suite number missing from the service address, the rejection lands in a shared mailbox, the submitted date passes, and the first person to notice is a business customer whose phones are dead at 8am on cutover day. In Digital Heroes delivery experience that single pattern is behind most of the porting escalations operators describe, and the cost is not the engineering time to fix it, it is the account: a twelve line business that loses a morning of calls usually leaves within the year, and your contract may carry service credits on top.

Why does the scope of a porting build get set too small so often?

The brief almost always arrives as a request to track port-ins. That is where the revenue is, it is the half the provisioning team complains about loudest, and it sounds like a small system. So the project gets scoped as a tracker: a request record, a status field, a due date, a list screen. Twelve weeks later it ships and nothing measurable changes, because the tracker is still fed by the same person reading the same mailbox, and it still cannot answer the only question that matters, which is which ports are at risk today.

The reason this scoping failure is specific to porting is that a port request is not a task with a status. It is a state machine that spans two commercially opposed companies and communicates through forms and email: drafted, submitted, acknowledged, rejected with a reason, resubmitted, firm order commitment received with a date and time, activated, cancelled. Rejection is not an end state. It is the most common state in the whole lifecycle, and a build that models it as a failure flag rather than as a normal step in a loop gets abandoned inside two quarters.

The fix costs nothing at the right moment. Insist the full state machine, including resubmission after rejection, is drawn and agreed before anyone writes code, and that the work queue is driven by state plus elapsed time rather than by a human scanning a list. A request past its expected response, a rejection older than four hours, an FOC dated tomorrow with no provisioning task raised: those three queries are the product. Everything else is furniture.

What goes wrong when the DID spreadsheet becomes a real inventory?

Number inventory migration looks trivial and is the step most likely to poison the build. The spreadsheet has a column of numbers and a column that says assigned or free, so the obvious move is to import it as two fields and get on with the interesting work. That import bakes in a model that cannot express the states your operation actually runs: reserved for an enterprise account still in negotiation, held for a customer who has not signed, disconnected and inside an aging window before it can be reissued, ported away but still billed to you by the upstream provider.

The consequences arrive within weeks. Two accounts get promised the same DID because a reservation had no expiry. A number gets reissued too quickly and the new customer inherits the previous owner's inbound traffic, which in the United States also creates reassigned number exposure the moment those DIDs carry outbound campaigns. And a tail of orphaned numbers keeps generating upstream fees with no customer attached, spread thinly across invoices where finance never queries it.

The fix is to model inventory states before migration, not after, and to treat the spreadsheet as a source to be reconciled rather than a schema to be copied. Reservations get expiry dates. Aging windows are enforced by the system rather than by convention. Then reconcile against upstream provider billing in the first month, because the dormant spend that surfaces is usually the first hard number the project produces.

Why do the switch and upstream provider integrations break after launch?

Porting software that does not reach into provisioning is a tracking spreadsheet with a login screen, so every serious build integrates. The breakage happens because the integrations are quoted as one line item when they are three unrelated problems. A BroadSoft lineage platform, a class 4 softswitch and a cloud provider API have nothing in common beyond the word integration, and each carries its own authentication model, its own rate limits and its own idea of what an activation event is.

The second source of breakage is the counterparty side. Where a carrier or aggregator offers a real interface, the connection holds. Where they do not, and several do not, the build ends up parsing rejection emails and driving a portal, and both of those change without notice. A carrier alters a rejection template, the parser stops producing a reason code, and rejections silently pile up in an unrouted queue while everyone assumes the system is working because nothing has errored.

The fix is to design for failure rather than the happy path. Every counterparty adapter needs a heartbeat that alerts when it stops producing its normal volume of events, not only when it throws an error. Unparseable messages go to a human queue with the raw text attached rather than being dropped. And per-counterparty rules belong in configuration rather than code, because the knowledge that one carrier wants a copy of the bill and another rejects anything where the authorised contact does not match the customer service record will change several times a year.

What happens when port-out and emergency location records are not covered?

Almost every build defers port-out, and the reasoning is understandable: port-in is revenue, port-out is departure. The result is that a competing carrier's request lands, your team processes it correctly and quietly, and the account manager finds out after the firm order commitment has been issued and the customer has already signed elsewhere. The one window where a conversation could have changed the outcome closed while the workflow was doing its job.

There is a compliance dimension as well. You are expected to validate port-out requests and to apply the same authorisation criteria consistently. Inconsistent rejection is precisely the behaviour that produces regulatory complaints, and inconsistency is guaranteed when the check lives in three people's judgement rather than in a rule.

The second uncovered gap is the emergency location record on a number that has just moved. A port that completes while carrying a stale dispatchable location is worse than an outage, because a dead phone gets reported in four minutes and a wrong address gets discovered once, in the worst circumstances. The fix for both is the same shape: make port-out a first class flow that alerts the account owner on arrival and validates from a rule set, and have the provisioning task list derived from the FOC block activation until the location record for that number passes. If seats are not built or the address is missing, the system should say so the day before.

Should you build custom or configure what you already own?

If you port fewer than roughly twenty numbers a month through a single upstream provider, and your provisioning team is two people who talk to each other daily, do not build anything. Use your provider's portal properly, keep one clean inventory spreadsheet with reservation dates in it, and spend the money on sales. A custom system at that volume is overhead with a maintenance bill attached.

It also helps to be clear about what the named platforms in this space do, because they are frequently proposed as alternatives and they are not. iconectiv administers the number portability administration centre in the United States, which is the authoritative routing database that makes portability work at all. That is infrastructure. It tells the network where a number lives and knows nothing about why your request bounced. NetNumber operates in adjacent number data and registry services. TransNexus is strong on call authentication and analytics and belongs in a voice operator's stack, but it is not a port order management system. None of them is a substitute for the workflow layer, and none of them claims to be.

The build case starts when you port over roughly a hundred numbers a month, or when you deal with more than one upstream provider, or when your customers are businesses whose main line goes dead when a port fails. If you can already produce an at-risk port list without a person reading a mailbox, you do not need this. If you cannot, that gap is the entire project.

How do hidden costs get into the quote?

The stated range for a working port orchestration and DID inventory system is $65,000 to $150,000 across 10 to 16 weeks, covering inventory with reservation and aging, port-in and port-out lifecycle, rejection handling, FOC tracking, provisioning hooks and an audit trail. The wider platform with multi-country porting rules, toll-free responsible organisation handling, automated request generation per counterparty and customer-facing status runs $180,000 to $400,000 over 6 to 11 months. Quotes go wrong between those two bands, and they go wrong in four predictable places.

Counterparty count is the first. Each carrier or aggregator you deal with directly is a different form, a different response format and a different set of unwritten rules, so a quote written against two counterparties does not scale linearly to seven. Multi-country is the second, because porting timers and regulation differ by jurisdiction and there is no shared model to extend. Toll-free is the third, since responsible organisation mechanics are their own discipline rather than a variation on wireline porting. Switch integration is the fourth, and it is usually quoted as one item when it is one item per platform.

The way to control this is to force the estimate to name things. Which counterparties. Which softswitch, by product and version. Which upstream provider interfaces, and whether the vendor has used them before. A quote describing integration as a capability rather than as a list will be revised.

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

Sequencing, mostly. The builds that work start with inventory, because inventory is the foundation every other object attaches to and it is the cheapest piece to get right. Then port-in against a single upstream provider, then port-out, then additional counterparties. The builds that fail start with a multi-carrier abstraction layer designed before anyone has watched a single rejection get resolved.

The second differentiator is whether the unwritten rules got written down. Your provisioning team knows which carrier rejects what and why, and that knowledge is the actual asset. Budget two weeks of someone sitting with them and treat the rule catalogue as a deliverable. Operations that already keep a rejection log move noticeably faster than ones relying on memory.

Third, insist on an append-only history. When a port goes wrong and a customer threatens to leave, the difference between issuing a credit and defending a claim is a dated record of who did what and when. A status field that gets overwritten cannot produce that.

Finally, settle ownership before kickoff: the repository, the cloud accounts, the counterparty mappings and the right to bring in another firm. At Digital Heroes the client owns all of it from the first commit. This system holds your carrier-specific operational knowledge and your audit trail for a regulated process, and neither belongs somewhere you cannot reach.

Research & sources

The evidence behind this guide

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

  1. The federal government spends about 80% of its IT budget on operations and maintenance of existing systems rather than on development or modernization, with many critical systems being decades old. Source: U.S. Government Accountability Office (GAO) (2025) →
  2. Per the Standish Group CHAOS 2020 report (reviewed at this URL), across tens of thousands of software projects roughly 31% end successfully, about 50% are 'challenged', and roughly 19% fail outright; small projects succeed far more often than large ones, and Agile approaches succeed at markedly higher rates than Waterfall. Source: The Standish Group (2020) →
  3. In an RCT, the no-show rate was 23.5% for patients receiving a text-message reminder versus 38.1% for the control group - a 14.6 percentage-point reduction (p = 0.04). Source: Clinical Pediatrics / PubMed Central (Lin et al.) (2016) →
  4. 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) →
Theo C. · Senior Brand Strategist · New York

Before anything gets designed, someone has to decide what the company is claiming and who it is claiming it to. That is Theo's work: positioning, messaging hierarchy and the language a business uses about itself. Readers get a practical account of how brand decisions later constrain product and site design.

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

FAQ

Frequently asked questions

Our ports keep getting rejected for address mismatches. Is that a software problem or a process problem?

It is a data validation problem that software solves cheaply. Rejections cluster around mismatches against the customer service record: a suite number missing from the service address, an account number or personal identification number keyed wrong, an authorised contact who has left the business. The fix is per-counterparty validation that runs before submission rather than a generic form, so the request is checked against that specific carrier's known rules while the customer is still on the phone and can confirm the detail.

How do we stop two customers being promised the same DID?

Give reservations an expiry and make assignment a transaction against inventory state rather than an edit to a cell. Double allocation happens because a spreadsheet models numbers as free or assigned, with no state for held, reserved, aging or ported away but still billed. Once reservations expire automatically and assignment checks state at the moment of the write, the failure disappears. It is one of the cheapest fixes in the whole build and it is usually deferred because it sounds like housekeeping.

We built a port tracker last year and nobody uses it. What went wrong?

Almost certainly it was built as a list with a status field rather than as a work queue driven by state and elapsed time. If a person still has to read the mailbox to know what needs attention, the tracker is extra typing. The rebuild that succeeds usually keeps the data model and replaces the interface with three queries: requests past expected response, rejections older than a threshold, and firm order commitments due tomorrow with no provisioning task raised.

Do we need to integrate with the switch, or is tracking enough?

Tracking alone leaves the highest-risk moment uncovered. When the firm order commitment date arrives, several things have to happen close together: routing, seats, device registration and the emergency location record on the number that just moved. If the system cannot derive those tasks and block activation until preconditions pass, cutover stays a fire drill. Scope switch integration as its own item per platform, because a class 4 softswitch and a hosted platform are separate pieces of work.

What does it cost to add a second upstream provider after launch?

Less than the first if the build treated counterparty rules as configuration, and considerably more if they were coded into the submission path. That single architectural decision is worth asking about before signing, because most operators add a provider within two years. Ask any developer to show where a new counterparty's form layout, required attachments and rejection reason mapping would live, and whether adding one requires a release.

How do we handle rejection emails from carriers that have no interface?

Parse them into reason codes, route them by class of problem, and never drop what you cannot parse. The failure mode to design against is silent: a carrier changes a template, the parser stops matching, and rejections accumulate in an unrouted state while the dashboard looks healthy. Add a volume heartbeat that alerts when an adapter produces materially fewer events than normal, and send unparseable messages to a human queue with the raw text attached.

Can this tell us how much we are paying for numbers nobody uses?

Yes, and it is normally the first hard financial number the project produces. The reconciliation compares upstream provider billing against your own inventory assignments and lists DIDs billed to you with no active customer attached. Most operators running a spreadsheet inventory carry some dormant spend that has been invisible because it is spread thinly across several invoices rather than concentrated anywhere finance would notice.

Should port-out alerts go to the account manager or to provisioning?

Both, immediately, and for different reasons. Provisioning needs to apply authorisation validation consistently, because inconsistent port-out rejection is what generates regulatory complaints. The account owner needs to know while a commercial conversation is still possible, which means at request arrival rather than after the firm order commitment is issued. Treating port-out purely as a workflow to be executed quietly is how operators discover churn a week too late.

Who owns the code when an agency builds our internal tool?
You should, outright, with full IP transfer in the contract and the code delivered to a repository you control, such as your own GitHub organization. Digital Heroes transfers complete ownership on final payment as standard practice, and any agency that keeps the code or licenses it back to you is building a dependency you will pay for later. Confirm you also own the hosting, domain, and database accounts, since many of the vendor disputes Digital Heroes gets called into involve infrastructure registered under the agency's name.
How do I know when spreadsheets are no longer enough to run my operations?
Replace the spreadsheet once more than three people edit it, versions travel by email, or a single broken formula could cost real money. Other reliable signals: staff keep personal shadow copies, month-end reporting takes days of manual assembly, and nobody can say who changed a number or why. In Digital Heroes discovery calls the tipping point is almost always a specific expensive error, a mispriced quote, a missed order, or payroll built on a tab someone sorted wrong.
How long does it take to build an internal tool from scratch?
A working first version typically ships in 4 to 8 weeks, and larger multi-module tools run 10 to 16 weeks. Across Digital Heroes internal tool projects the schedule splits into roughly one week of process mapping, 3 to 6 weeks of build, and 1 to 2 weeks of testing with your actual staff. The most common delay is not development but waiting on the client for sample data and workflow decisions, so name one internal owner before kickoff.
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.
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.
Does it matter which tech stack the agency wants to use?
Yes, but not in the way most buyers expect: the goal is boring, popular technology such as React, Node.js or Python, and PostgreSQL, because any future team can maintain it and hiring a replacement developer takes days, not months. The red flag is an agency-proprietary framework or an unusual language, which welds you to that one vendor no matter what your contract says about code ownership. A useful test: could you find three freelancers fluent in this stack within a week? If not, push back.
What happens to my software if the agency shuts down or we stop working together?
Nothing dramatic, if the engagement was set up correctly: the code sits in your repository, hosting runs on your cloud account, and a handover document explains how to deploy and operate the system. Any competent replacement team can then take over in days rather than months. If the agency controls the repo, the servers, or the domain, fix that now, because renegotiating access during a dispute is the most expensive place to discover the problem.
What does it cost to keep custom software running after launch?
Budget 15-20% of the original build cost per year, which on a $100,000 system means $15,000 to $20,000 for security patches, dependency updates, bug fixes, and small improvements as real usage reveals what the spec missed. Cloud hosting for a typical business application adds $50 to $300 a month on top. Skipping maintenance does not save the money; in Digital Heroes rescue work, unmaintained systems typically need a far more expensive rebuild within about three years.
How much does a custom internal tool cost to build?
Most custom internal tools cost $8,000 to $40,000 to build, based on Digital Heroes delivery data across 2,000+ client projects. A single-purpose tool like an approval dashboard or inventory tracker sits at the low end, while a multi-department platform with role-based access and several integrations pushes past $40,000. The three biggest cost drivers are the number of user roles, the number of systems the tool must connect to, and custom reporting requirements.
Should we build the whole internal tool at once or start with an MVP?
Start with a version that fully replaces one workflow, ship it in 4 to 6 weeks, and let real usage set the roadmap. Internal tools have a captive audience, so you learn within days which features matter, and across Digital Heroes projects roughly a third of initially requested features never get built once staff work with version one. Phasing also spreads the spend: a $40,000 vision becomes a $15,000 phase one that starts paying for itself while phase two is scoped.
How many people should be working on my software project?
Three to five for a typical focused build: a project lead, one or two engineers, a designer, and part-time QA, which is the standard shape across 2,000+ Digital Heroes projects. Larger platforms justify 6 to 10, but a ten-person team on a small first version usually signals bill padding rather than horsepower. What predicts success is whether a senior engineer is writing your code daily, not the headcount on the proposal.
Will a custom internal tool scale as our company grows?
Yes, provided it sits on a standard stack with a real database: PostgreSQL comfortably handles millions of records, and adding users costs hosting pennies rather than per-seat fees. The real scaling risks are organizational, not technical: new departments want features, processes change, and the tool needs a budget line to evolve. Set aside a small quarterly improvement budget instead of treating launch as the finish line, and the tool stays useful for a decade rather than getting rebuilt every two years.
Who can build a custom internal tools system?

Digital Heroes builds custom internal tools 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 internal tools 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?