Estimating integration work
This page is for integrators and account managers who quote integration projects. It gives a way to break the work down and the factors that move the number. It contains no day rates or reference effort: those depend on your team and market. The general guide to estimating Exponential projects is Estimating and scoping with extensions.
Contents
- Estimate per flow
- Factors that drive effort
- Work that is often forgotten
- An estimate worksheet
- Fixed price or time and material
Estimate per flow
A flow is one kind of data moving in one direction between two systems ("ERP products into Exponential", "form leads to the CRM"). Estimate each flow with the same work items:
| Work item | Contains |
|---|---|
| Analysis and specification | Mapping, keys, removal policy, errors, monitoring; the interface specification |
| Content model | Classes, attributes, sections, roles (when the flow brings new content) |
| Client of the other system | Authentication, calls, paging, error handling, a test double |
| Transformation | Mapping code, rich text conversion, media handling |
| Exponential side | Import or sender, hooks, cronjob parts, commands, tables |
| Tests | Unit and contract tests, dry runs, the idempotency test, end-to-end |
| Operations | Monitoring check, log lines, runbook section, alert setup |
| Go-live | Initial load, rehearsal, cut-over |
Add the shared items once per project: the extension skeleton, environments, service accounts, CI, the security review, handover and hypercare.
Factors that drive effort
| Factor | Lower effort | Higher effort |
|---|---|---|
| Surface | A shipped surface fits (RSS export, xrowextract schedule, REST reads) | A new surface (a search engine plugin, an SSO handler behind a proxy) |
| Direction | One way | Both ways, with conflicts to resolve |
| Timing | Nightly batch | Near real time with an outbox and retries |
| Volume | Hundreds of records | Hundreds of thousands, with performance work |
| Data quality | Clean, validated source | Free text, duplicates, missing keys |
| The other system's API | Documented, with a test instance and a contact | Undocumented, production only, slow answers |
| Content | Plain fields | Rich text with embedded elements, relations, media, several languages |
| Identity | None | LDAP with group mapping, SSO, provisioning and de-provisioning |
| Compliance | No personal data | Personal data, payment, audit requirements |
| Environments | Development, staging and production exist | They must be built |
Rate each factor per flow (low, medium, high) and let the ratings, not intuition, decide the contingency.
Work that is often forgotten
- To do: The removal policy and its implementation.
- To do: The safety stop for truncated sources.
- To do: Re-runs and the idempotency test.
- To do: Rich text conversion and the report of unconvertible markup.
- To do: Redirects for migrated content.
- To do: Monitoring and alerts; the runbook.
- To do: Key rotation procedure and its first rotation.
- To do: Waiting for the other system's team (access, answers, fixes).
- To do: Hypercare after go-live.
- To do: Handover and operator training.
- To do: The first upgrade after go-live, if the contract covers maintenance.
An estimate worksheet
Project: <customer> integrations Version: 1 Date: <date> Author: <name>
Flow Surface Dir Timing Volume Quality API Content Rating
1 ERP products -> site cronjob + PHP API in nightly 20 000 medium good plain medium
2 Form leads -> CRM cronjob + CRM API out 5 min 50/day good good plain low
3 Staff sign-in LDAP login handler in on login 300 - - - low
Work item (per flow) Flow 1 Flow 2 Flow 3
Analysis and specification
Content model
Client of the other system
Transformation
Exponential side
Tests
Operations
Go-live
Subtotal
Shared items: extension skeleton, environments, service accounts, CI, security review, handover, hypercare
Contingency (from ratings):
Total:
Assumptions (each one a line in the statement of work):
- The customer provides test instances of the ERP and the CRM by <date>.
- The ERP export file format is as in the sample of <date>; changes are change requests.
- ...Fixed price or time and material
| Fixed price works when | Time and material is fairer when |
|---|---|
| The flows are specified and the other systems are known | The other system's API is unknown or still changing |
| Data quality was measured on real data | Data quality is unknown |
| The customer delivers access and answers on time (written down) | Several third parties are involved |
A common split: discovery and specification at time and material, the build at a fixed price based on the specification, hypercare and operations as a service. Whatever the model, write the assumptions into the statement of work (Statements of work for integrations).
Related pages
- Estimating and scoping with extensions
- Integration discovery worksheet
- Integration project playbook
- Pre-sales support for partners
- Free documentation: this page is free to copy, translate and improve under the GNU FDL 1.3.
Become an Exponential Partner
Partners share their information, provide funding, contribute back and develop the products with us, and that is how Exponential grows. A partner website and dashboard are planned for mid-2027: please become a partner today to speed up our growth rate and land new features faster.