eSIM Lifecycle Management Software Problems: The 5 That Cost Real Money, and How to Avoid Them
The most expensive failure in eSIM software is collapsing profile state into an activated flag on the subscription. The business support system then believes the line is live, billing starts, the welcome campaign fires, and the customer is holding a phone that cannot make calls on a Saturday. On Monday an agent opens their tooling, sees a subscriber, a plan and a number, and has no way to tell whether the profile was released, downloaded to the wrong device, or spent on a retry limit. Every one of those tickets escalates to the two engineers with portal access, and in device manufacturing the same failure is a product that never onboarded and a return that costs far more than the connectivity ever earned.
Why does profile state get scoped as a boolean?
Because that is the shape the rest of the stack already uses. Subscriptions are active or not, lines are provisioned or not, and a developer inheriting that vocabulary models the profile the same way. It is a reasonable first instinct and it is the biggest scope failure in this category, because a profile is a state machine with transitions that are not all reversible.
Under the consumer architecture a profile moves through released for download, downloaded, installed, enabled, disabled and deleted, and those transitions can be initiated by the operator, by the device or by the user. A profile already downloaded to an embedded identifier cannot simply be handed to a different device. A deleted profile is gone, and reissuing means drawing a new one from inventory. None of that survives a single flag, so the truth ends up in a vendor portal and everything downstream inherits a lie.
The fix is to mirror the state machine locally as a first class object, keyed on the integrated circuit card identifier and the embedded identifier, updated from the platform's result notifications, with every transition timestamped and attributed to whoever caused it. That local mirror is what makes support possible, and it is also what makes safe automation possible, because an automated recovery can check the real state instead of guessing. Ask a developer to explain what happens when a profile downloads to the wrong device. Someone who has done this answers immediately and then explains why release and reissue is not always available.
What goes wrong when you reconcile inventory against the provisioning platform?
Reconciliation is where most teams discover how much they do not know. Physical stock sits in a warehouse system or a spreadsheet as ranges by batch. Embedded profile inventory sits with the provisioning platform as pools awaiting release. Activation state sits in the business support system. Nobody can answer how many usable profiles exist for the market about to run a promotion, or how many activation codes were issued in the last thirty days and never consumed.
That unconsumed pool is real money and a real exposure. Codes issued and abandoned hold profiles that cannot be reused until somebody reclaims them, reclamation is usually manual because nobody built the sweep, and a code sitting in an inbox for six months is effectively a credential.
Build one inventory model spanning physical and embedded, with an expiry policy on issued codes, an automated reclaim that returns abandoned profiles to the pool, and stock alerting per market and per profile type. Then reconcile continuously rather than at migration: compare your local mirror against the platform on a schedule and treat any divergence as an incident rather than a report. Divergence is normal in production, and a system that only reconciles once during a migration will drift back out within weeks. Expect the first reconciliation to surface profiles in states nobody believed existed, and budget time to resolve them rather than treating it as a data cleanup task somebody will do later.
Why do provisioning notifications and device rules break after launch?
Result notifications are the mechanism keeping your mirror honest, and in production they get missed. Networks drop them, your endpoint is briefly unavailable during a deployment, a vendor retries on a schedule you did not read. A build that assumes every notification arrives will drift out of sync inside a few weeks, and the drift is silent because nothing errors. Poll for state on a schedule as well as listening, treat the platform as authoritative when they disagree, and log the correction so the pattern is visible. Ask any prospective developer specifically how they handled a missed notification, because the answer separates people who have run this from people who have read the specification.
Device rules break every autumn. A new device generation lands with different behaviour around multiple installed profiles, in app transfer paths, carrier bundle handling and how a failed download is presented. Operators usually discover this through support tickets rather than data, because nothing recorded the device model and operating system version at the moment a download failed, so a real failure cluster looks like noise across thousands of tickets.
Capture device model, operating system version and embedded identifier with every download attempt and every failure, and make eligibility a data driven rule rather than a branch in code. When a device family behaves differently you change a rule and ship it in a day rather than waiting for an application release. Teams that do this find the cluster within a week and can route affected customers to a working path while the fix lands.
What happens when recovery and transfer journeys are not covered?
Vendor platforms expose primitives. They release profiles, they report state, they do it securely. What they do not know is that your prepaid activation requires an identity check before release in one market and not another, or that your postpaid upgrade should keep the old profile enabled until the new one is confirmed working, or that your care team is measured on first contact resolution. The gap between a primitive and a journey is exactly where customers get stranded.
Device to device transfer is the sharpest example. The unsafe design releases first and hopes. The safe one keeps the existing profile enabled until the new download is confirmed installed, which requires knowing the real state on both devices before acting, which requires the local mirror. Without it you are choosing between a customer with two working profiles and a customer with none, and support cannot tell you which happened.
Recovery needs an authorised path an ordinary agent can execute. Today the loop is usually escalate, find someone with portal access, release manually, issue a new code, ask the customer to try again, and it takes hours or days. Design the care screen deliberately: what state is shown, who is permitted to release a profile, what preconditions are checked, and what gets logged when they do. If a developer describes the care screen without mentioning permissions and logging, they have not run this in production. That screen is also the cheapest part of the build and removes most of the escalations, which is why it should ship first.
Should you build custom or configure what you already own?
Do not build a provisioning platform. That is a security accreditation and key management decision rather than a cost one, and Thales, IDEMIA, Giesecke and Devrient, Kigen and Workz already carry it. Keep buying that layer and do not let anyone talk you into replicating it.
Before commissioning the layer above it, check what your existing tooling can already do. Vendor portals often expose more than the two people with access have configured, and business support systems frequently have unused fields and workflow that could carry a subset of profile state. If you are a small operator with one market, one platform, low volume and an engineering team that can absorb an occasional manual release without it hurting, the manual path is genuinely cheaper than a build and you should stay there.
Build the orchestration layer when two or more hold. Your care team escalates profile issues to engineering more than a handful of times a week. You ship devices where a failed onboarding causes a return. You operate in more than one market with different activation preconditions. You are moving to an embedded first retail journey and it is being designed now. Or you cannot report how many issued activation codes are outstanding, which means you have an inventory leak you cannot size.
How do hidden costs get into the quote?
Vendor count is the first. A quote priced against one provisioning platform and delivered against two is not a small extension, because interfaces and notification behaviour differ in practice even where the specification is shared. Design the abstraction at the level of your own state machine with vendor specific adapters underneath, even if you start with one, because retrofitting a second vendor into a single vendor design usually means touching the whole provisioning path.
Market count is the second. Identity verification requirements and profile release preconditions vary by country, and each variation is a rule with a test case rather than a configuration toggle.
Vendor access is the third and it is a schedule cost rather than a line item. Test credentials and a sandbox run on your vendor's calendar, not yours, so start the request on day one. Fourth is device coverage, because you need real handsets across the models you support and a way to test each autumn. Fifth is retail store activation, which has different authentication and different failure handling from an app journey and is often assumed to be the same flow. Sixth is building consumer and fleet provisioning together, which is two journeys rather than one and is the most expensive assumption in the category.
What separates a build that works from one that fails here?
The ones that work ship the local state mirror and the care console first, and nothing else. That is the cheapest part, it removes most escalations immediately, and it buys the time to do retries, recovery, transfer and inventory properly. The ones that fail attempt transfer journeys, retail activation and fleet provisioning in one release and spend a year while agents still telephone engineering.
Decide which product you are building for before the first sprint. Consumer provisioning is user initiated, assumes somebody can scan a code or tap a button, and can rely on retries with a human present. Fleet provisioning is orchestration driven, runs with no human in the loop, and must assume a device in the field cannot ask for help, which is why the industry published a separate specification for it. The state machines overlap and the trigger models do not. If the answer is genuinely both, scope them as two journeys over one inventory model rather than one flow with conditions.
Interview on vocabulary. Ask a developer to explain the difference between the embedded identifier and the card identifier and what happens when a profile lands on the wrong one. Someone who talks about scan codes has not built this.
Settle ownership before kickoff: the repository, the cloud accounts, the device eligibility data and the right to hire another firm. At Digital Heroes the client keeps all of it from the first commit. This layer sits between your business support system and a vendor you already depend on, and you do not want a third dependency in the middle of that relationship.
The evidence behind this guide
Independent findings on why this investment pays off. Every link goes to the primary source.
- McKinsey found that tech debt can amount to 20-40% of the value of a company's entire technology estate before depreciation, and CIOs report that 10-20% of the budget for new products is diverted to resolving tech-debt issues. Source: McKinsey & Company (2020) →
- Retailers improving Core Web Vitals saw measurable gains: Vodafone improved LCP by 31% for 8% more sales, Lazada saw a 16.9% mobile conversion increase, and Cdiscount saw a 6% Black Friday revenue uplift. Source: web.dev (Google Chrome team) (2021) →
- Digital Champions expect to achieve about 16% in cost savings and around 15% in revenue gains from digital operations over five years; the study surveyed 1,155 manufacturing executives across 26 countries. Source: PwC / Strategy& (2018) →
- An earlier SHRM benchmarking report (reflecting fiscal year 2015, published 2016) established a widely cited baseline average cost-per-hire of $4,129, illustrating how recruiting costs have climbed over time (SHRM's separate 2025 Benchmarking Report shows $5,475 for nonexecutive roles). Note: the $5,475 figure is not on this linked page; it comes from SHRM's 2025 report. Source: SHRM (Society for Human Resource Management) (2016) →
Deepti manages client software projects with a bias toward writing things down. Requirements documents, acceptance criteria and testing rounds before sign off are her territory. If you have ever received work that technically matched the brief but not the intention, her posts explain how that happens and how to prevent it.
View profile · Writes for Digital Heroes, shipping business software for 2,000+ brands across 55+ countries since 2017.
Frequently asked questions
Why can support never tell a customer why an eSIM download failed?
How do we keep our local state in step when notifications go missing?
What is the safe way to move a profile to a new phone?
How should we handle activation codes that were issued and never used?
Should we support more than one provisioning platform from the start?
Can one flow serve both consumer and fleet provisioning?
What should the care agent screen actually show?
We are a small operator with one market. Is a build justified?
What should I prepare before contacting a software development agency?
Is a solo freelancer enough for my project, or do I really need an agency?
How much should a small business budget for its first custom app or website?
How many people should be working on my software project?
Does the tech stack matter, and which one should I ask for?
What should I have ready before I contact a development agency?
Should I hire a freelancer or an agency for my software project?
How do I work out whether custom software will pay for itself?
What is a discovery phase, and is it worth paying for separately?
What is the biggest mistake first-time software buyers make?
How do we get years of data out of our old system and into the new one?
Who owns the code when an agency builds my software?
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.