Fork me on GitHub

Template servicelevelagreement@0.0.1

A service level agreement that gives invoice credit based on service availability.

Download Archive

Model Dependencies

  • None


1	Definitions

1.1	In this Schedule:

Business Day	means any day which is not a Saturday, Sunday or a public or bank holiday in England;

Change Control Procedure	the procedure described in Change Control;

month	means calendar month;

Service Credits	means the credits which become due to the Customer where the Service Levels are not achieved as set out in paragraph 3 and the Annex; and

Service Levels	means the service levels set out in the Annex.

2	Service levels

2.1	The Supplier shall provide the Services so as to meet or exceed the Service Levels set out in this Schedule.

2.2	Service Levels may be added, deleted, or modified by the parties at any time during the Term, in accordance with the Change Control Procedure. For the avoidance of doubt, the Supplier shall not withhold or delay its consent to any changes to the Service Levels that are required to achieve a fair, accurate and consistent measurement of the Supplier’s performance in delivering the Services.

3	Service credits

3.1	If the Supplier fails to meet or exceed a Service Level, the Customer shall be entitled to a Service Credit in accordance with the provisions of this paragraph 3.

3.2	Service Credits shall be applied as a deduction against the Customer’s next monthly invoice or, if there are insufficient charges to deduct from, shall be paid to the Customer within 30 days.

3.3	The amount of Service Credits credited (and/or paid) to the Customer with respect to all Service Level defaults occurring in a single month under this Agreement shall not exceed: 10%.

3.4	The amount of Service Credits credited (and/or paid) to the Customer with respect to all Service Level defaults occurring in any 12–month period under this Agreement shall not exceed: 10%.

3.5	The Supplier shall not charge the Customer for any work carried out by it in connection with remedying a Service Level default.

3.6	Where a sum is expressed to be payable as a Service Credit the parties agree that:

3.6.1	the Customer has a legitimate interest in ensuring that it can recover losses suffered as a result of the Supplier’s failure to meet the relevant Service Level; and

3.6.2	the Service Credits set out in this Agreement are not out of all proportion to such interest.

3.7	Any Service Credits that are deducted and/or paid are not to be taken into account for the purposes of the limitation on liability provisions set out in Limitation of liability.

3.8	The payment of Service Credits is without prejudice to any other remedy available to the Customer, whether under this Agreement, common law, or in equity.

4	Exclusions

4.1	The Supplier shall be relieved of its liability in respect of any failure to provide the Services to the Service Levels if, and to the extent that, such failure is wholly and directly attributable to any of the following:

4.1.1	a failure by the Customer to observe any of its obligations under this Agreement which have a direct impact upon the Supplier’s provision of the Services; or

4.1.2	a Force Majeure event.

5	Reporting

5.1	The Supplier shall monitor its performance against the Service Levels and, within ten Business Days after the end of each month, shall prepare and submit to the Customer a report showing in detail its performance against the Service Levels in that previous month.

5.2	The Supplier shall, at the Customer’s request, provide details of its performance against the Service Levels more frequently than monthly if the Customer, acting reasonably, has a concern as to service quality or any other aspect of the Supplier’s performance of this Agreement.

5.3	A failure by the Supplier to monitor the Services or to provide the Customer with a monthly report or other details in accordance with this Schedule shall be deemed to be a Service Level default and the Supplier will be deemed to have failed to achieve those Service Levels in respect of which the Customer has failed to report.

Annex 1—Service levels

| Service Level Description     | Target service level      | Service credit 
| Priority 1                    | 99.8%                      |     2%
| Priority 1                    | 98.0%                       |     3%



Service Level Agreement

This is a smart legal clause that conforms to the Accord Protocol Template Specification, the protocol is managed by the open-source community of the Accord Project. The clause can be parsed and executed by the Cicero engine.


A service level agreement that gives invoice credit based on service availability.

This clause contains:

Running this clause

On your own machine

  1. Download the Cicero template library

  2. Unzip the library with your favourite tool

  3. Then from the command-line, change the current directory to the folder containing this file.

cd servicelevelagreement
  1. With the Cicero command-line tool:
cicero execute --template ./ --sample ./sample.txt --request ./request.json --state ./state.json

Note, all of the command-line flags (like --template) are optional.

Alternatively you can use the simpler command below if you want to use all of the default files.

cicero execute

You should see the following output in your terminal:

mattmbp:servicelevelagreement matt$ cicero execute
18:32:39 - info: Logging initialized. 2018-05-15T22:32:39.050Z
18:32:39 - info: Using current directory as template folder
18:32:39 - info: Loading a default sample.txt file.
18:32:39 - info: Loading a single default request.json file.
18:32:39 - info: Loading a default state.json file.
18:32:39 - info: {"clause":"servicelevelagreement@0.0.1-58c0a82b311c6ec6c1c3a994b13994fd11f7a138fae428fe752ef04ad3477bd3","request":{"$class":"org.accordproject.servicelevelagreement.MonthSummary","monthlyServiceLevel":99.7,"monthlyCharge":10,"last11MonthCredit":0,"last11MonthCharge":0},"response":{"$class":"org.accordproject.servicelevelagreement.InvoiceCredit","monthlyCredit":0.2,"transactionId":"e74bde3f-df1d-4ced-be4c-c9bc6226ec91","timestamp":"2018-05-15T22:32:39.823Z"},"state":{"$class":"org.accordproject.common.ContractState","stateId":"org.accordproject.common.ContractState#1"},"emit":[]}

Sample Payload Data

Request, as in request.json

    "$class": "org.accordproject.servicelevelagreement.MonthSummary",
    "monthlyServiceLevel": 99.7,
    "monthlyCharge": 10,
    "last11MonthCredit": 0,
    "last11MonthCharge": 0

For the request above, you should see the following response:


Testing this clause

This clause comes with an automated test that ensures that it executes correctly under different conditions. To test the clause, complete the following steps.

You need npm and node to test a clause. You can download both from here.

This clause was tested with Node v8.9.3 and NPM v5.6.0

From the servicelevelagreement directory.

  1. Install all of the dependencies.
npm install
  1. Run the tests
npm test

If successful, you should see the following output

mattmbp:servicelevelagreement matt$ npm test

> servicelevelagreement@0.0.1 test /Users/matt/dev/accordproject/cicero-template-library/servicelevelagreement
> mocha

12:06:56 - info: Logging initialized. 2018-03-01T12:06:56.032Z

    #Service Level Agreement
      ✓ give no credit for 100% availability
      ✓ give some credit for 99.7% availability
      ✓ give more credit for 97.0% availability
      ✓ give more credit for 97.0% availability with monthly cap
      ✓ give credit capped at annual cap
      ✓ rejects bad request values

  6 passing (972ms)