Problems & solutions · Internal Tools

Identity Governance and Access Certification Problems: The 7 That Cost Real Money, and How to Avoid Them

Identity Governance AND Access Certification Software product interface illustration showing common problems and fixes.
The short answer

The most expensive failure in this category is the campaign that completes at 98 percent approval while the real exposure sits untouched: a developer who transferred teams in 2022 and still holds production database access, and a contractor account in an application nobody connected. You pay for it twice, once in the audit finding and the remediation programme that follows, and once in the several hundred hours a year your compliance team spends producing evidence that proves nothing. Every hour of that is spent because the reviewer was asked a question they were structurally unable to answer.

Why does the plan to connect every application collapse so often?

The kickoff deck lists forty applications and a phase plan. Twelve months later nine are connected, and the nine are the ones that already spoke SCIM. This is the most reliable failure in identity governance, and it happens because the estimate was built from a count of applications rather than an assessment of each one.

The distribution is specific to this category. A modern application with SCIM or a documented API is a few days. A database backed application where entitlements live in tables is a week or two, plus the vendor conversation to get the schema and a read only account, plus a standing obligation to retest after every vendor upgrade. A vendor hosted system with only a user interface is either a scheduled export the vendor agrees to produce, which is a commercial negotiation rather than an engineering task, or automated interaction with the interface, which is fragile and needs a named owner forever. A mainframe or terminal system usually has a report an administrator has run manually for years, and turning that into a feed is often the cheapest win in the programme.

The fix is to stop counting applications and rank them by risk, then integrate the top ten properly. A campaign over your ten most sensitive systems with real entitlement descriptions is worth more to an auditor than one over forty systems full of role codes nobody understands. Where no automated path exists, build an attested manual feed: the application owner uploads a signed extract on a schedule, the system records who provided it and when, and the feed ages visibly if it is not refreshed. A connector that silently returns stale data is worse than no connector.

What goes wrong with identity matching and entitlement data?

Two data problems sink more of these builds than any workflow decision.

The first is identity resolution. Your human resources system holds employees. Your directory holds accounts. Contractors are in neither, or in a third place. Service accounts look like people. Someone who left and returned has two employee numbers. A shared account in a clinical or trading system belongs to a rota rather than a person. Until every account resolves to an owning identity, or is explicitly classified as an orphan or a service account with a named custodian, no campaign can be trusted, because the reviewer never sees the accounts that were never linked to anybody.

The second is entitlement semantics. A connector extracts that a user holds a role called Z_MM_INV_02. Nothing extracts what that role permits, who should hold it, or whether it combines with another role to break a segregation of duties rule. That knowledge sits with application owners, and capturing it is the actual project. It is the schedule risk in nearly every build we have delivered, because it needs time from people who do not report to the programme.

Make description capture a tracked deliverable with an owner and a due date per application, not a database column somebody will fill in later. Then add last used dates. That field changes reviewer behaviour more than any other, because approving access a person has not touched in a year feels different from approving access they used yesterday.

Why do the HR feed and the application connectors break after launch?

Nothing here stays still. The human resources system gets an upgrade and the department code field changes shape. A vendor patches an application and the entitlement table gains a column. Somebody creates a new organisational unit and every account in it is suddenly unassigned. Connectors that worked on the day of go live decay quietly, and the decay is invisible, because a connector returning zero rows looks identical to an application with no changes.

The joiner, mover and leaver feed matters most because everything downstream depends on it. If a joiner arrives without a manager, their access request has no approver. If a leaver record arrives with a date format the parser did not expect, nobody is deprovisioned that day and nobody is told.

Build every collection to be observable. Record the run time, the account used, the row count and a checksum for each cycle, and show a per application freshness indicator anyone can read. Then test the failure path rather than the happy path: what happens when an application returns half its accounts, when a certificate expires on a vendor endpoint, or when a scheduled export lands empty because the vendor renamed a report. In our delivery experience the single most valuable piece of monitoring in an identity build is a daily reconciliation comparing expected record counts against received counts per source. If the answer to any failure case is that the campaign quietly runs against stale data, you have built something that produces a clean report while the estate drifts.

