Problems & solutions · Inventory Management

Software License Compliance Problems: The 7 That Surface in an Audit, and How to Avoid Them

Software License Compliance Software workflow illustration showing common problems and fixes.
The short answer

The most expensive failure mode is an infrastructure change that was also a licensing decision, made by somebody who did not know that. Adding hosts to a cluster, enabling live migration or moving a workload into a shared resource pool can multiply what a vendor claims you owe, and none of those changes goes through a review that computes the effect. You find out when an audit letter references an agreement from 2011 and asks for deployment data in thirty days, at which point you cannot produce a defensible entitlement position, so the vendor's number becomes the starting point for a negotiation you have already lost. A change request that returns a licensing impact alongside a capacity impact prevents more exposure than any amount of monthly reporting.

Why does the compliance project become a discovery tool rebuild?

The common scope failure is spending the budget on the half you already have. Discovery is tangible: an inventory of installations by host, produced in a day, and easy to demonstrate. So the project gets written as better discovery, or as replacing the discovery platform, and the entitlement side gets a line item at the end that never gets built.

The reason is that discovery answers a question people can picture, which is what is installed. Entitlement answers what is permitted, and that lives in contractual prose across twenty years of agreements, ordering documents, amendments and true ups. Nobody can picture it, so nobody scopes it, and the compliance position stays as the difference between a number you have and a number nobody has computed.

The fix is to keep the commercial tool for discovery and normalisation and put the budget into entitlement and calculation. Flexera and Snow carry product recognition and normalisation libraries representing years of unglamorous catalogue work with no competitive value to you, so rebuilding that is money burned. Structure entitlements for your three to five highest risk agreements, build the calculation for the metrics those agreements actually use, and make the position reproducible at a point in time. That is a materially smaller project than a platform, and it is the part carrying the exposure.

What goes wrong when you turn twenty years of contracts into entitlement records?

This is the highest value work in the category and the place projects stall, because the source material is worse than anyone remembers. Master agreements sit in a contract system while the ordering documents holding the actual quantities are attachments in a shared drive, a procurement mailbox and sometimes a former colleague's archived account.

Four failures recur. Quantities appear on ordering documents without the metric, because the metric was defined in a product use rights document that was current at the time and has since been revised several times, so the number alone is meaningless. Amendments and true ups modify quantities without restating them, so the current entitlement is a sum across documents rather than a value you can read anywhere. Migration and upgrade rights carry entitlement forward from products you no longer run, and those rights are frequently the difference between compliant and exposed. And a meaningful proportion of the older documents exist only as scanned images.

The approach that works is two passes with a human in the second. Automated document extraction produces draft records with products, quantities, metrics and dates, then somebody with licensing knowledge confirms every one against the source page, and every record keeps a link back to that page so it can be verified later. Reject any proposal offering a fully automated pipeline. A wrong entitlement nobody checked is worse than no entitlement record, because it produces a position you will act on with false confidence, and wrong in your favour is the dangerous direction since you will never go looking for it.

Why do discovery and infrastructure integrations break after launch?

They break because a licensable unit is not an installation, and the data needed to bridge them comes from systems that change without telling you. Licensing counts physical cores with a vendor core factor applied, named users with minimums per processor, concurrent sessions, devices, employees including contractors, or processor value units. Translating from installations to any of those needs physical socket and core counts underneath a virtual machine, whether hyperthreading is enabled, cluster membership, and which environments are development or test and therefore covered by different rights.

The specific break is silent incompleteness. A new cluster is built and is not in the configuration management database. A host is added to a resource pool and nothing in the licensing view notices. An agent stops reporting on forty servers and the position quietly improves, which is the worst possible failure because it looks like good news.

Two fixes. Where the underlying physical data is unavailable, the correct behaviour is to raise an exception rather than to assume a value, and that exception list should be a first class output because unknown hosts are exactly where audit findings come from. And reconcile the host population against your virtualisation platform and directory on a schedule, alarming on coverage drops rather than on position changes. A compliance figure that improved because data disappeared is the number most likely to be believed and least likely to be true.

