Framework agreements

0 - What is a framework agreement?

A framework agreement is a contract signed by a supplier. On the Digital Marketplace, this is currently a PDF that the supplier uploads to their account, after which it can be countersigned by a CCS Admin to complete the contract.

Once a supplier has been awarded a place on a framework, they must sign and return their framework agreement in order to sell their services to public sector buyers. If they do not, then the supplier’s services may be suspended from the platform (i.e. removed from search results).

1 - Creating agreement files

Agreement files are usually created just before the standstill period of a framework. A developer runs a script to generate the PDFs from the template in the agreements repository, and upload them to the correct S3 bucket.

See Generating framework agreements for more information on this process.

The generated agreement file contains:

  • the supplier’s registered name
  • the supplier’s registered address
  • the supplier’s company registration number (Companies House number or other number)
  • the lots on which the supplier made a successful application
  • the framework ‘agreement version’ e.g. RM1557.1

If there is a mistake on the supplier’s details and a new PDF needs to be generated, the script can be run with either a single supplier ID or a list of supplier IDs, and the documents can be uploaded manually by a developer to S3.

2 - Signing an agreement file

During standstill, a supplier receives an email saying that their agreement is ready to download, and a link to the upload page, e.g.

They can also navigate to this URL by logging into their account and following the links, which will be visible up until their agreement has been uploaded.

As well as uploading the signed PDF, the supplier must provide details of the person signing (their name, role and email address). These details are stored in the database, along with the path to the S3 file, as a FrameworkAgreement object (visible in the API at /agreements/<agreement_id>).

If the supplier makes a mistake and needs to upload a new agreement, they can go directly to the upload page and try again. This will create a new FrameworkAgreement. The old documents will still be present in the S3 bucket.

3 - Countersigning an agreement

Once a supplier has signed and uploaded their agreement, it is visible in the admin to CCS Sourcing users (the PDF is displayed inside an <embed> tag, alongside the signer’s details).

The Sourcing team then review the signed PDFs and approve them for countersigning. They can also withdraw this approval.

Each night the generate-and-upload-countersigned-signature-pages Jenkins job does the following:

  • checks for any newly approved agreements
  • generates the ‘countersigned’ PDF (using a copy of an approved CCS signature)
  • uploads the countersigned agreement page to S3
  • sends a Notify email to the suppliers that the countersigned agreement is ready to download in their account.


If you are thinking ‘this doesn’t seem like an ideal digital solution’ then you are not alone. Our Contract Variation process involves no PDFs or scanning, and should be referred to for any future work around contract signing.

4 - Suspending suppliers without an agreement

Suppliers are usually given a couple of weeks to return their signed framework agreement, after which CCS may choose to suspend the supplier from the framework.

CCS Category admins have the ability to suspend all the services for a supplier on a particular framework. There is also a script to bulk-suspend a list of given suppliers which can be run by a developer. This script outputs a list of email addresses, so that we can notify the suppliers they’ve been suspended (and explain how they can get un-suspended).

Once the supplier has uploaded their frameworrk agreement, they need to get in touch with the CCS Category team, who can unsuspend their services. We don’t unsuspend suppliers automatically, as the CCS Sourcing team need to approve the new agreement for countersigning first.