What happens when movers and revocation execution are not covered?

Campaigns are a periodic backstop. The continuous control is lifecycle, and movers are the weak point almost everywhere. Leavers get attention because a termination triggers an account disable. Movers accumulate: each transfer adds the new team's access and rarely removes the old, so someone who has been there eleven years and moved four times holds the union of every role they have ever needed.

Build the mover event explicitly. When the feed reports a department, manager or job code change, generate a review of that person's existing access against their new position, routed to the new manager with the old manager copied, with a deadline and an escalation. It is a smaller piece of engineering than a campaign engine and it prevents more accumulation than any quarterly review does.

The second uncovered gap is revocation. A review producing decisions nobody carries out is worse than no review, because it creates documented evidence that the organisation knew. Deprovisioning fails silently more often than teams expect: an interface returns success while the application caches the old permission, a vendor system needs a local administrator and the ticket sits, an account is disabled but a shared credential still works. The design that holds is one click to revoke, automatic deprovisioning where a write path exists, a tracked task with a named owner where it does not, and a verification step on the next collection cycle that confirms the entitlement is gone and reopens the item if it is not.

Should you build custom or configure what you already own?

Some readers should stop and configure. If your estate is essentially Microsoft, Entra ID Governance covers access reviews, lifecycle workflows and entitlement management well, because the identity data is already in the tenant and reviews become configuration rather than a project. The same holds for Okta Identity Governance in an Okta centred estate. In those situations you will run real reviews within weeks, and anyone recommending a build is selling you a project.

If you have a large but conventional estate with good connector coverage, evaluate SailPoint or Saviynt properly. Their connector libraries, campaign engines and role mining represent years of development, and rebuilding them is a poor use of money. Omada and One Identity are credible in their segments.

The build case appears when a large share of your risk sits in applications with no standard connector, when your approval hierarchy crosses legal entities or differs by business unit, when segregation of duties rules are specific to your own process design, or, most tellingly, when you have already licensed a governance product and still run the campaigns that matter in spreadsheets. That last case is common and worth naming honestly: the licence bought a campaign engine and you funded the connectors anyway. A build there is often not a replacement, it is a layer that owns the hard integrations and feeds the product you already pay for.

How do hidden costs get into the quote?

  • Connectors priced as a bundle. If a proposal quotes integration as one line rather than naming each application and its method, the estimate is a guess and the overrun is already booked.
  • Usage data treated as a checkbox. Collecting last used dates is a separate integration per application, often against a different interface from the entitlement extract, and it is the first item dropped when a programme runs late.
  • Segregation of duties policy. Defining the rules is a business exercise involving finance and internal audit. The engineering is a week. Getting agreement on which combinations are actually prohibited can take a quarter.
  • Organisational complexity. Several legal entities with different approval hierarchies and different evidence needs is a materially different build from a single company, and it is rarely priced as one.

There is a fifth cost that never appears in a quote, which is your application owners' time. Somebody has to write plain language descriptions, agree who should hold each entitlement, and confirm a revocation is safe. That work cannot be handed to a developer, and programmes that do not book it explicitly meet it as a schedule slip in month four.

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

The working ones make the reviewer's question answerable. Every entitlement in a campaign carries a plain language description from its application owner, a risk rating, whether it is privileged, any segregation of duties conflicts, and a last used date. Where it is meaningful, peer comparison appears: this person holds three entitlements none of their fourteen colleagues in the same role hold. That is an outlier a manager can act on in seconds. They also make revocation the cheap path, because if approving is one click and revoking starts an email thread, the design has chosen approval on your behalf.