What happens when point in time reproducibility is not built in?

You lose the ability to answer the question an audit actually asks, which is about a period rather than about today. If your tooling shows only current state, then a vendor asking about a date two years ago gets a reconstruction rather than a record, and a reconstruction is exactly what an auditor is trained to take apart.

The same gap hurts you internally. When you correct an error in an entitlement record or a calculation rule, you need to show what changed and when, otherwise every prior position becomes suspect and your own counsel cannot rely on any of it. Teams that discover this late end up defending their tooling instead of their position.

Treat the system as an evidence store rather than a reporting tool. Store the discovery inputs, the rules version and the computed result together so any historic position regenerates exactly, keep records append only with no silent edits, and maintain a visible trail from each computed number back to the discovery record and the contract page behind it. That property is the whole difference between a position your counsel will send to a vendor and a spreadsheet that gets dismantled in the first response. It also changes the negotiation, because a vendor who sees a reproducible position with evidence behind each line engages differently from one who sees an estimate.

Should you build custom or configure what you already own?

Configure if your estate is predominantly per user subscriptions with straightforward metrics and no significant core based licensing on premise. Snow, Certero or the software asset management module in ServiceNow will handle that shape competently. ServiceNow in particular is the sensible choice if you already run it and your configuration data is accurate, since it inherits both the strengths and the weaknesses of your configuration management database.

The hybrid is what we recommend for large estates, and we give that advice consistently. Keep the commercial tool for discovery, normalisation and the recognition catalogue. Build the entitlement model and the calculation engine for your three to five highest risk agreements, because those are the ones where a generic reading of a vendor's published policy is dangerous and where your negotiated terms differ from it. Their calculation engines encode a generic interpretation, and when your agreement contains bespoke terms the resulting position is wrong in one direction or the other.

Build the wider picture when you have had an audit letter from any major vendor in the last three years, when licensing decisions are being made implicitly by infrastructure changes nobody reviews, or when renewal negotiations start from the vendor's numbers because you cannot produce your own with confidence. A useful test costs nothing: take your single highest risk agreement and try to assemble its entitlement record from source documents. However long that takes is your real audit response time.

How do hidden costs get into the quote?

Five drivers, unusual compared with other categories and all knowable in advance.

  • Contract volume and condition. An organisation whose ordering documents are scanned images from the 2000s faces a materially larger discovery effort than one with a tidy repository. Sample twenty documents before scoping.
  • Metric count. Each distinct metric is its own calculation with its own edge cases, so supporting six metrics is not marginally more work than supporting two.
  • Virtualisation uniformity. A single platform across the estate is one model. A mix inherited from acquisitions is several.
  • Configuration data quality. A licensing calculation inherits every inaccuracy underneath it, and cleaning that up is frequently a prerequisite project rather than part of this one.
  • Licensing expertise. Somebody who understands the agreements has to sit in design sessions, and that person is usually scarce and already busy.

The cost that surprises people is legal time. Your licensing counsel needs to define the interpretations the software encodes, because those interpretations carry weight and are not an engineering decision. Price that as a workstream with named people rather than as a review meeting at the end.

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

The builds that work move the check before the change. Evaluating a proposed cluster expansion or an affinity rule change so it returns a licensing impact alongside a capacity impact is the single highest value feature in the category, because it stops exposure being created rather than reporting it afterwards. Cluster boundaries and resource pool membership are licensing controls whether or not anybody treats them that way, and putting that check into the change process is cheap compared with what it prevents.

The second differentiator is computing contested positions both ways. Where live migration is enabled, several major vendors take the position that licensing must cover every host a workload could run on rather than the hosts it did run on. Whether that applies to your specific agreement is a contractual question for your counsel and it is frequently disputed. Your model needs both numbers, because one is your internal risk view and the other is what the vendor will claim, and a system that computes only one gives you false comfort in whichever direction it was built.

