Problems & solutions · Custom Software

Records Retention and Legal Hold Software Problems: The 7 That Cost Real Money, and How to Avoid Them

Records Retention AND Legal Hold Software software overview illustration showing common problems and fixes.
The short answer

The most expensive failure in this category is not a hold that was never issued. It is a hold that was issued correctly and then defeated by routine administration. A custodian leaves, the standard leaver process deletes their mailbox and account on its normal schedule because it has no knowledge of the hold register, and nineteen months later opposing counsel asks what happened to that person's email. Nobody acted in bad faith and the exposure is the same: a spoliation argument you cannot answer, built entirely out of a joiners and leavers workflow, a platform migration and a scheduled purge job. Any build that does not intercept the leaver path before the account is touched has left the main hole open.

Why does the hold register get scoped without the leaver interlock?

Because the visible problem is the spreadsheet. Counsel describes the pain as chasing acknowledgements and not knowing who is on which hold, so the requirement becomes a hold register with notices and reminders. That is genuinely useful and it is not where the preservation failures come from.

Preservation fails at the seams between legal and everything else. Human resources (HR) marks a leaver, identity management disables the account on a schedule, and a mailbox retention policy deletes it thirty days later. Storage administration decommissions a file share after a migration. An enterprise resource planning (ERP) system runs a purge job written by someone who left years ago. Each is a well behaved process doing exactly what it was designed to do, and none of them has heard of your hold list.

The fix is to bind custodians to identities from your directory rather than to typed names, and to subscribe to lifecycle events rather than reading a report. When a custodian is flagged as a leaver, the system blocks the deletion path and raises a preservation task before the account is touched. When someone joins a team or a role that a matter's scope references, they surface for counsel to add, which closes the opposite gap where new joiners were never preserved at all. Scope this in the first release. A hold register without the interlock is a better spreadsheet, and it leaves the failure mode that actually produces sanctions entirely intact.

What goes wrong when existing holds and custodian lists are migrated?

Every organisation doing this build already has live matters, and those matters cannot pause while the system is stood up. So migration happens under a duty to preserve, which changes what is acceptable.

The source is usually a workbook per matter with names typed by whoever issued the notice, and those names do not resolve cleanly. Some belong to people who have left, which is the population you most need to know about and the one a spreadsheet is least likely to have kept current. Some are ambiguous because two people share a name. Some scopes are described in prose, covering the Northgate project files without naming a repository, a path or a date range. And there is frequently no record of who acknowledged, so you inherit holds whose evidentiary position is unknown.

The fix is to migrate the hold as a new record with an explicit provenance marker rather than pretending the system has always held it. Resolve every custodian to a directory identity with a human deciding ambiguous cases, and produce an exception list of names that cannot be resolved, because that list is the actual risk report and it should go to counsel rather than into a backlog. Where acknowledgement history is missing, record it as unknown rather than as absent, and consider reissuing the notice through the new system so you have a clean evidentiary position going forward. Never let migrated assertions look identical to facts the system observed.

Why do repository connectors break after launch?

This is where builds in this category get real, and where they decay fastest. Preservation semantics differ in every system you touch. Microsoft 365 has native hold mechanisms that work well for mail, Teams and SharePoint with the right licensing. Google Workspace has its own model, and Slack retention and export behaviour depends heavily on plan. A file server has none of this and needs either a copy into a preservation store or a permission and job level block. Line of business systems have purge jobs with no interface at all.

They break for ordinary reasons. A licence tier changes and a preservation capability silently stops being available. A tenant policy is updated and overrides what the connector set. A file share is migrated and the paths in the hold scope no longer exist. An application is upgraded and its purge job is reinstated with default settings. The dangerous part is that none of these announce themselves, and a hold that is no longer in force looks exactly like a hold that is.

The fix is a connector contract with four operations for every repository: place a preservation, verify it is still in force, release it, and report what is covered. Verify is the one that matters and the one most often skipped. Run it on a schedule and alert on any preservation that cannot be confirmed. Where preservation cannot be applied technically, the system must show an explicit unsupported state with a recorded compensating control, never a green tick. A false green is worse than a known gap, because counsel will rely on it in a certification.

What happens when retention triggers and the disposition interlock are missing?

The quieter failure in this category is that nothing is ever deleted. It looks like caution and it is an accumulating liability: storage cost that grows every year, every byte discoverable in the next matter, and personal data kept with no remaining purpose, which is its own exposure under privacy obligations.