The failing ones are recognisable early. They lead with a dashboard. They price connectors as a bundle. They have no answer for an application with no interface beyond a promise. They treat the joiner, mover and leaver feed as a one off integration rather than a monitored dependency. And they leave revocation as an operational concern outside scope, which is how you end up with a well documented record of decisions nobody executed.

When you choose a developer, ask them to describe integrating your three worst applications by name. Ask what happens when deprovisioning fails silently on one system. Ask how movers are handled. Then settle code and infrastructure ownership in writing before kickoff. At Digital Heroes the client owns the repository from the first commit, and a system holding the map of who can do what across your organisation should never be rented from a supplier you cannot replace.

Research & sources

The evidence behind this guide

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

  1. Technology 'Leaders' grow revenue at more than twice the rate of 'Laggards'; laggards surrendered 15% in foregone annual revenue in 2018 and stood to miss out on as much as 46% in revenue gains by 2023 if they did not change their enterprise technology approach. Based on a survey of more than 8,300 organizations across 20 industries and 20 countries. Source: Accenture (2019) →
  2. A study (led by Prof. Pak-Lok Poon, published in Frontiers of Computer Science, 2024) reviewing decades of spreadsheet-quality research found that about 94% of spreadsheets used in business decision-making contain errors, illustrating the hidden risk of manual spreadsheet workarounds that custom software is built to replace. Source: Central Queensland University / phys.org (Prof. Pak-Lok Poon et al.) (2024) →
  3. Only 22% of firms are 'future ready' having significantly transformed digitally; these companies show average revenue growth 17.3 percentage points and net margins 14.0 percentage points above their industry average. Source: MIT Center for Information Systems Research (MIT Sloan) (2022) →
  4. 88% of customers say good customer service makes them more likely to purchase from a brand again in the future, quantifying the direct revenue link between support quality and retention. Source: HubSpot (2024) →
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