When choosing a developer, ask how they would compute a position for a database product in a cluster with live migration enabled. If they do not immediately ask which vendor and which agreement, they will encode one interpretation and hand you a number with unearned confidence. Ask how a position from eighteen months ago is reproduced, what happens to hosts with missing physical core data, and what they will do with contracts that exist only as images. Then settle repository, cloud account and data ownership before kickoff, because these artefacts encode interpretations of your contracts and cannot sit behind a supplier relationship.

Research & sources

The evidence behind this guide

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

  1. 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) →
  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. McKinsey argues software developer productivity can be measured by combining system-level metrics (DORA and SPACE) with its own outcome-oriented approach, which it reports deploying across nearly 20 tech, finance, and pharmaceutical companies - a claim that sparked significant debate in the engineering community. Source: McKinsey & Company (2023) →
  4. Independent reporting of Gartner's 2025 survey confirms 59% of finance leaders use AI, up from 37% in 2023, with error and anomaly detection (34%) and accounts payable automation (37%) among the leading use cases. Source: CPA Practice Advisor (reporting Gartner) (2025) →
Tanvi S. · QA Lead · Shopify · Delhi

Tanvi leads QA on Shopify projects at Digital Heroes, testing storefronts the way real shoppers use them: odd cart combinations, discount stacking, tax and shipping edge cases, checkout on poor connections. Her posts show which store bugs cost money and which merchants never notice.

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 stop infrastructure changes creating licensing exposure?
Put the check into the change process rather than into a monthly report. A proposed cluster expansion, an affinity rule change or a move into a shared resource pool should return a licensing impact alongside the capacity impact before it is approved. Cluster boundaries and resource pool membership are licensing controls whether or not anybody treats them that way, and the people making those changes usually have no way of knowing what they cost. Prevention here is far cheaper than the settlement conversation it avoids.
What is the realistic way to get scanned contracts into an entitlement model?
Two passes, with a human in the second. Automated extraction produces draft records with products, quantities, metrics and dates, then somebody with licensing knowledge confirms each one against the source page, and every record keeps a link back to that page for later verification. Refuse any fully automated pipeline, because a wrong entitlement nobody checked produces a position you will act on with false confidence, and errors in your favour are the dangerous ones since nobody goes looking for them.
Our compliance position improved after an agent update. Should we trust that?
Treat it as a coverage failure until proven otherwise. A position that improves because data disappeared is the most believable and least reliable number in the whole system, and agents silently dropping servers is a routine occurrence. Reconcile the host population against your virtualisation platform and directory on a schedule, and alarm on coverage drops rather than only on position changes. Where physical core data is unavailable for a host, raise an exception rather than assuming a value, because unknown hosts are where audit findings originate.
How should the model handle disputed virtualisation rules?
Compute both readings and label them. Where live migration is enabled across a cluster, several major vendors take the position that licensing must cover every host a workload could run on rather than the hosts it did run on, and whether that applies to your agreement is a contractual question for your counsel that is frequently disputed. You need one number as your internal risk view and one as the vendor's likely claim. A system that computes only one gives false comfort in whichever direction it was built.
Do we still need Flexera or Snow if we build the entitlement layer?
Usually yes, and the hybrid is what we recommend for large estates. Their product recognition and normalisation libraries represent years of catalogue work with no competitive value to you, so keep them for discovery and normalisation. Build the entitlement model and calculation for the handful of agreements where your negotiated terms differ from the vendor's published policy, because their engines encode a generic interpretation and that is precisely where a generic answer becomes indefensible.
How do we reproduce a compliance position from two years ago?
By storing the discovery inputs, the rules version and the computed result together from the beginning, so any historic position regenerates exactly rather than being reconstructed. Keep records append only with no silent edits, and maintain a visible trail from each computed number back to the discovery record and the contract page behind it. This is not retrofittable in any practical sense, which is why it belongs in the first release even though it never appears on anybody's feature wish list.
Does moving to cloud or containers make the counting simpler?
Generally no, it changes shape rather than getting easier. Bring your own licence to cloud carries mobility conditions and sometimes dedicated host requirements, container platforms make the licensable boundary genuinely ambiguous for several products, and vendors have moved metrics in ways that count populations your discovery tooling never examined. Build metrics as configurable logic rather than as a fixed set, because the rules will change again and hard coding this year's model guarantees a rewrite.
Where should we start if we have never assembled an entitlement position?
Take your single highest risk agreement and try to build its entitlement record from source documents, timing the exercise honestly. However long that takes is your real audit response time, and it is usually the number that decides whether the project gets funded. It also tells you which of the cost drivers apply to you: how many documents are scanned images, whether metrics were defined in product use rights documents you no longer hold, and how much of the quantity is spread across amendments and true ups.
How does custom software stop us overselling across multiple sales channels?
By keeping one authoritative count per SKU and recording every change as an atomic movement, so two orders can never both claim the last unit. Channel integrations sync through a queue with idempotency checks, meaning a webhook that fires twice does not subtract stock twice. Ask any vendor to demonstrate concurrent orders against a single unit of stock; naive builds and generic connectors both fail that test.
Should I hire a freelancer or an agency to build my inventory system?
For a simple single-user stock tracker, a strong freelancer works and costs roughly half as much. Once real revenue flows through the system, choose an agency, because inventory software fails in production rather than in the demo, and a solo developer is a single point of failure during your busiest week. The most expensive engagements Digital Heroes takes on are rescues of freelancer builds after an oversell incident.
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.
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 does upkeep on a custom inventory system cost per year?
Budget 15 to 20 percent of the build cost per year, so a $50,000 system runs roughly $8,000 to $10,000 annually across Digital Heroes maintenance contracts. That covers hosting, security patches, integration updates when Shopify or Amazon change their APIs, and small improvements. Skipping it is how a channel sync quietly breaks in month nine and corrupts your counts.
How many people does it take to build inventory management software?
A typical build runs with 4 to 6 people: a project lead, one or two backend developers, a frontend or mobile developer for the scanning interface, and a QA engineer. The backend carries most of the effort, because stock logic and integrations are where these systems succeed or fail. Be cautious of a one-person team quoting a multi-warehouse, multi-channel build.
We already use Fishbowl. When does replacing it with custom software make sense?
Replace Fishbowl when you are paying for workarounds: manual exports to cover missing reports, third-party connectors patching integration gaps, or processes bent to fit its QuickBooks-centric model. Fishbowl remains a solid choice for QuickBooks-linked manufacturing inventory, so if it fits your workflow, keep it. Custom wins when your process is the differentiator, for example serialized rentals, consignment stock, or a picking flow Fishbowl cannot model.
How does moving our data from spreadsheets or Fishbowl into a new system work?
The agency exports your current records, maps fields to the new schema, deduplicates SKUs, and runs a trial import that you verify against physical counts before cutover. Plan for one to three weeks, and expect to find discrepancies, because migration always exposes drift the old system was hiding. The safest cutover happens right after a physical stock take, so the new system starts from a verified baseline.
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.
Will a custom system keep up if we grow to more SKUs, orders, and warehouses?
Yes, if the architecture is designed for it up front, which is much of the point of building custom. A properly structured stock ledger handles 100,000+ SKUs and peak-season order volume without per-record or per-user pricing, and adding a second warehouse becomes a configuration change rather than a plan upgrade. Systems that fail at scale were built against a demo-sized dataset with a quantity field that gets overwritten.
Can I build my product on a no-code tool like Bubble instead of hiring developers?
For testing whether anyone wants the product, yes, and Bubble's paid plans start at $29 a month, which is the cheapest validation you will ever buy. The ceiling arrives with complex data relationships, heavy integrations, performance at a few thousand users, and the fact that you cannot export a Bubble app to servers you control. A path many Digital Heroes clients take: prove demand on no-code, then rebuild custom once revenue justifies it, treating the no-code version as a paid prototype rather than a foundation.
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.
Who can build a custom inventory management software system?

Digital Heroes builds custom inventory management 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 inventory management 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?