Illustrative sample, not a client project
The client, plant, systems and names in this document are invented. It shows the structure and level of detail of the document you'd receive; it is not a record of work for a client.
Written scope · fixed-price project
Line 3 production and downtime dashboard
- Client
- Example Manufacturing Co. (fictional)
- Prepared by
- Webb Technologies
- Document
- Scope of work and fixed-price basis
- Status
- Illustrative sample, not a client project
1.Background and goals
Example Manufacturing Co. (“the Client”) runs a packaging line, Line 3, controlled by Allen-Bradley PLCs with Rockwell FactoryTalk View SE HMIs. Line 3's counts and states are collected in the plant's AVEVA PI (OSIsoft PI) historian. Today supervisors see live status only at the HMI, and shift reports are compiled by hand from historian trends and paper downtime logs.
This project delivers a read-only web dashboard, available on the business network, that shows Line 3's current state, counts and downtime for the current and previous shifts. The goals are:
- Supervisors and the plant manager can see Line 3's state, good and reject counts, and downtime for the current shift from a browser on the business network, without walking to the HMI.
- Shift production and downtime figures come from one agreed source, the historian, instead of being re-keyed.
- Nothing built in this project can write to a PLC, an HMI, the historian or the OPC UA server.
- The Client's IT and controls teams can run, change and extend the system after handover without us.
2.In scope
- Collector. A service on a Client-provided host in the industrial DMZ that reads Line 3 values from the DMZ PI server through PI Web API, and live line state from the existing Kepware OPC UA server, read-only. It pushes values outbound over HTTPS to the API.
- API and database. A service in the Client's AWS account that stores the collected values and serves them to the dashboard.
- Dashboard. A web application with three screens: Line status (current state, run rate against the ideal rate, good and reject counts), Shift summary (counts, downtime events and total downtime by shift) and Downtime log (each stop with its start, end and duration, filterable by shift).
- Sign-in. Single sign-on through the Client's existing identity provider, over OpenID Connect or SAML, with two roles taken from groups the Client's IT team manages: viewer and administrator.
- Infrastructure and delivery. Infrastructure defined as code (AWS CDK), deployed through a CI/CD pipeline (GitHub Actions) into separate test and production environments.
- Monitoring. Alarms for data freshness, collector errors, API errors, sign-in failures and backups.
- Documentation and handover. Runbooks, a data dictionary, architecture and security documentation, and knowledge-transfer sessions, as set out in section 11.
3.Out of scope
- Any write to PLCs, HMIs, the historian or the OPC UA server, including setpoints, alarm acknowledgements and recipe changes.
- Changes to PLC logic, HMI screens, historian configuration or tag naming. Where a new tag is needed, the Client's controls team creates it.
- Operator entry of downtime reasons. A candidate for a later phase, quoted separately.
- An OEE figure. The dashboard shows the inputs (state, counts, downtime); an agreed OEE calculation can be added later as a change.
- Lines other than Line 3. The design allows more lines to be added (see the “Add a tag or a line” runbook), but configuring them is a separate change.
- Mobile apps, offline use, and access from outside the Client's network.
- Integration with any other business system.
- Hardware, network changes and software licenses. We specify what is needed; the Client's teams make the changes and hold the licenses.
- Support, maintenance or new features after handover. Available as separately quoted work.
4.Systems and data sources
Systems this project connects to, the access it needs and who owns each one on the Client's side
- System
- AVEVA PI (OSIsoft PI) historian, DMZ replica
- Role in this project:
- Source of Line 3 counts and state history
- Access needed:
- PI Web API, read-only account limited to the Line 3 points in the data dictionary
- Owner (Client):
- Controls engineering
- System
- Kepware OPC UA server
- Role in this project:
- Source of live line state
- Access needed:
- OPC UA with SignAndEncrypt; read-only user scoped to the Line 3 tag group
- Owner (Client):
- Controls engineering
- System
- SQL Server (existing plant database)
- Role in this project:
- Shift calendar and ideal rates per product
- Access needed:
- Read-only login to two named views, reached from the Client's AWS account over its site-to-site VPN
- Owner (Client):
- Plant IT
- System
- Rockwell FactoryTalk View SE (existing HMIs)
- Role in this project:
- Unchanged; its tag names are the reference for the data dictionary
- Access needed:
- None
- Owner (Client):
- Controls engineering
- System
- Identity provider (Client's existing)
- Role in this project:
- Sign-in for dashboard users
- Access needed:
- An SSO app registration and two groups
- Owner (Client):
- IT
- System
- AWS account (Client-owned)
- Role in this project:
- Hosts the API, database, dashboard and monitoring
- Access needed:
- A deployment role for the pipeline; named user access for us during the project
- Owner (Client):
- IT
- System
- GitHub organization (Client-owned)
- Role in this project:
- Repositories and CI/CD pipeline
- Access needed:
- Member access for us during the project
- Owner (Client):
- IT
| System | Role in this project | Access needed | Owner (Client) |
|---|---|---|---|
| AVEVA PI (OSIsoft PI) historian, DMZ replica | Source of Line 3 counts and state history | PI Web API, read-only account limited to the Line 3 points in the data dictionary | Controls engineering |
| Kepware OPC UA server | Source of live line state | OPC UA with SignAndEncrypt; read-only user scoped to the Line 3 tag group | Controls engineering |
| SQL Server (existing plant database) | Shift calendar and ideal rates per product | Read-only login to two named views, reached from the Client's AWS account over its site-to-site VPN | Plant IT |
| Rockwell FactoryTalk View SE (existing HMIs) | Unchanged; its tag names are the reference for the data dictionary | None | Controls engineering |
| Identity provider (Client's existing) | Sign-in for dashboard users | An SSO app registration and two groups | IT |
| AWS account (Client-owned) | Hosts the API, database, dashboard and monitoring | A deployment role for the pipeline; named user access for us during the project | IT |
| GitHub organization (Client-owned) | Repositories and CI/CD pipeline | Member access for us during the project | IT |
Client systems on the left: the AVEVA PI historian's DMZ replica, read through PI Web API, and the Kepware OPC UA server, read with SignAndEncrypt and a read-only user, both feed the Line 3 collector in the industrial DMZ, built in this project. The collector pushes over HTTPS to the API and database in the Client AWS account. SQL Server's two named views are read into the API and database through a read-only login, over the Client's site-to-site VPN between the business network and its AWS account. The API feeds the dashboard, which has viewer and administrator roles; users sign in through the Client's identity provider, with single sign-on. Rockwell FactoryTalk View SE HMIs are unchanged and have no connection to the project.
5.Assumptions and dependencies
- The Client provides the access in section 4 before the build phase starts. If access arrives later, the schedule moves with it; the price changes only if the scope does.
- The Client's controls team reviews and signs off the data-flow design (phase 1) before any software connects to the OPC UA server or the historian.
- A PI server replica, or another read-only historian endpoint, is available in the DMZ. If it isn't, sections 4 and 13 are revisited before the build starts.
- The Client's network team opens the firewall rules listed in the design document. We don't change network equipment.
- A site-to-site VPN (or AWS Direct Connect) links the business network to the Client's AWS account, set up by the Client's network team.
- The Client names one product owner who can answer questions and accept deliverables, and one controls engineer for tag questions.
- The historian is the source of truth. Where the dashboard and the historian disagree, the dashboard is treated as wrong and, before acceptance, is fixed under this scope.
- The test environment reads the same historian points as production. No plant simulator is built.
- Hosting, license and other third-party costs are billed to the Client's own accounts.
6.Deliverables
- Source code for the collector, API and dashboard, with automated tests, in the Client's repositories.
- Infrastructure as code (AWS CDK) for the test and production environments.
- A CI/CD pipeline (GitHub Actions) that tests, builds and deploys every change, authenticating to AWS with OIDC so no AWS keys are stored.
- An architecture and data-flow document for the Client's security review, including every firewall rule with its source, destination, port and purpose.
- A data dictionary covering every tag and field the dashboard uses.
- Runbooks: deploy, roll back, rotate credentials, add a tag or a line, and respond to each alert.
- Knowledge-transfer sessions, listed in section 11.
7.Acceptance criteria
The system is accepted when every criterion below passes in production. Each one is checked together with the Client's product owner.
Acceptance criteria and how each one is checked
- Ref
- AC1
- Criterion:
- A change in line state appears on the Line status screen within 30 seconds.
- How it is checked:
- The controls engineer observes a state change at the HMI and times the dashboard.
- Ref
- AC2
- Criterion:
- Good and reject counts for a completed shift equal the historian's totals for the same shift.
- How it is checked:
- Three completed shifts compared with PI totals; all must match.
- Ref
- AC3
- Criterion:
- Every stop of 2 minutes or longer appears in the Downtime log, with start and end times within one minute of the historian's.
- How it is checked:
- The log compared with PI line-state history for three completed shifts.
- Ref
- AC4
- Criterion:
- Users outside the two groups cannot sign in, and viewers cannot open administrator pages.
- How it is checked:
- Tested with three accounts: no group, viewer, administrator.
- Ref
- AC5
- Criterion:
- No component can write to a PLC, HMI, the historian or the OPC UA server.
- How it is checked:
- The controls team reviews account permissions and the collector's code; a write attempted with the collector's credentials is refused.
- Ref
- AC6
- Criterion:
- If the collector stops, the dashboard marks its data as stale and an alert reaches the named recipients within 10 minutes.
- How it is checked:
- The collector is stopped in the test environment.
- Ref
- AC7
- Criterion:
- Each screen loads in under 3 seconds on a supervisor's PC on the business network.
- How it is checked:
- Timed on two supervisor PCs.
- Ref
- AC8
- Criterion:
- The Client's team deploys a change and rolls it back using only the runbooks.
- How it is checked:
- Done during knowledge transfer, observed by both parties.
| Ref | Criterion | How it is checked |
|---|---|---|
| AC1 | A change in line state appears on the Line status screen within 30 seconds. | The controls engineer observes a state change at the HMI and times the dashboard. |
| AC2 | Good and reject counts for a completed shift equal the historian's totals for the same shift. | Three completed shifts compared with PI totals; all must match. |
| AC3 | Every stop of 2 minutes or longer appears in the Downtime log, with start and end times within one minute of the historian's. | The log compared with PI line-state history for three completed shifts. |
| AC4 | Users outside the two groups cannot sign in, and viewers cannot open administrator pages. | Tested with three accounts: no group, viewer, administrator. |
| AC5 | No component can write to a PLC, HMI, the historian or the OPC UA server. | The controls team reviews account permissions and the collector's code; a write attempted with the collector's credentials is refused. |
| AC6 | If the collector stops, the dashboard marks its data as stale and an alert reaches the named recipients within 10 minutes. | The collector is stopped in the test environment. |
| AC7 | Each screen loads in under 3 seconds on a supervisor's PC on the business network. | Timed on two supervisor PCs. |
| AC8 | The Client's team deploys a change and rolls it back using only the runbooks. | Done during knowledge transfer, observed by both parties. |
Acceptance is judged against these criteria only. Anything not listed here is not a reason to withhold acceptance, and is not in the price; it can be raised as a change (section 9).
8.Milestones
Work runs in five phases. Each phase ends on a written exit criterion, and working software is reviewed with the Client in the test environment throughout phases 2 and 3.
Project phases and the exit criterion that closes each one
- Phase
- 1. Access and design
- What happens:
- Access set up. Data-flow design, firewall rules and data dictionary drafted and reviewed with IT and controls.
- Exit criterion:
- Written sign-off of the design by the Client's controls and IT leads.
- Phase
- 2. Data path
- What happens:
- Collector and API built and deployed to test. Values compared with the historian.
- Exit criterion:
- AC2 and AC3 pass in test.
- Phase
- 3. Dashboard
- What happens:
- Screens built and reviewed with supervisors in test. Sign-in and roles in place.
- Exit criterion:
- Product owner approves the screens; AC4 passes.
- Phase
- 4. Acceptance
- What happens:
- Full acceptance run in test, then deployment to production.
- Exit criterion:
- All acceptance criteria pass in production.
- Phase
- 5. Handover
- What happens:
- Documentation delivered, knowledge-transfer sessions held, access handed over.
- Exit criterion:
- Handover checklist signed.
| Phase | What happens | Exit criterion |
|---|---|---|
| 1. Access and design | Access set up. Data-flow design, firewall rules and data dictionary drafted and reviewed with IT and controls. | Written sign-off of the design by the Client's controls and IT leads. |
| 2. Data path | Collector and API built and deployed to test. Values compared with the historian. | AC2 and AC3 pass in test. |
| 3. Dashboard | Screens built and reviewed with supervisors in test. Sign-in and roles in place. | Product owner approves the screens; AC4 passes. |
| 4. Acceptance | Full acceptance run in test, then deployment to production. | All acceptance criteria pass in production. |
| 5. Handover | Documentation delivered, knowledge-transfer sessions held, access handed over. | Handover checklist signed. |
Milestone dates: stated here in the real document, agreed with the Client before work starts.
9.Change process
- Either party raises a change in writing: what is needed and why.
- We reply in writing with its effect on scope, price and schedule, or confirm that it has none.
- Nothing changes until the Client's product owner approves it in writing. Approved changes are added to this document as numbered amendments.
- A change that isn't approved isn't built, and the original scope and price stand.
Until the system is accepted, fixing something that fails an acceptance criterion in section 7 is not a change. It is covered by the fixed price.
10.Security and IT review
The following are prepared for the Client's IT, controls and security teams during phase 1, before any connection to plant systems:
- A data-flow diagram showing every connection, its direction and the zone boundary it crosses. Nothing in AWS or on the business network opens a connection into the OT network. The only connection into the OT network is the collector's read-only OPC UA session to the Kepware server, opened from the DMZ on a single firewall rule the Client's network team controls.
- A firewall rule list: source, destination, port, protocol and purpose for each rule.
- Service accounts: one per system, read-only, named and documented. No shared or personal credentials in the running system.
- OPC UA security: SignAndEncrypt mode, with certificate trust set up by the Client's controls team.
- Secrets kept in AWS Secrets Manager (and, for the collector, the DMZ host's protected store), never in code, configuration files, tickets or email.
- Sign-in only through the Client's identity provider. The dashboard is reachable only from the Client's network addresses.
- Encryption in transit on every connection, and at rest for stored data and backups.
- Logging of sign-ins, deployments and collector errors to CloudWatch, retained according to the Client's policy.
- Dependency scanning in the pipeline, with findings reported to the Client before each release.
- Data classification: production values and user sign-in names only. No other personal data is stored.
- Answers to the Client's security questionnaire, and an architecture walkthrough for the security team.
11.Handover
Handover is part of the fixed price. It is complete when the Client's team has deployed a change, rolled it back and responded to a test alert themselves, using only the documentation. It includes:
- Everything in section 6, confirmed in the Client's repositories and accounts.
- Knowledge-transfer sessions: architecture walkthrough, code tour, supervised deployment, rollback and recovery, and a test incident.
- Access and credentials: every account confirmed as the Client's, secrets rotated, and our access removed or reduced to whatever support is agreed.
The full contents are shown in the sample handover package for this same illustrative project.
12.Ownership
- The Client owns all code, infrastructure definitions, documentation and data produced under this scope. There is no license fee and no lock-in.
- Everything is built in the Client's repositories and AWS account. Nothing runs in accounts we control.
- Open-source components remain under their own licenses, which are listed in each repository.
- Confidentiality is covered by the NDA signed before this engagement.
13.Price and what it covers
Fixed price: stated here in the real document.
The fixed price covers everything in sections 2, 6, 7 and 11: design, build, testing, deployment to test and production, documentation, knowledge transfer, handover, and fixing anything that fails an acceptance criterion before acceptance.
It does not cover:
- Anything listed as out of scope in section 3.
- Approved changes under section 9, each priced before it starts.
- Hosting, software licenses and other third-party costs, billed directly to the Client's accounts.
- Support, maintenance or new features after handover, quoted separately if wanted.
Invoicing schedule and payment terms: stated here in the real document.
14.Approval
Nothing is built until this scope is accepted. Signing below accepts the scope and the fixed price stated in section 13.
For the Client
For Webb Technologies