Working with a contractor
How to scope a SyteLine report or change request for a fixed price (without getting burned)
Applies to: Any SyteLine or CloudSuite Industrial team requesting reports, data fixes or form changes, internally or from a contractor.
Short answer
A SyteLine request can be priced fixed when it states the outcome (who uses it and what decision it supports), the exact output (fields, filters, sort, format, with an example), where the data comes from (the form or report people use today), the version and environment, how it will be tested (who signs off and against what), and what is out of scope. Requests that say "a report showing late orders" get hourly quotes and surprise invoices. Requests that say "this field, from this form, for these users, signed off by this person against last month's data" get a fixed price.
Why most SyteLine requests can't be fixed-priced
A contractor can only fix a price on work they can see the edges of. The usual problems:
- The outcome is missing. "A report of late POs" could be one DataView or three linked reports with buyer escalation.
- The fields are guessed. "Add the PO number to the invoice" might mean the customer's PO on the order header, or a PO per line.
- "Done" is undefined. Without a sign-off person and test data, the work is finished when someone stops asking for changes.
- Hidden scope. "Can it also email?" and "can it run for all sites?" arrive after the price is agreed.
None of this is anyone's fault. It's simply what happens when a request is written in one line in a ticketing system.
The eight things a good request includes
- Who and why. Who will use it, how often, and what decision or task it supports.
- The output. Exact fields, filters, grouping, sort order and totals. Attach a spreadsheet mock-up or a marked-up screenshot. A picture removes most of the ambiguity.
- Where the data lives today. The form or report people currently use to find this information. If a user can see it on a form, the data path is usually clear.
- Format and delivery. Screen, PDF, Excel, printed, or emailed. Run on demand or scheduled.
- Environment. SyteLine version, on-premises or cloud, single or multi-site, and whether a test environment with recent data exists.
- Access. What the contractor can access: read-only database, test environment, a user account with specific permissions.
- Acceptance. Who signs off, and against what: for example, "Finance compares totals with last month's manual spreadsheet."
- Out of scope. Say it plainly: "Not included: email delivery, other sites, historical data before 2024."
Copy-ready request template
Title: [one line, e.g. "Late purchase orders by buyer, daily"]
Who / why:
Used by: [role(s)] How often: [daily / weekly / month-end]
Purpose: [the decision or task it supports]
Output:
Fields: [list, in order]
Filters: [e.g. open PO lines, due date before today]
Group / sort / totals: [...]
Mock-up attached: [yes/no]
Data today:
Users currently find this on: [form or report name]
Format and delivery:
[screen / PDF / Excel / printed / emailed]
[on demand / scheduled: when]
Environment:
SyteLine version: [ ] On-prem / cloud: [ ] Sites: [ ]
Test environment with recent data: [yes/no]
Access for the developer:
[read-only SQL / test environment login / VPN / screen share]
Acceptance:
Signed off by: [name]
Test: [compare with ..., using data for ...]
Out of scope:
[...]
What a fixed quote should come back with
A good fixed-price quote from any contractor mirrors your request:
- The deliverable restated in their words, so you can see they understood it.
- The approach, for example "a DataView on purchase order lines" or "a copy of the standard report with two added fields."
- Assumptions, such as "test environment has data less than one month old."
- How many rounds of changes are included.
- What's excluded, and what an addition would cost.
- When it'll be delivered for testing.
If the quote doesn't restate the deliverable, ask for that before agreeing. It's the cheapest moment to catch a misunderstanding.
Warning signs of a scope that will blow out
- The request names a report but nobody can say who uses it.
- "It should work like the old system." Ask for the old output, an actual file, not a description.
- The data doesn't exist anywhere in SyteLine yet. That's a process or data-capture change, not a report.
- Multiple departments are expected to sign off. Pick one owner.
- "And it should be fast." Fine, but say what fast means: under 30 seconds for a month of data, say.
Splitting big requests
When a request is too large to see the edges of, split it:
- A small, fixed-price discovery step: look at the data, confirm the fields exist, produce a mock-up.
- A fixed price for the build, quoted from the discovery output.
You pay a little for certainty up front and avoid a large, open-ended bill later. Most medium-sized backlog items don't need this. They need the eight points above.
FAQ
How much does a SyteLine report cost?
It depends on the type. Changing a standard report or building a DataView is usually small. A new customer-facing document with exact layout is larger. A clear request with the eight points above is the fastest way to get a firm number.
What should I send a SyteLine contractor to get a quote?
Who uses it and why, the exact output with a mock-up, where the data appears today, format and delivery, version and environment, access, who signs off, and what's out of scope.
Why do ERP consultants quote hourly?
Usually because the request doesn't define its edges. A well-scoped request can be priced fixed.
What does "done" mean for a SyteLine report request?
The named owner has tested it in the test environment against agreed data and signed it off. Write that down before work starts.
At Clear Cutover every request is quoted this way: a fixed price in writing, agreed before work starts. Send your backlog and you'll have a quote within one business day.