One row for every document in our library of public ERP implementation contracts: the buyer, the supplier, the platform, the public source link, the date we retrieved it, and how each of eleven fixed checks reads against that specific document — with the clause it rests on, and the sections that could not be read.
Seventeen rows. Sixteen supplier-written contracts — nine written by the software publisher implementing its own product, seven written by a third-party integrator — plus one buyer-drafted model contract, a university system’s own template, kept as a named comparator. The comparator is excluded from every supplier split and from the firing table, and carries no score: a null, not a zero.
Derived 2 October 2026. Every aggregate figure on this page carries that date.
A low score means unread, not clean.
Several documents here are partly redacted, truncated by the source, or arrive without the exhibit that governs the question. Where that happened the check reads not assessable, with the reason named against that row — never absent, and never a pass. A contract a buyer cannot read in full before signature is a finding about that contract, not a gap in the research, and this dataset is built to say so rather than hide it inside a number.
A row-level record an editor or a researcher can check against the documents themselves.
Every row is a public record with a public URL. Twelve of the buyers are public bodies; four are private companies whose contracts are public because they were filed as exhibits with the US Securities and Exchange Commission, which is a different thing and worth keeping straight. The documents span January 2001 to October 2025, across twelve distinct delivering parties and roughly seven platform families. No client or prospect document appears in this dataset. The firm has no clients, and nothing here is anyone’s confidential paper.
Each document is read against the same fixed list of eleven checks, in the same order. The dataset records, for each check and each document, the state, the severity the instance actually fired at, whether it counts toward the standing score, the clause it rests on, where that clause sits if our record captured a reference, and a note explaining the call. The standing score counts checks C1 to C7 only, so it runs 0 to 7; checks C8 to C11 are recorded where the document addresses them but are never counted.
We say “contracts” rather than “statements of work” for this set as a whole, because one of the seventeen is an executed agreement body whose statement-of-work exhibit was never in the file we retrieved.
This is a sample, not an industry benchmark. Five of the sixteen supplier-written documents come from a single publisher, Tyler Technologies — the largest single skew in the set. Nothing here supports a statement about the ERP services market as a whole, and the dataset does not rank vendors.
The eleven checks, by their column prefix: C1 data migration listed as a buyer responsibility with no supplier conversion hours; C2 integrations counted but not designed; C3 testing not budgeted by the implementer; C4 change management with no deliverable; C5 hypercare ending before the buyer’s first month-end close; C6 assumptions that shift risk silently to the buyer; C7 re-baselining or re-pricing rights for the supplier; C8 a post-design re-estimation right; C9 a no-fit-gap method with test-stage change orders; C10 a quoted fee that is contractually only an estimate billed on time and materials; C11 a single go-live with deferred functionality contractually dropped.
The analysis built from these rows, with the verbatim clauses and the score distribution, is the benchmark page.
Seventy-nine columns: thirteen that describe the document, and six for each of the eleven checks. Enumerated values are given in full wherever a column has them.
row_idsow-0001 to sow-0017.buyersuppliern/a - buyer template for bidders.paper_typevendor-direct (the software publisher implementing its own product), integrator-led (a third-party systems integrator), buyer-drafted-comparator (the buyer’s own model contract, excluded from every supplier split and from the firing table). Counts: 9, 7 and 1.paper_type_as_recordeddocument_typestatement_of_work, executed_contract_sow_exhibit_not_retrieved, buyer_drafted_model_sow_comparator. Counts: 15, 1 and 1.platformsectorstanding_scorenull in the JSON for the buyer-drafted comparator, which is not scored. Null is not zero. Observed values: 1, 2, 3, 4, 5, 7. No document scores 0 or 6.retrieved_dateYYYY-MM-DD. Range 2026-09-02 to 2026-09-29. Every row has one.source_urlnot_readable | . Every row has an entry.row_notec1_state … c11_statefired, not-fired-protective, topic-absent, not-assessable, not-evaluated. Empty for the comparator row only. The five states are set out in full below.c1_severity … c11_severityhigh, medium, or none. A cell that did not fire reads none. Empty for the comparator row only. Only C3 is a two-tier check in which the tier changes whether the instance is counted.c1_counts_in_standing_score … c11_counts_in_standing_scoretrue or false. True only for a check among C1 to C7 that fired at the tier the standing 0–7 score counts. C3 counts only at high, never at medium. C8 to C11 are never counted, so these columns are always false for them. Empty for the comparator row only. The count of true cells in a row equals that row’s standing_score, in every row.c1_quote … c11_quotec1_section … c11_sectionnot recorded or not recorded in corpus wherever the original scoring record did not capture a section reference. No section number has been invented for this dataset.c1_note … c11_noteEvery _state cell holds one of exactly five values. Two of them look similar and are not, and we keep them apart on purpose.
not_readable column.Neither of the last two is ever folded into a score as though it were a pass. That is the whole reason the two are separate values rather than one.
document_type columnThree values, and the distinction between them changes how a row should be read.
row_note column.Use it, cite it, republish it. We ask one thing in return: quote the record itself, not a summary of it — including ours.
Licence. This dataset is published under the Creative Commons Attribution 4.0 International licence (CC BY 4.0). You may copy, redistribute, adapt and build on it, including commercially, with attribution.
Citation.
Pure Source Solutions Inc., Public ERP Contract Red-Flag Dataset, 2 October 2026, psi888.com/data/
psi-erp-contract-dataset-2026-10-02.csv
Seventeen data rows plus a header. UTF-8, comma-separated, quoted fields. Seventy-nine columns.
Download the CSVpsi-erp-contract-dataset-2026-10-02.json
The same seventeen rows, same column names, same values, with the licence, citation, composition and the five-state convention carried in the file itself.
Download the JSONThe two files agree with each other row for row and field for field, and both agree with the tables below. The tables show the columns that fit on a page; the files carry all seventy-nine, including the quoted clause, the section reference and the note for every check.
If a finding here does not match the underlying document, that is a correction we want to hear about, and we will publish it: donzou@psi888.com.
Every row carries its public source URL and the date we retrieved it. The tables scroll sideways on a narrow screen.
| Row id | Buyer | Supplier | Paper type | Document type | Platform | Sector | Score | Retrieved | Source URL |
|---|---|---|---|---|---|---|---|---|---|
| sow-0001 | City of Rapid City, SD | Tyler Technologies | vendor-direct | statement_of_work | Tyler Munis | municipal government (public sector) | 5 of 7 | 2026-09-02 | https://archive.rcgov.org/lf20140212/LF021214-15/Rapid%20City%20SD%20SOW_02112014_ps.pdf |
| sow-0002 | City of San Rafael, CA | Tyler Technologies | vendor-direct | statement_of_work | Tyler Munis (SaaS) | municipal government (public sector) | 5 of 7 | 2026-09-02 | https://storage.googleapis.com/proudcity/sanrafaelca/uploads/2024/02/4.e-Authorize-a-Software-Services-Agreement-with-Tyler-Technologies-Inc.-for-an-Enterprise-Resource-Planning-ERP-System.pdf |
| sow-0003 | University of Arkansas System | n/a - buyer template for bidders | buyer-drafted-comparator | buyer_drafted_model_sow_comparator | Workday Financial Management | higher education (public sector) | null | 2026-09-02 | https://hogbid.uark.edu/_resources/documents/RFPR654331_ERPImplServices_App3_ModelSOW.pdf |
| sow-0004 | Weber County, Utah | Graviton Consulting Services | integrator-led | statement_of_work | Oracle Fusion Cloud HCM + OIC; Munis financials integration | county government (public sector) | 4 of 7 | 2026-09-03 | https://www.webercountyutah.gov/commission/documents/uploads/G1%20%20HRIS%20Implementation.pdf |
| sow-0005 | City of Chandler, Arizona | Collaborative Solutions, LLC (Cognizant) | integrator-led | statement_of_work | Workday HCM, Payroll, Time, Absence, Financials, Projects, Procurement, Inventory, Sourcing, CLM, Grants, Prism, Extend (Launch methodology) | municipal government (public sector) | 5 of 7 | 2026-09-03 | https://public.destinyhosted.com/chanddocs/2025/CC/20251013_1975/8732_4771_Cognizent_Agreement.pdf |
| sow-0006 | City of Orlando, Florida | Workday, Inc. (Professional Services) | vendor-direct | statement_of_work | Workday HCM Recruiting (Launch methodology); 16 integrations | municipal government (public sector) | 5 of 7 | 2026-09-03 | https://orlando.novusagenda.com/agendapublic/AttachmentViewer.ashx?AttachmentID=127989&ItemID=64614 |
| sow-0007 | City of Portland, Bureau of Environmental Services | Infor (US), LLC (Infor Professional Services) | vendor-direct | statement_of_work | Infor CloudSuite Public Sector (Asset Management, Field Inspector, GIS integration, Birst, Infor OS) | municipal utility (public sector) | 4 of 7 | 2026-09-03 | https://www.portland.gov/sites/default/files/council-documents/2023/infor-public-sector-wams-replacement-project-exhibit-a-attachment-2.pdf |
| sow-0008 | City of Sunrise, Florida | Tyler Technologies | vendor-direct | statement_of_work | Tyler Munis (Financials, Payroll/HR, Utility Billing CIS, Purchasing, Fixed Assets, Inventory, Work Orders, Project/Grant, Analytics) + EnerGov permitting/licensing | municipal government (public sector) | 3 of 7 | 2026-09-03 | https://sunrise.novusagenda.com/AgendaPublic/AttachmentViewer.ashx?AttachmentID=20130&ItemID=5513 |
| sow-0009 | Village of Downers Grove, Illinois | Tyler Technologies | vendor-direct | statement_of_work | Tyler Munis SaaS (Financials, HR/Payroll, Utility Billing, Licensing) | municipal government (public sector) | 4 of 7 | 2026-09-04 | https://www.downers.us/public/docs/agendas/2021/02-02-21/MOT%202021-8817%20-%20ERP%20Contracts%20-%20Tyler%20Technologies%20-%202-2-2021_17134.pdf |
| sow-0010 | Utah State Board of Education (USBE) and participating Utah LEAs | PowerSchool Group LLC | vendor-direct | statement_of_work | PowerSchool Unified Administration BusinessPlus v22.4 - Financials, Purchasing, HR/Payroll | state education agency (public sector) | 7 of 7 | 2026-09-04 | https://vahara-o2-public.s3.amazonaws.com/media/115299/PowerSchool-BusinessPlus-Scope-of-Work-(DRAFT).pdf |
| sow-0011 | City of Sutter Creek, California | Tyler Technologies | vendor-direct | statement_of_work | Tyler ERP Pro (SaaS): Core Financials, HR Management, Employee Access Pro Time & Attendance, Project Accounting, Purchasing, AR, Utility Billing, Cashiering, Content Manager Core | municipal government, small city (public sector) | 4 of 7 | 2026-09-08 | https://mccmeetingspublic.blob.core.usgovcloudapi.net/suttrcrkca-meet-02b2e46c1ed749608928e84b7e1629b5/ITEM-Attachment-001-3c72db8f5b99433f9d52b57fcd2ede8d.pdf |
| sow-0012 | Citizens Property Insurance Corporation, Florida | Applications Software Technology Corporation (AST) | integrator-led | executed_contract_sow_exhibit_not_retrieved | Oracle Cloud ERP (SaaS) | state-created governmental insurer (public sector) | 2 of 7 | 2026-09-09 | https://www.citizensfla.com/documents/20702/9087517/Executed+Contract+-+1615002901.pdf/c688494d-e5d4-46b0-b9b8-916816932b75?version=1.0&t=1547053370050&d= |
| sow-0013 | P. H. Glatfelter Company | Accenture LLP | integrator-led | statement_of_work | ERP Application of choice (publisher not confirmed in this exhibit) plus Click Commerce for Customer Direct website | private sector - paper manufacturing | 4 of 7 | 2026-09-26 | https://www.sec.gov/Archives/edgar/data/41719/000089322002000325/w58137ex10-t.txt |
| sow-0014 | Home Interiors & Gifts, Inc. | PricewaterhouseCoopers LLP | integrator-led | statement_of_work | J.D. Edwards (JDE) Financial, Distribution and Demand Planning | private sector - direct-sales home decor | 1 of 7 | 2026-09-26 | https://contracts.justia.com/companies/home-interiors-gifts-inc-64989/contract/1058055 |
| sow-0015 | NuVasive, Inc. | IBM Global Business Services | integrator-led | statement_of_work | SAP R/3, ECC 6.0 (IBM Express Solution for SAP Medical Devices) | private sector - medical device manufacturing | 4 of 7 | 2026-09-28 | https://www.sec.gov/Archives/edgar/data/1142596/000093639207000658/a32696exv10w2.htm |
| sow-0016 | Warnaco Inc. | SAP America, Inc. | vendor-direct | statement_of_work | mySAP Business Suite (SAP NetWeaver), including RWD Info Pak | private sector - apparel and intimate-apparel manufacturing | 2 of 7 | 2026-09-29 | https://www.sec.gov/Archives/edgar/data/801351/000095013605001442/file002.htm |
| sow-0017 | Wright County, Minnesota | Ciber Global, LLC (also identified in the SOW as HTC Global Services, Inc.) | integrator-led | statement_of_work | Oracle Fusion Cloud Applications (Financials, HCM, Payroll, Procurement, Purchasing, Project Management, Planning & Budgeting Cloud Service) | county government (public sector) | 3 of 7 | 2026-09-29 | https://www.wrightcountymn.gov/AgendaCenter/ViewFile/Item/7207?fileID=14830 |
Where a check fired, the tier it fired at is shown beside the state. Only C3 has a tier that changes whether the instance is counted in the standing score: it counts at high and never at medium.
| Row id | Buyer | C1 | C2 | C3 | C4 | C5 | C6 | C7 | C8 | C9 | C10 | C11 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| sow-0001 | City of Rapid City, SD | fired high | fired high | fired | fired medium | fired high | fired medium | topic absent | not evaluated | not evaluated | not evaluated | not evaluated |
| sow-0002 | City of San Rafael, CA | fired high | not assessable | not assessable | fired medium | fired high | fired medium | fired high | not evaluated | not evaluated | not evaluated | not evaluated |
| sow-0003 | University of Arkansas System | — | — | — | — | — | — | — | — | — | — | — |
| sow-0004 | Weber County, Utah | fired high | fired high | fired | not fired · protective | fired high | fired medium | topic absent | fired | not evaluated | not fired · protective | not evaluated |
| sow-0005 | City of Chandler, Arizona | fired high | fired high | fired high | not fired · protective | not fired · protective | fired medium | fired high | fired | fired medium | not fired · protective | not evaluated |
| sow-0006 | City of Orlando, Florida | fired high | fired high | fired high | fired medium | not fired · protective | fired medium | not fired · protective | fired | fired medium | not fired · protective | not evaluated |
| sow-0007 | City of Portland, Bureau of Environmental Services | not fired · protective | not fired · protective | fired | fired medium | fired high | fired medium | fired high | not evaluated | not evaluated | not evaluated | not evaluated |
| sow-0008 | City of Sunrise, Florida | not fired · protective | fired high | fired | not fired · protective | not assessable | fired medium | fired high | not evaluated | not evaluated | fired | not evaluated |
| sow-0009 | Village of Downers Grove, Illinois | not fired · protective | fired high | fired medium | fired medium | fired high | fired medium | not fired · protective | not evaluated | not evaluated | not fired · protective | not evaluated |
| sow-0010 | Utah State Board of Education (USBE) and participating Utah LEAs | fired high | fired high | fired high | fired medium | fired high | fired medium | fired high | not evaluated | not evaluated | fired | fired |
| sow-0011 | City of Sutter Creek, California | not fired · protective | topic absent | not assessable | fired medium | fired high | fired medium | fired high | not evaluated | not evaluated | fired | not evaluated |
| sow-0012 | Citizens Property Insurance Corporation, Florida | not assessable | not assessable | not assessable | not assessable | fired high | fired medium | not fired · protective | not evaluated | not evaluated | not fired · protective | not evaluated |
| sow-0013 | P. H. Glatfelter Company | fired high | not fired · protective | fired | fired medium | fired high | fired medium | not fired · protective | not evaluated | not evaluated | fired | not evaluated |
| sow-0014 | Home Interiors & Gifts, Inc. | not fired · protective | not fired · protective | not fired · protective | not fired · protective | not fired · protective | fired medium | not fired · protective | not evaluated | not evaluated | fired | not evaluated |
| sow-0015 | NuVasive, Inc. | fired high | fired high | fired | fired medium | not assessable | fired medium | not fired · protective | not evaluated | not evaluated | fired | not evaluated |
| sow-0016 | Warnaco Inc. | not assessable | not assessable | fired | fired medium | not assessable | fired medium | not assessable | not evaluated | not evaluated | not assessable | not evaluated |
| sow-0017 | Wright County, Minnesota | not fired · protective | fired high | fired | not fired · protective | fired high | fired medium | not fired · protective | not evaluated | not evaluated | not fired · protective | not evaluated |
Stated here rather than quietly fixed. These are the things we would want to know if someone handed us this file.
1. What the review of this dataset found. Before publication, every count on these pages was re-derived from the seventeen row-level records rather than carried over from any summary. That pass found five errors, all of them in aggregate sentences and none in the rows themselves: one document had been listed twice in the score distribution, at two different scores; three check denominators had been computed on inconsistent rules, so two fire rates were stated against the wrong base and one counted documents the check was never run against; and one counter-example count was understated by one. Every figure published here is the re-derived one. The rows passed unchanged. We record this because it is the second kind of finding in this dataset: a count taken from a summary of a document set is not the same thing as a count taken from the set.
2. Every row is re-derived, never copied from a summary. Each cell is taken from that document’s own stored scoring record. Where a count printed in a summary sentence disagreed with the row-level records, the rows won.
3. Two scores were corrected on 2 October 2026. The Village of Downers Grove contract (Tyler Technologies) and the City of Sutter Creek contract (Tyler Technologies) had both been counted at C3 HIGH on the same ambiguous Tyler data-conversion-verification sentence that had already forced the San Rafael contract to not assessable on 30 September. Downers Grove now reads C3 fired at medium, not counted in the standing score; Sutter Creek now reads C3 not-assessable. Both scores move from 5 of 7 to 4 of 7. Both were re-examined from the stored record without a new fetch, because both statement-of-work exhibits remain unreadable. The direction of the underlying testing finding is unchanged; the severity split is softer than earlier published versions. It is set out in full on the benchmark page.
4. A mapping error on check C2, found and corrected 1 October 2026. While this export was being built, the C2 check was found to point at the supporting evidence patterns belonging to two other checks rather than its own. It was corrected the same day. No other check’s mapping was re-audited in that pass, so this was a single incidental fix rather than a sweep, and we say that rather than implying a full audit.
5. Two cells once counted a check as fired with no quoted clause recorded against them. The Chandler and Orlando rows each carried a fired cell with no supporting quote. As of 2 October 2026 all four of those cells — Chandler’s C3 and C9, Orlando’s C6 and C9 — carry quoted clauses with section references. There is now no cell in the dataset that reads fired with an empty quote.
6. Some quotes are close paraphrases or summaries, not the sentence itself. Each quote reproduces the text recorded at scoring time. Where that record captured a short description of the clause rather than the sentence, the cell holds the description. Nothing was reconstructed or reworded to read more like a quotation.
7. Section references are often missing, and none has been invented. A _section cell reads “not recorded” wherever the original scoring record did not capture one. We would rather publish a gap than a plausible-looking section number.
8. One document was retrieved through a third-party rendering. The Home Interiors & Gifts contract with PricewaterhouseCoopers was read from a third party’s hosted rendering of the underlying SEC exhibit; the specific filing URL could not be located, so completeness rests on the document’s own internal consistency — a dated signature block and a sequential deliverable and fee schedule — rather than on a second-source fetch. Its sibling private-sector documents were read directly from the filings.
9. Redaction is not the same as silence. In the NuVasive contract with IBM Global Business Services, total hours, total fee and all per-role hourly rates are redacted under an SEC confidential-treatment request, and the go-live and support section is redacted in full. Those are the filer’s own excisions, not a retrieval failure, and they are recorded as not assessable rather than as effort that does not exist.
10. Scores of 2 in this set are floors. The Citizens Property Insurance row scores 2 with its governing exhibits absent; the Warnaco row scores 2 with four of the seven standing checks not assessable after four exhibits of a very large filing could not be retrieved. Read both as the least the document can be shown to do, not as a clean contract.
The dataset is the evidence. The analysis is separate, and linked, so you can disagree with the second without re-collecting the first.
Who pays: what public ERP implementation contracts commit the buyer to. Eight findings with verbatim clauses, the score distribution and median, the C3 severity split, and the corrections.
Read the benchmarkIndependent Enterprise AI Counsel for companies running ERP. We do not implement, resell, or take money from any software vendor or systems integrator.
The firm