It happens because disposition requires trusting two facts at once. The retention period has elapsed, and no hold covers the record. If either is uncertain, keeping everything is the rational choice, and when hold data lives in a spreadsheet the second fact is never certain. So the interlock is the product, not a feature of it.

The trigger side is where retention builds actually overrun. A period that starts at record creation is easy. A period that starts at contract termination, employee separation, product end of life or final payment requires that event to be pulled from an operational system, and that integration is the real work in a retention project. Teams scope the schedule engine, model record classes and jurisdictions carefully, then discover that half their retention rules cannot fire because nothing tells the system when the trigger event happened.

The fix is to evaluate every disposition candidate against active holds at record level rather than system level, route a review list with the reasoning attached, capture approval from the record owner and legal, execute through the repository connector, and write an immutable certificate of destruction naming what was disposed, under which schedule entry, approved by whom and when. That certificate is what you produce when a regulator asks why a record no longer exists, and it is the difference between routine disposition and spoliation.

Should you build custom or configure what you already own?

If you run a handful of matters a year, your data lives almost entirely in Microsoft 365, and your licensing includes the native hold features, use them with a documented process and a diligent paralegal. That is proportionate and honest, and a build would be an expensive way to formalise something that already works. If you already run Relativity for review, its hold module is a sensible adjacent purchase rather than a project. Exterro is strong on the litigation side. Zasio Versatile is genuinely good at retention schedules and the research behind them, and buying a maintained schedule is often better value than building one.

Build when two or more of these are true. Your business records live in line of business systems that no packaged tool connects to, which is the usual situation in manufacturing, energy and financial services. You operate across jurisdictions with genuinely different retention schedules and entity structures. Your leaver process has already destroyed data under hold, or you cannot prove it has not. Counsel has told you your preservation cannot be demonstrated. Or you are carrying storage and discovery cost because disposition has never once run and nobody will authorise the first deletion.

A hybrid is often right: buy the retention schedule content, build the interlock and the connectors.

How do hidden costs get into the quote?

A focused first release covering matters and holds, custodians bound to directory identity with leaver interception, notices with acknowledgement and escalation, scope definition and a full audit trail runs $80,000 to $160,000 over 12 to 18 weeks in our delivery experience. A full platform adding the retention schedule engine with triggers and jurisdictions, preservation and disposition connectors, the disposition review workflow with certificates, physical records and reporting runs $200,000 to $450,000 over 7 to 12 months. The overruns come from a predictable list.

  • Repository count, and specifically the awkward ones. Collaboration platforms are the easy half. The line of business systems where your actual business records live are each their own investigation before they are an integration.
  • Licensing. A technically simple preservation can be commercially expensive if it requires a tier upgrade across a large user population, and that cost belongs in the business case rather than appearing after design.
  • Retention schedule research. Each jurisdiction adds record classes and citations that need legal input rather than engineering, and organisations without an approved schedule are buying a legal project alongside a software one.
  • Trigger event integrations, which are the part of retention most often discovered late and which reopen the data model when they are.

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

Ask a prospective developer what happens when a custodian leaves the company. If the answer does not involve intercepting the leaver process before the account is deleted, they have not built this before and your first real test will fail.

Ask how they will represent a repository where preservation cannot be technically enforced. The correct answer is an explicit unsupported state with a recorded compensating control. Anyone comfortable showing a green tick by default should be disqualified on that answer alone, because counsel will certify against it.

Ask which preservation connectors they have written by name, and what they did about the systems with no interface. Microsoft 365, Google Workspace, Slack, a legacy file server and an archive job inside an enterprise resource planning system are five different problems with five different answers.

Keep the scope boundary explicit. This is a governance layer, not an ediscovery platform. Collection, processing, review and production are a separate discipline with mature products, and scope creep in that direction is the main way these projects overrun. Build holds and the leaver interlock first, then retention and disposition once the hold data is trusted, because nobody will authorise a deletion against data they doubt.

Settle code ownership in writing before kickoff. You should own the repository, the infrastructure accounts and the right to hire anyone else to continue. At Digital Heroes the client owns the code from the first commit. The audit trail this system produces will be relied on in litigation and regulatory examinations for years, and the ability to move it, inspect it and maintain it independently is part of the control rather than a commercial preference.

Research & sources

