An OCDS release or record package can declare one or more extensions. Extensions extend the standard, by adding new fields, new codelists or new codes to open codelists. Extensions can be brought together as profiles.

Create an extension#

Follow the instructions in the extension template.

  • Use dependencies if the extension $ref’erences another extension’s definitions.

  • Use testDependencies if the extension adds fields to another extension’s definitions.

If you are creating an extension in an OCP repository:

  • Use the Apache License 2.0

  • Include the following text in its README.md file:

    ## Issues
    Report issues for this extension in the [ocds-extensions repository](https://github.com/open-contracting/ocds-extensions/issues), putting the extension's name in the issue's title.
  • On GitHub:

The Rake tasks from standard-maintenance-scripts will report or correct issues with the above:

bundle exec rake repos:licenses ORG=open-contracting-extensions
bundle exec rake repos:readmes ORG=open-contracting-extensions
bundle exec rake fix:protect_branches ORG=open-contracting-extensions
bundle exec rake fix:lint_repos ORG=open-contracting-extensions
./manage.py set-topics

Publish an extension#

Follow the instructions in the extension registry.

Change versioned extensions#

The versioning of extensions is under discussion in a pull request. For now, see Create new versions of extensions.

Between OCDS versions, changes can be made to the ‘live’ version of a versioned extension; this can be treated as a working draft of a future version.

Report issues on extensions#

If the issue is with an OCP extension, create an issue in the ocds-extensions repository. Indicate the extension in the issue’s title, e.g. extension name: issue title.


Collecting issues in one place gives each more visibility and therefore a higher likelihood of being closed. It also helps to identify related issues across different extensions.

If the issue is with a third-party extension, refer to its documentation.

If the issue is with extensions as a whole (e.g. there is something wrong in the way the standard deals with extensions), report it on the standard repository and add the Focus - Extensions label.