Why do our managers approve every line in an access review?
Because they are asked a question they cannot answer. A row reading FIN_GL_JE_POST_ALL tells a manager nothing about what the permission does, who should hold it, or whether their report has ever used it. Reviews stop being theatre when every entitlement carries a plain language description written by its application owner, a risk rating, any segregation of duties conflicts, and a last used date. The description work is the project, not the campaign engine.
How do you integrate an application with no interface and no export?
Take the options in order of honesty. Database backed applications can be read directly with a read only account once the vendor confirms the schema. Vendor hosted systems can often produce a scheduled export if you ask commercially rather than technically. Mainframe and terminal systems usually have a report an administrator already runs by hand. Where nothing automated exists, build an attested manual feed where the owner uploads a signed extract on a schedule and the feed visibly ages if it is not refreshed.
What usually breaks first after go live?
The joiner, mover and leaver feed, and it breaks silently. A field changes shape after a human resources upgrade, a date format shifts, a new organisational unit appears and its accounts arrive unassigned. Nothing errors, the collection just returns different data. Build a daily reconciliation that compares expected record counts against received counts per source and alerts when the delta leaves a normal band, then show a freshness indicator per application that anyone can read.
How do we know a revoked entitlement was actually removed?
Verify it on the next collection cycle rather than trusting the response. Deprovisioning fails quietly in several ways: an interface returns success while the application caches the old permission, a vendor system needs a local administrator and the ticket sits, or an account is disabled while a shared credential still works. Close the loop by re-reading the entitlement after the next extract and reopening the item automatically if it is still present, with the owner named.
How should orphan accounts and shared accounts be handled?
Classify them rather than hiding them. Every account should resolve to an owning identity, or be explicitly marked as an orphan pending investigation, or as a service or shared account with a named human custodian who certifies it. Shared accounts in clinical, trading and control room systems are real and will not disappear, so the control is a custodian, a documented reason, and a rota record showing who used the credential when. Orphans should be detected continuously, not discovered during an annual review.
Our estate is mostly Microsoft. Is there anything worth building?
Usually not a governance platform, and we would tell you that directly. Entra ID Governance handles access reviews, lifecycle workflows and entitlement management well when the identity data already sits in the tenant. The question worth revisiting is whether a specific regulated application sits outside the tenant and carries a disproportionate share of your risk, or whether an acquisition has brought a legacy estate with it. In that case build the integration layer for those systems and keep the reviews where they are.
Why do segregation of duties rules take so much longer than expected?
Because writing them is a business decision, not an engineering one. Encoding a rule takes an afternoon. Getting finance, internal audit and the process owners to agree which combinations of entitlements are genuinely prohibited, and which are tolerated with a compensating control, routinely takes a quarter. Start with the small number of conflicts your external auditor already asks about, ship those, and let the rest follow once the pattern is proven.
How long before we can run a campaign that would survive an audit?
Plan on a first credible campaign covering your highest risk applications in the same window as the first release, with the caveat that the timeline depends on application owners engaging with the description work rather than on engineering. That engagement is the schedule risk. Ten sensitive systems with understandable entitlements, usage data and a working revocation path is a far stronger position than forty systems of role codes, and it is the version an auditor can actually rely on.
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 does an internal tool cost for a small business with 20 to 50 employees?
Plan on $5,000 to $15,000 for a focused tool that replaces one painful spreadsheet workflow, such as job scheduling, quoting, or PTO tracking. In Digital Heroes projects at this size, the sweet spot is one core workflow, two or three user roles, and a single integration, usually QuickBooks or Google Workspace. Quotes far below $5,000 usually mean a template with your logo on it rather than software built around your process.
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.
What questions should I ask a development agency on the first call?
Ask who exactly will build it, what happens when scope changes mid-project, what their maintenance terms are after launch, and what they will need from you every week. Then ask them to describe a project that went wrong and what they changed afterward; teams that have shipped at real volume have war stories, and teams claiming a perfect record are hiding something. The scope-change answer matters most: a disciplined shop describes a written change-order process, not a vague promise to be flexible.
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.
Is a freelancer or an agency better for building an internal tool?
A solid freelancer works for a single-workflow tool under roughly $10,000, if you accept that one person holds all the knowledge. An agency earns its premium once the tool spans departments or integrations, because you get a developer, a designer, and a project manager plus continuity when someone leaves or gets sick. The hidden freelancer cost appears 18 months later when you need changes and the original builder has moved on, a rescue situation Digital Heroes is hired for regularly.
Is a custom internal tool secure enough for HR records and financial data?
A properly built custom tool is generally safer for sensitive data than the shared spreadsheet it replaces, because you get role-based access, audit logs, encrypted storage, and the ability to cut one person's access instantly. Ask the agency specifically for encryption in transit and at rest, permissions down to the field level, and an audit trail showing who viewed or changed each record. If HIPAA, GDPR, or SOC 2 expectations from enterprise clients apply to you, raise it before the quote, because compliance features add real scope.
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.
Can we migrate years of data out of our current system into new custom software?
Almost always yes, through CSV exports or the vendor's API, and migration should be scoped as its own workstream with field mapping, a dry run, and a planned cutover window rather than an afterthought. The real time sink is rarely moving the data; it is cleaning it, since years of duplicates, free-text fields, and inconsistent formats surface all at once. Pull a full export from your current vendor before committing to anything new, because some SaaS plans restrict exports on lower tiers.
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.
Can custom software connect to the tools we already use, like QuickBooks, Stripe, and Google Workspace?
Yes, and connecting your existing tools is one of the main reasons to build custom: mainstream platforms like QuickBooks, Stripe, Shopify, and Google Workspace all publish documented APIs. Budget 1 to 3 weeks of work per integration depending on API quality and how much data flows in both directions. Ask any vendor whether they have integrated with your specific tools before, because quirks like QuickBooks' OAuth token handling and API rate limits get learned on someone's project, and it should not be yours.
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.
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?