The evidence behind this guide

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

  1. The average developer spends more than 17 hours a week dealing with maintenance issues such as debugging and refactoring, and about four of those hours on 'bad code' - waste that equates to nearly $85 billion annually worldwide in opportunity cost. Source: Stripe (2018) →
  2. Only 16% of respondents said their organizations' digital transformations had successfully improved performance and equipped them to sustain gains over the long term; even in digitally savvy industries such as high tech, media, and telecom, self-reported success rates did not exceed 26%. Source: McKinsey & Company (2018) →
  3. Gallup reports global employee engagement fell to 20% in 2025 (its lowest since 2020, down from a 2022-2023 peak of 23%), and estimates low engagement costs the world economy an estimated $10 trillion in lost productivity, or 9% of global GDP. (Note: this figure appears in Gallup's evergreen State of the Global Workplace page, currently reflecting the 2026 edition reporting on 2025 data.). Source: Gallup (2025) →
  4. APQC's Open Standards Benchmarking data on the monthly financial close found median performers take about 6.4 calendar days to close the books, while top performers (top 25%) do it in 4.8 days or fewer and bottom performers (bottom 25%) take 10 or more days. Source: APQC (2018) →
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

Our active holds live in spreadsheets. How do we migrate them without breaking preservation?
Migrate each hold as a new record with an explicit provenance marker rather than pretending the system has always held it, and resolve every custodian to a directory identity with a human deciding ambiguous cases. The names that cannot be resolved, usually people who have already left, are your actual risk report and should go to counsel immediately rather than into a backlog. Where acknowledgement history is missing, record it as unknown rather than absent, and consider reissuing the notice so your evidentiary position from that point forward is clean.
A platform migration is scheduled during our build. Should we delay one of them?
Do not delay the hold register, and do coordinate them formally. Data moving between platforms while under a duty to preserve is one of the most common ways preservation is lost, because paths in a hold scope stop existing and preservation settings do not always travel with the content. Get the migration team and the hold register on the same schedule, snapshot what is preserved before the move, and run verification against the new location afterwards. Treat any preservation you cannot re-confirm as a gap to be investigated, not as a formality.
What do we do about a system where preservation cannot be technically enforced?
Record it as an explicit unsupported state with a documented compensating control, such as suspending a scheduled purge job and logging the suspension, or exporting a copy into a preservation store. Then surface that state on every report the hold produces. The failure to avoid is a green tick that means nothing, because counsel will rely on it when certifying preservation. A known gap with a named control is defensible. An assurance the system could not actually deliver is the opposite.
Our Microsoft 365 licensing does not include the hold capabilities. What are the options?
Price the licence upgrade against the alternative before assuming either, because a technically simple preservation across a large user population can be the largest single line in the programme. The alternatives are a copy into a preservation store with the storage and privacy consequences that brings, or a policy level block with a documented compensating control. Whichever you choose, put it in the business case at the start. Discovering the licensing dependency after design is a common reason these projects stall halfway.
Who writes the retention schedule, us or the developer?
You do, with legal input, and the software project should not be expected to produce one. A schedule maps record classes to periods with a citation per jurisdiction, which is legal research rather than engineering, and organisations that expect the build to generate it end up with a system waiting on a document. If you do not have an approved schedule, consider buying maintained content from a specialist and building the interlock and connectors around it. That hybrid is often the best value in this category.
Nobody here has ever authorised a deletion. How do we get the first disposition through?
Start narrow and make the reasoning visible. Pick one record class in one jurisdiction with a simple creation date trigger and low sensitivity, run the disposition candidates through the hold interlock at record level, and route the list for review with the schedule entry and the hold check shown next to each item. Capture approvals from the record owner and legal, then issue certificates of destruction. The first successful run is what builds the confidence to widen scope, which is why it is worth doing on the easiest class rather than the largest.
Is this the same as an ediscovery platform?
No, and conflating them is expensive. Collection, processing, review and production are a separate discipline with mature products you should not attempt to rebuild. The governance layer covers matters, holds, custodians, preservation status, retention schedules and disposition, then hands off to a review platform once a matter progresses. Write the boundary into the scope document explicitly, because scope creep in that direction is the main reason these builds overrun both budget and calendar.
What about custodians on long term leave rather than leavers?
They need the same interception, because extended absence often triggers account deprovisioning, mailbox archiving or licence reclamation on a schedule that behaves like a leaver process. Subscribe to those lifecycle events too and block the path where a hold applies. The related case worth designing for is a custodian who transfers to a different team, since their prior data stays in scope while their new role may bring them into a different matter's scope. Both are reasons to bind custodians to directory identity rather than to a typed list.
How do I work out whether custom software will pay for itself?
Do the arithmetic on hours before anything else: if the system saves three staff eight hours a week at a $35 loaded hourly cost, that is about $43,700 a year against, say, a $70,000 build plus 15 to 20% annual maintenance, a payback around two years. Add revenue effects only if you can name them specifically, like faster quotes or fewer abandoned orders, not as vague growth. In our delivery experience the businesses that see payback inside 24 months are the ones automating a process they already measure.
What does a $50,000 custom software budget actually buy?
One core workflow done properly: 10 to 15 screens, two or three user roles, a couple of integrations, an admin panel, and automated tests, delivered in roughly 12 to 14 weeks. What it does not buy is that workflow plus a mobile app plus AI features plus five more integrations. The discipline of picking the one workflow that matters is what separates $50,000 projects that ship from $50,000 projects that stall at 70% complete.
How long does it take from first call to software my team can actually use?
Plan for four to six months: two to three weeks of discovery, two to four weeks of design, then a 10 to 16 week build with testing. In Digital Heroes delivery experience the schedule killer is not engineering speed but decision lag; a client who takes two weeks to approve wireframes adds two weeks to launch. Book a weekly 30-minute decision slot before kickoff and most of that risk disappears.
What happens if I stop paying for maintenance after launch?
Nothing breaks on day one, which is what makes it dangerous. Within 6 to 18 months, unpatched dependencies accumulate known vulnerabilities, an integrated API like Stripe ships a breaking change, and the first fix requires a developer to relearn a stale codebase at full price. Budget 15 to 20% of the build cost per year for upkeep; it is the difference between a $500 patch and a $15,000 emergency.
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.
Should we build an MVP first or go straight to the full system?
MVP first, for almost everyone: ship the single workflow that carries the business value in 10 to 16 weeks, learn from real users, then fund phase two from evidence instead of guesses. The caveat is that an MVP is a small version of a well-built system, not a badly built version of a big one; the data model must already support what comes next. An agency that cannot tell you what they deliberately left out of your MVP has not designed one.
What is a discovery phase, and is it worth paying for separately?
Pay for it, and treat the output as yours. A discovery phase runs two to three weeks, typically 5 to 10% of the eventual build budget, and produces a written scope, wireframes, and a fixed quote you can take to any vendor, including a competitor of the agency that wrote it. Skipping it is how projects end up quoted from a two-paragraph email and delivered at twice the price.
How small can the first version of my software be and still be worth building?
One workflow, end to end, for one type of user: the single process that currently burns the most hours or loses the most money. In Digital Heroes delivery experience, first versions scoped to 6 to 10 weeks of build time ship, get used, and generate the feedback that makes version two obviously right, while 9-month first versions routinely launch with features nobody touches. Everything you cut from v1 gets cheaper to build later, because real usage reorders the roadmap for you.
How many people should be working on my software project?
A typical $40,000 to $150,000 build runs on three to five people: a technical lead, one or two developers, a designer, and someone owning QA and project communication, often as overlapping part-time roles. More bodies do not make software arrive faster; past a point they slow it down with coordination overhead. The question that matters more than headcount is whether one named senior engineer is accountable for the outcome.
What should I prepare before contacting a software development agency?
A one-page brief beats a 40-page requirements document: the business problem in plain words, who will use the system, the 5 to 10 workflows it must handle, the tools it must connect to, and your budget range and deadline driver. You do not need wireframes, a specification, or technical vocabulary; producing those is the agency's job during discovery. Stating a budget range up front is the single best move, because it gets you honest scoping instead of a quote engineered to win the meeting.
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.
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.
Who can build a custom software system?

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

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

What makes Digital Heroes different from other software companies?

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

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

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

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

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

Keep reading
let's build

Build something worth launching.

A plan, a team, a timeline, within 24 hours. No decks, no discovery calls. Tell us what you're building and we'll come back with a real scope and a real number.

message us directly · we reply within one business day

mission briefing

Monthly dispatch

Playbooks, real build costs, and what we're shipping. One email a month. No fluff.

visit us

New York HQ

1140 Broadway, Suite 704 · New York, NY 10001

Get directions
Online now

Hey there 👋 How can we help you today?