Repository: open-contracting/ocdskit

Issue:
split-project-packages
I see a draft branch, so logging as an issue. https://github.com/open-contracting/ocdskit/tree/split-project-packages

Discussion:

Patch:
diff --git a/docs/changelog.rst b/docs/changelog.rst
index ab45e63..51cbad6 100644
--- a/docs/changelog.rst
+++ b/docs/changelog.rst
@@ -1,6 +1,21 @@
 Changelog
 =========
 
+0.2.16 (2020-10-06)
+-------------------
+
+Fixed
+~~~~~
+
+-  ``upgrade``: If a party's ``roles`` field isn't a list of strings, no error occurs.
+
+Added
+~~~~~
+
+New CLI commands:
+
+-  ``split-project-packages``
+
 0.2.15 (2020-09-30)
 -------------------
 
diff --git a/docs/cli.rst b/docs/cli.rst
index 2df9036..3d68ee0 100644
--- a/docs/cli.rst
+++ b/docs/cli.rst
@@ -22,6 +22,7 @@ For exploring JSON data, consider using ``jq``. See our tips on using :ref:`jq <
    :maxdepth: 2
 
    cli/ocds
+   cli/oc4ids
    cli/schema
    cli/generic
    cli/examples
diff --git a/docs/cli/oc4ids.rst b/docs/cli/oc4ids.rst
new file mode 100644
index 0000000..fdf461c
--- /dev/null
+++ b/docs/cli/oc4ids.rst
@@ -0,0 +1,33 @@
+OC4IDS Commands
+===============
+
+Optional arguments for all commands are:
+
+* ``--encoding ENCODING`` the file encoding
+* ``--ascii`` print escape sequences instead of UTF-8 characters
+* ``--pretty`` pretty print output
+* ``--root-path ROOT_PATH`` the path to the items to process within each input
+
+The inputs can be `concatenated JSON <https://en.wikipedia.org/wiki/JSON_streaming#Concatenated_JSON>`__ or JSON arrays.
+
+Handling edge cases
+-------------------
+
+See the guidance for :ref:`handling-edge-cases` in OCDS. You can use the same approaches with OC4IDS data.
+
+.. _split-project-packages:
+
+split-project-packages
+----------------------
+
+Reads project packages from standard input, and prints smaller project packages for each.
+
+Mandatory positional arguments:
+
+* ``size`` the number of projects per package
+
+::
+
+    cat tests/fixtures/oc4ids/project_package.json | ocdskit split-project-packages 1 | split -l 1 -a 4
+
+The ``split`` command will write files named ``xaaaa``, ``xaaab``, ``xaaac``, etc. Don't combine the OCDS Kit ``--pretty`` option with the ``split`` command.
diff --git a/docs/cli/ocds.rst b/docs/cli/ocds.rst
index 7dc0343..c6aa84f 100644
--- a/docs/cli/ocds.rst
+++ b/docs/cli/ocds.rst
@@ -14,9 +14,13 @@ The inputs can be `concatenated JSON <https://en.wikipedia.org/wiki/JSON_streami
 
    An error is raised if the JSON is malformed or if the ``--encoding`` is incorrect.
 
+.. _handling-edge-cases:
+
 Handling edge cases
 -------------------
 
+.. _large-packages:
+
 Large packages
 ~~~~~~~~~~~~~~
 
diff --git a/docs/conf.py b/docs/conf.py
index 6b49c28..fab3ecb 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -26,7 +26,7 @@ copyright = '2017, Open Contracting Partnership'
 author = 'Open Contracting Partnership'
 
 # The short X.Y version
-version = '0.2.15'
+version = '0.2.16'
 # The full version, including alpha/beta/rc tags
 release = version
 
diff --git a/ocdskit/cli/__main__.py b/ocdskit/cli/__main__.py
index 01f9d9c..de3cc68 100644
--- a/ocdskit/cli/__main__.py
+++ b/ocdskit/cli/__main__.py
@@ -24,6 +24,7 @@ COMMAND_MODULES = (
     'ocdskit.cli.commands.schema_report',
     'ocdskit.cli.commands.schema_strict',
     'ocdskit.cli.commands.set_closed_codelist_enums',
+    'ocdskit.cli.commands.split_project_packages',
     'ocdskit.cli.commands.split_record_packages',
     'ocdskit.cli.commands.split_release_packages',
     'ocdskit.cli.commands.tabulate',
diff --git a/ocdskit/cli/commands/split_project_packages.py b/ocdskit/cli/commands/split_project_packages.py
new file mode 100644
index 0000000..965e448
--- /dev/null
+++ b/ocdskit/cli/commands/split_project_packages.py
@@ -0,0 +1,19 @@
+from ocdskit.cli.commands.base import OCDSCommand
+
+
+class Command(OCDSCommand):
+    name = 'split-project-packages'
+    help = 'reads project packages from standard input, and prints many record packages for each'
+
+    def add_arguments(self):
+        self.add_argument('size', type=int, help='the number of projects per package')
+
+    def handle(self):
+        # See exploration of not reading each input into memory: https://github.com/open-contracting/ocdskit/issues/118
+        for package in self.items():
+            projects = package['projects']
+
+            for i in range(0, len(projects), self.args.size):
+                package.update(projects=projects[i:i + self.args.size])
+
+                self.print(package)
diff --git a/ocdskit/upgrade.py b/ocdskit/upgrade.py
index ac297f8..b43da8d 100644
--- a/ocdskit/upgrade.py
+++ b/ocdskit/upgrade.py
@@ -161,8 +161,8 @@ def _add_party(parties, party, role):
         other = deepcopy(parties[_id])
         roles = other.pop('roles')
         if dict(party) != dict(other):
-            logger.warning('party differs in "{}" role than in "{}" roles:\n{}\n{}'.format(
-                role, ', '.join(roles), json.dumps(party), json.dumps(other)))
+            logger.warning('party in "{}" role differs from party in {} roles:\n{}\n{}'.format(
+                role, json.dumps(roles), json.dumps(party), json.dumps(other)))
 
     if 'roles' not in parties[_id]:
         parties[_id]['roles'] = []
diff --git a/setup.py b/setup.py
index 03df944..09fa963 100644
--- a/setup.py
+++ b/setup.py
@@ -5,7 +5,7 @@ with open('README.rst') as f:
 
 setup(
     name='ocdskit',
-    version='0.2.15',
+    version='0.2.16',
     author='Open Contracting Partnership',
     author_email='data@open-contracting.org',
     url='https://github.com/open-contracting/ocdskit',


Test patch:
diff --git a/tests/commands/test_split_project_packages.py b/tests/commands/test_split_project_packages.py
new file mode 100644
index 0000000..1dec1a7
--- /dev/null
+++ b/tests/commands/test_split_project_packages.py
@@ -0,0 +1,7 @@
+from ocdskit.cli.__main__ import main
+from tests import assert_streaming
+
+
+def test_command(monkeypatch):
+    assert_streaming(monkeypatch, main, ['split-project-packages', '1'], ['oc4ids/project_package.json'],
+                     ['oc4ids/project_package_split.json'])
diff --git a/tests/commands/test_upgrade.py b/tests/commands/test_upgrade.py
index 47213e5..1a8e5df 100644
--- a/tests/commands/test_upgrade.py
+++ b/tests/commands/test_upgrade.py
@@ -39,7 +39,7 @@ def test_command_release_tenderers_amendment(monkeypatch, caplog):
     assert len(caplog.records) == 1
     assert caplog.records[0].levelname == 'WARNING'
     assert caplog.records[0].message == (
-        'party differs in "supplier" role than in "tenderer" roles:\n'
+        'party in "supplier" role differs from party in ["tenderer"] roles:\n'
         '{"name": "Acme Inc.", "identifier": {"id": 1}, "additionalIdentifiers": [{"id": "a"}], "id": "3c9756cf8983b14066a034079aa7aae4"}\n'  # noqa: E501
         '{"id": "3c9756cf8983b14066a034079aa7aae4", "name": "Acme Inc.", "identifier": {"id": 1}}'
     )
diff --git a/tests/fixtures/oc4ids/project_package.json b/tests/fixtures/oc4ids/project_package.json
new file mode 100644
index 0000000..8e2c3fb
--- /dev/null
+++ b/tests/fixtures/oc4ids/project_package.json
@@ -0,0 +1,1377 @@
+{
+  "version": "0.9",
+  "uri": "https://standard.open-contracting.org/infrastructure/0.9/en/_static/example.json",
+  "publishedDate": "2018-12-10T15:53:00Z",
+  "publisher": {
+    "name": "Open Data Services Co-operative Limited",
+    "scheme": "GB-COH",
+    "uid": "9506232",
+    "uri": "http://data.companieshouse.gov.uk/doc/company/09506232"
+  },
+  "license": "http://opendatacommons.org/licenses/pddl/1.0/",
+  "publicationPolicy": "https://standard.open-contracting.org/1.1/en/implementation/publication_policy/",
+  "projects": [
+    {
+      "id": "oc4ids-bu3kcz-m75-junctions-4-to-5-smart-motorway",
+      "updated": "2018-12-10T15:53:00Z",
+      "title": "M75 Junctions 4 to 5 upgrade smart motorway",
+      "description": "Upgrading the 5km stretch of the M75 near Birmingham Airport, between junction 4 near Patcham and junction 5 at Windlesham, to an all-lane running smart motorway.",
+      "status": "completed",
+      "period": {
+        "startDate": "2016-01-01T00:00:00Z",
+        "endDate": "2018-12-10T00:00:00Z",
+        "durationInDays": 1074
+      },
+      "sector": [
+        "transport",
+        "transport.road"
+      ],
+      "type": "expansion",
+      "relatedProjects": [
+        {
+          "id": "1",
+          "scheme": "oc4ids",
+          "identifier": "oc4ids-bu3kcz-m75-junctions-4-to-5-construction",
+          "relationship": "construction",
+          "title": "Original construction of M75 J4-5"
+        }
+      ],
+      "assetLifetime": {
+        "startDate": "2018-07-01T00:00:00Z",
+        "endDate": "2040-07-01T00:00:00Z",
+        "durationInDays": 8027
+      },
+      "locations": [
+        {
+          "id": "001",
+          "description": "M75 J4 Patcham Interchange",
+          "geometry": {
+            "type": "Point",
+            "coordinates": [
+              52.2571843,
+              -0.1163333
+            ]
+          },
+          "gazetteer": {
+            "scheme": "GEONAMES",
+            "identifiers": [
+              "2657507"
+            ]
+          },
+          "address": {
+            "streetAddress": "Patcham Interchange, New Road",
+            "locality": "Patcham",
+            "region": "Westshire",
+            "postalCode": "WS20 5TV",
+            "countryName": "UK"
+          },
+          "uri": "https://www.openstreetmap.org/node/202995"
+        },
+        {
+          "id": "002",
+          "description": "M75 J5 Windlesham interchange",
+          "geometry": {
+            "type": "Point",
+            "coordinates": [
+              52.1373584,
+              -0.1198955
+            ]
+          },
+          "gazetteer": {
+            "scheme": "osm",
+            "identifiers": []
+          },
+          "address": {
+            "streetAddress": "Windlesham Interchange, Old Road",
+            "locality": "Windlesham",
+            "region": "Westshire",
+            "postalCode": "WS21 6RZ",
+            "countryName": "UK"
+          },
+          "uri": "https://www.openstreetmap.org/node/1638915385"
+        }
+      ],
+      "budget": {
+        "amount": {
+          "amount": 40000000,
+          "currency": "GBP"
+        },
+        "requestDate": "2015-05-30T00:00:00Z",
+        "approvalDate": "2015-06-24T00:00:00Z",
+        "budgetBreakdown": [
+          {
+            "id": "1",
+            "description": "2016 budget allocation",
+            "amount": {
+              "amount": 10000000,
+              "currency": "GBP"
+            },
+            "period": {
+              "startDate": "2016-01-01T00:00:00Z",
+              "endDate": "2016-12-31T00:00:00Z"
+            },
+            "sourceParty": {
+              "name": "Motorways UK",
+              "id": "GB-GOR-XX1234"
+            }
+          },
+          {
+            "id": "2",
+            "description": "2017 budget allocation",
+            "amount": {
+              "amount": 20000000,
+              "currency": "GBP"
+            },
+            "period": {
+              "startDate": "2017-01-01T00:00:00Z",
+              "endDate": "2017-12-31T00:00:00Z"
+            },
+            "sourceParty": {
+              "name": "Motorways UK",
+              "id": "GB-GOR-XX1234"
+            }
+          },
+          {
+            "id": "3",
+            "description": "2018 budget allocation",
+            "amount": {
+              "amount": 10000000,
+              "currency": "GBP"
+            },
+            "period": {
+              "startDate": "2018-01-01T00:00:00Z",
+              "endDate": "2018-12-31T00:00:00Z"
+            },
+            "sourceParty": {
+              "name": "Motorways UK",
+              "id": "GB-GOR-XX1234"
+            }
+          }
+        ]
+      },
+      "parties": [
+        {
+          "name": "Motorways UK",
+          "id": "GB-GOR-XX1234",
+          "identifier": {
+            "scheme": "GB-GOR",
+            "legalName": "Motorways UK",
+            "id": "XX1234",
+            "uri": "https://government-organisation.register.gov.uk/records/XX1234"
+          },
+          "address": {
+            "postalCode": "LL55 4NY",
+            "countryName": "UK",
+            "streetAddress": "8 Mountain Walk",
+            "region": "Westshire",
+            "locality": "Patcham"
+          },
+          "contactPoint": {
+            "name": "Motorways Manager",
+            "email": "EX12345@motorwaysuk.gov.uk",
+            "telephone": "+44 0123 456 7890",
+            "faxNumber": "+44 0123 456 7891"
+          },
+          "roles": [
+            "procuringEntity",
+            "buyer",
+            "administrativeEntity",
+            "publicAuthority"
+          ]
+        },
+        {
+          "name": "A1 Expert Smart Moto Design",
+          "id": "GB-COH-11111111",
+          "identifier": {
+            "scheme": "GB-COH",
+            "id": "11111111",
+            "legalName": "A1 Expert Smart Moto Design Ltd",
+            "uri": "https://beta.companieshouse.gov.uk/company/11111111"
+          },
+          "address": {
+            "streetAddress": "Farm Grove, Prince Road",
+            "locality": "Patcham",
+            "region": "Westshire",
+            "postalCode": "WS18 5BW",
+            "countryName": "UK"
+          },
+          "contactPoint": {
+            "name": "Kim Designer",
+            "email": "kim.designerd@a1expertsmart.com",
+            "telephone": "+44 0123 456 7890",
+            "url": "https://www.example.com"
+          },
+          "roles": [
+            "supplier",
+            "tenderer"
+          ]
+        },
+        {
+          "name": "Motorway Design Services PLC",
+          "id": "GB-COH-12345678",
+          "identifier": {
+            "scheme": "GB-COH",
+            "id": "12345678",
+            "legalName": "Motorway Design Services PLC",
+            "uri": "https://beta.companieshouse.gov.uk/company/22222222"
+          },
+          "address": {
+            "streetAddress": "567 High Street",
+            "locality": "Mareham",
+            "region": "Eastshire",
+            "postalCode": "ES22 3TW",
+            "countryName": "UK"
+          },
+          "roles": [
+            "tenderer"
+          ]
+        },
+        {
+          "name": "Expert Motorway Supervisors Ltd",
+          "id": "GB-COH-22222222",
+          "identifier": {
+            "scheme": "GB-COH",
+            "id": "22222222",
+            "legalName": "Expert Motorway Supervisors Ltd",
+            "uri": "https://beta.companieshouse.gov.uk/company/22222222"
+          },
+          "address": {
+            "streetAddress": "9 Seaview Road",
+            "locality": "London",
+            "region": "London",
+            "postalCode": "SE1 1EZ",
+            "countryName": "UK"
+          },
+          "contactPoint": {
+            "name": "Supervisor Manager",
+            "email": "supervisor.manager@example.com",
+            "telephone": "+44 0123 456 7890",
+            "faxNumber": "+44 0123 456 7891",
+            "url": "https://www.example.com"
+          },
+          "roles": [
+            "supplier",
+            "tenderer"
+          ]
+        },
+        {
+          "name": "Concrete Motorways Construction",
+          "id": "GB-COH-33333333",
+          "identifier": {
+            "scheme": "GB-COH",
+            "id": "33333333",
+            "legalName": "Concrete Motorways Construction Ltd",
+            "uri": "https://beta.companieshouse.gov.uk/company/33333333"
+          },
+          "address": {
+            "streetAddress": "5 Example Grove",
+            "locality": "London",
+            "region": "London",
+            "postalCode": "SW1A 1AA",
+            "countryName": "UK"
+          },
+          "contactPoint": {
+            "name": "Construction Manager",
+            "email": "construction.example@example.com",
+            "telephone": "+44 0123 456 7890",
+            "faxNumber": "+44 0123 456 7891",
+            "url": "https://www.example.com"
+          },
+          "roles": [
+            "supplier",
+            "tenderer"
+          ]
+        }
+      ],
+      "publicAuthority": {
+        "name": "Motorways UK",
+        "id": "GB-GOR-XX1234"
+      },
+      "documents": [
+        {
+          "id": "consultation-1234",
+          "documentType": "x_consultationResponses",
+          "title": "M75 Junction 4 to 5 Smart Motorway. Summary of Statutory Instrument consultation responses",
+          "description": "Summary of Statutory Instrument consultation responses",
+          "url": "https://example.com/he/M75-junctions-4-to-5-smart-motorway/results/M75J4-5responsereportforstatutoryinstrument-pbamendsjune18.pdf",
+          "datePublished": "2016-05-01T00:00:00Z",
+          "dateModified": "2016-05-11T00:00:00Z",
+          "format": "application/pdf",
+          "language": "en",
+          "author": "Fred Consulter"
+        },
+        {
+          "id": "environmental-impact-5678-r4",
+          "documentType": "environmentalImpact",
+          "title": "Environmental Study Report",
+          "description": "An Environmental Study Report into the M75 Junction 4 to 5 Smart Motorway Upgrade",
+          "url": "http://example.com/roads/road-projects/M75+junctions+4+to+5++smart+motorway/M75+J4-5SM+Environmental+Study+Report.pdf",
+          "datePublished": "2016-02-10T00:00:00Z",
+          "dateModified": "2016-12-15T00:00:00Z",
+          "format": "application/pdf",
+          "author": "Jane Environment, Environment Motorway Consultants Ltd."
+        },
+        {
+          "id": "budget-approval-5678",
+          "documentType": "budgetApproval",
+          "title": "Approval of Budget for M75 J4-5 upgrade",
+          "description": "A full budget approval document for the M75 J4-5 upgrade with budgeting for design, build and supervision.",
+          "url": "http://example.com/roads/road-projects/M75+unctions+4+to+5+budget+approval.pdf",
+          "datePublished": "2015-10-01T00:00:00Z",
+          "dateModified": "2018-03-01T00:00:00Z",
+          "format": "application/pdf",
+          "author": "UK Motorways Budget Agency",
+          "pageStart": "55",
+          "pageEnd": "60",
+          "accessDetails": "Documents can be inspected in the Motoways UK Example Archive or users can register for free to access."
+        }
+      ],
+      "contractingProcesses": [
+        {
+          "id": "ocds-a1b1c1-a410a80d-adc8-11e6-9901-0019b9f3037b",
+          "summary": {
+            "ocid": "ocds-a1b1c1-a410a80d-adc8-11e6-9901-0019b9f3037b",
+            "externalReference": "2016-SMP-M75-J4_J5-design",
+            "nature": [
+              "design"
+            ],
+            "title": "Smart Motorway Design M75 J4-5",
+            "description": "Design of Smart Motorway upgrade M75 J4-5",
+            "status": "closed",
+            "tender": {
+              "procurementMethod": "limited",
+              "procurementMethodDetails": "Restricted procedure",
+              "costEstimate": {
+                "amount": 2000000,
+                "currency": "GBP"
+              },
+              "numberOfTenderers": 2,
+              "tenderers": [
+                {
+                  "name": "A1 Expert Smart Moto Design",
+                  "id": "GB-COH-11111111"
+                },
+                {
+                  "name": "Motorway Design Services PLC",
+                  "id": "GB-COH-12345678"
+                }
+              ],
+              "procuringEntity": {
+                "name": "Motorways UK",
+                "id": "GB-GOR-XX1234"
+              }
+            },
+            "suppliers": [
+              {
+                "name": "A1 Expert Smart Moto Design",
+                "id": "GB-COH-11111111"
+              }
+            ],
+            "contractValue": {
+              "amount": 1950000,
+              "currency": "GBP"
+            },
+            "contractPeriod": {
+              "startDate": "2016-06-01T00:00:00Z",
+              "endDate": "2017-07-07T00:00:00Z"
+            },
+            "finalValue": {
+              "amount": 1950000,
+              "currency": "GBP"
+            },
+            "documents": [
+              {
+                "id": "a1b1c1-tender-doc-001",
+                "documentType": "tenderNotice",
+                "title": "M72 improvements at J4-5: Tender Notice",
+                "description": "A tender notice for the design of improvements to M75 J4-5",
+                "url": "https://example.com/Published/a1b1c1-design-001.html",
+                "datePublished": "2018-12-10T16:45:00Z",
+                "format": "text/html",
+                "author": "Motorways UK"
+              }
+            ]
+          },
+          "releases": [
+            {
+              "id": "ocds-cdf-pc10008",
+              "date": "2016-04-01T00:00:00Z",
+              "tag": [
+                "tender"
+              ],
+              "url": "https://www.example.com/releases/ocds-cdf-pc10008.json"
+            },
+            {
+              "id": "ocds-cdf-pc10009",
+              "date": "2016-06-01T15:49:19Z",
+              "tag": [
+                "award"
+              ],
+              "url": "https://www.example.com/releases/ocds-cdf-pc10009.json"
+            }
+          ]
+        },
+        {
+          "id": "ocds-a1b1c1-370ad85a-097f-4b8c-adf8-09d840c7c48b",
+          "summary": {
+            "ocid": "ocds-a1b1c1-370ad85a-097f-4b8c-adf8-09d840c7c48b",
+            "externalReference": "2016-SMP-M75-J4_J5-supervision",
+            "nature": [
+              "supervision"
+            ],
+            "title": "Commercial Management and Assurance for the Motorways Upgrade Programme M75 J4-5",
+            "description": "Specialist Professional and Technical Services Framework: Commercial Management and Assurance for the Motorways Upgrade Programme M75 J4-5",
+            "status": "closed",
+            "tender": {
+              "procurementMethod": "limited",
+              "procurementMethodDetails": "Framework",
+              "costEstimate": {
+                "amount": 5000000,
+                "currency": "GBP"
+              },
+              "numberOfTenderers": 1,
+              "tenderers": [
+                {
+                  "name": "Expert Motorway Supervisors",
+                  "id": "GB-COH-22222222"
+                }
+              ],
+              "procuringEntity": {
+                "name": "Motorways UK",
+                "id": "GB-GOR-XX1234"
+              },
+              "administrativeEntity": {
+                "name": "Motorways UK",
+                "id": "GB-GOR-XX1234"
+              }
+            },
+            "suppliers": [
+              {
+                "name": "Expert Motorway Supervisors",
+                "id": "GB-COH-22222222"
+              }
+            ],
+            "contractValue": {
+              "amount": 4900000,
+              "currency": "GBP"
+            },
+            "contractPeriod": {
+              "startDate": "2017-02-24T00:00:00Z",
+              "endDate": "2018-10-10T00:00:00Z"
+            },
+            "finalValue": {
+              "amount": 4900000,
+              "currency": "GBP"
+            },
+            "documents": [
+              {
+                "id": "a1b1c1-spats-2-033-completion",
+                "documentType": "completionCertificate",
+                "title": "Completion Certificate for supervision",
+                "description": "A completion certificate for Expert Motorway Supervisors supervision of M75 J4-5",
+                "url": "https://example.com/Published/a1b1c1-spats-2-033-completion.html",
+                "datePublished": "2018-12-10T16:45:00Z",
+                "format": "text/html"
+              }
+            ]
+          },
+          "releases": [
+            {
+              "id": "ocds-a1b1c1-spats-2-033e",
+              "date": "2017-03-02T17:14:37Z",
+              "tag": [
+                "tender"
+              ],
+              "url": "https://example.com/releases/ex-a1b1c1--033e.json"
+            },
+            {
+              "id": "ocds-a1b1c1-spats-2-033f",
+              "date": "2017-05-02T17:14:37Z",
+              "tag": [
+                "award"
+              ],
+              "url": "https://example.com/releases/ex-a1b1c1--033f.json"
+            },
+            {
+              "id": "ocds-a1b1c1-spats-2-033g",
+              "date": "2017-07-02T17:14:37Z",
+              "tag": [
+                "implementation"
+              ],
+              "url": "https://example.com/Published/releases/ex-a1b1c1--033g.json"
+            },
+            {
+              "id": "ocds-a1b1c1-spats-2-033h",
+              "date": "2018-12-10T14:45:00Z",
+              "tag": [
+                "contractTermination"
+              ],
+              "url": "https://example.com/releases/ex-a1b1c1--033h.json"
+            }
+          ]
+        },
+        {
+          "id": "ocds-a1b1c1-c9b14c18-adc8-11e6-9901-0019b9f3037b",
+          "summary": {
+            "ocid": "ocds-a1b1c1-c9b14c18-adc8-11e6-9901-0019b9f3037b",
+            "externalReference": "2016-SMP-M75-J4_J5-construction",
+            "nature": [
+              "construction"
+            ],
+            "title": "Smart Motorways Programme - Construction - Package 3 - M75 J8 - 10",
+            "description": "Collaborative Delivery Framework (CDF) - Lot 3B - Construction  £10 to  £50m",
+            "status": "closed",
+            "tender": {
+              "procurementMethod": "limited",
+              "procurementMethodDetails": "Restricted procedure",
+              "costEstimate": {
+                "amount": 33000000,
+                "currency": "GBP"
+              },
+              "numberOfTenderers": 1,
+              "tenderers": [
+                {
+                  "name": "Concrete Motorways Construction",
+                  "id": "GB-COH-33333333"
+                }
+              ],
+              "procuringEntity": {
+                "name": "Motorways UK",
+                "id": "GB-GOR-XX1234"
+              }
+            },
+            "suppliers": [
+              {
+                "name": "Concrete Motorways Construction",
+                "id": "GB-COH-33333333"
+              }
+            ],
+            "contractValue": {
+              "amount": 29000000,
+              "currency": "GBP"
+            },
+            "contractPeriod": {
+              "startDate": "2017-07-07T00:00:00Z",
+              "endDate": "2018-07-01T00:00:00Z"
+            },
+            "finalValue": {
+              "amount": 35250000,
+              "currency": "GBP"
+            },
+            "documents": [
+              {
+                "id": "a1b1c1-construction-excavation-report",
+                "documentType": "physicalProgressReport",
+                "title": "Report on construction excavation",
+                "description": "A report on the construction at Junction 5 where excavation damaged a watercourse.",
+                "url": "https://example.com/Published/a1b1c1-construction-monitoring.html",
+                "datePublished": "2018-02-01T00:00:00Z",
+                "dateModified": "2018-02-11T00:00:00Z",
+                "format": "text/html",
+                "language": "en",
+                "accessDetails": "Register for document access.",
+                "author": "Motorways UK"
+              },
+              {
+                "id": "a1b1c1-construction-completion",
+                "documentType": "comletionCertificate",
+                "title": "Completion certificate for construction at M75 J4-5 upgrade",
+                "description": "Completion certificate for the construction upgrading motorway M75 Junctions 4-5.",
+                "url": "https://example.com/Published/a1b1c1-construction-completion.html",
+                "datePublished": "2018-12-10T00:00:00Z",
+                "format": "text/html",
+                "language": "en",
+                "accessDetails": "Register for document access.",
+                "author": "Motorways UK"
+              }
+            ],
+            "modifications": [
+              {
+                "id": "m27-4-5-construction-modification-001",
+                "date": "2018-04-01T15:15:00Z",
+                "description": "Construction extended for 5 months",
+                "rationale": "Excavation damaged a watercourse. Construction extended for repairs.",
+                "type": "duration",
+                "releaseID": "ocds-a1b1c1-c9b14c18-adc8-11e6-9901-0019b9f3037b-cdfpc3b005",
+                "oldContractPeriod": {
+                  "startDate": "2017-07-07T00:00:00Z",
+                  "endDate": "2018-07-01T00:00:00Z"
+                },
+                "newContractPeriod": {
+                  "startDate": "2017-07-07T00:00:00Z",
+                  "endDate": "2018-12-01T00:00:00Z"
+                }
+              },
+              {
+                "id": "m27-4-5-construction-modification-002",
+                "date": "2018-04-01T15:15:00Z",
+                "description": "Construction scope extended to include repairing a watercourse",
+                "rationale": "Excavation damaged a watercourse. Construction scope extended for repairs.",
+                "type": "scope",
+                "releaseID": "ocds-a1b1c1-c9b14c18-adc8-11e6-9901-0019b9f3037b-cdfpc3b0015"
+              },
+              {
+                "id": "m27-4-5-construction-modification-003",
+                "date": "2018-04-01T15:15:00Z",
+                "description": "Contract value increased from 29000000 to 35250000 to include repairing a watercourse",
+                "rationale": "Excavation damaged a watercourse. Construction budget extended for repairs.",
+                "type": "value",
+                "releaseID": "ocds-a1b1c1-c9b14c18-adc8-11e6-9901-0019b9f3037b-cdfpc3b0015",
+                "oldContractValue": {
+                  "amount": 29000000,
+                  "currency": "GBP"
+                },
+                "newContractValue": {
+                  "amount": 35250000,
+                  "currency": "GBP"
+                }
+              }
+            ]
+          },
+          "releases": [
+            {
+              "id": "ocds-a1b1c1-c9b14c18-adc8-11e6-9901-0019b9f3037b-cdfpc3b0011",
+              "date": "2015-09-16T15:12:32Z",
+              "tag": [
+                "tender"
+              ],
+              "url": "https://example.com/Published/releases/5553-b55.json"
+            },
+            {
+              "id": "ocds-a1b1c1-c9b14c18-adc8-11e6-9901-0019b9f3037b-cdfpc3b0012",
+              "date": "2015-12-16T15:15:00Z",
+              "tag": [
+                "award"
+              ],
+              "url": "https://example.com/Published/releases/5553-b56.json"
+            },
+            {
+              "id": "ocds-a1b1c1-c9b14c18-adc8-11e6-9901-0019b9f3037b-cdfpc3b0013",
+              "date": "2015-12-16T15:15:00Z",
+              "tag": [
+                "contract"
+              ],
+              "url": "https://example.com/Published/releases/5553-b57.json"
+            },
+            {
+              "id": "ocds-a1b1c1-c9b14c18-adc8-11e6-9901-0019b9f3037b-cdfpc3b0014",
+              "date": "2015-12-16T15:15:00Z",
+              "tag": [
+                "implementation"
+              ],
+              "url": "https://example.com/Published/releases/5553-b58.json"
+            },
+            {
+              "id": "ocds-a1b1c1-c9b14c18-adc8-11e6-9901-0019b9f3037b-cdfpc3b0015",
+              "date": "2018-04-01T15:15:00Z",
+              "tag": [
+                "implementationUpdate"
+              ],
+              "url": "https://example.com/Published/releases/5553-b59.json"
+            },
+            {
+              "id": "ocds-a1b1c1-c9b14c18-adc8-11e6-9901-0019b9f3037b-cdfpc3b0016",
+              "date": "2018-12-10T09:15:00Z",
+              "tag": [
+                "contractTermination"
+              ],
+              "url": "https://example.com/Published/releases/5553-b60.json"
+            }
+          ]
+        }
+      ],
+      "completion": {
+        "endDate": "2018-12-10T00:00:00Z",
+        "endDateDetails": "Construction was delayed due to excavation problems when a watercourse was damaged.",
+        "finalValue": {
+          "amount": 42100000,
+          "currency": "GBP"
+        },
+        "finalValueDetails": "Budget increase due to construction delay.",
+        "finalScope": "Upgrade of Junctions 4 and 5 and repairs to the watercourse at Junction 5.",
+        "finalScopeDetails": "Scope was expanded to include repairs to a watercourse damaged during construction excavation."
+      }
+    },
+    {
+      "id": "oc4ids-bu3kcz-m75-junctions-4-to-5-smart-motorway",
+      "updated": "2018-12-10T15:53:00Z",
+      "title": "M75 Junctions 4 to 5 upgrade smart motorway",
+      "description": "Upgrading the 5km stretch of the M75 near Birmingham Airport, between junction 4 near Patcham and junction 5 at Windlesham, to an all-lane running smart motorway.",
+      "status": "completed",
+      "period": {
+        "startDate": "2016-01-01T00:00:00Z",
+        "endDate": "2018-12-10T00:00:00Z",
+        "durationInDays": 1074
+      },
+      "sector": [
+        "transport",
+        "transport.road"
+      ],
+      "type": "expansion",
+      "relatedProjects": [
+        {
+          "id": "1",
+          "scheme": "oc4ids",
+          "identifier": "oc4ids-bu3kcz-m75-junctions-4-to-5-construction",
+          "relationship": "construction",
+          "title": "Original construction of M75 J4-5"
+        }
+      ],
+      "assetLifetime": {
+        "startDate": "2018-07-01T00:00:00Z",
+        "endDate": "2040-07-01T00:00:00Z",
+        "durationInDays": 8027
+      },
+      "locations": [
+        {
+          "id": "001",
+          "description": "M75 J4 Patcham Interchange",
+          "geometry": {
+            "type": "Point",
+            "coordinates": [
+              52.2571843,
+              -0.1163333
+            ]
+          },
+          "gazetteer": {
+            "scheme": "GEONAMES",
+            "identifiers": [
+              "2657507"
+            ]
+          },
+          "address": {
+            "streetAddress": "Patcham Interchange, New Road",
+            "locality": "Patcham",
+            "region": "Westshire",
+            "postalCode": "WS20 5TV",
+            "countryName": "UK"
+          },
+          "uri": "https://www.openstreetmap.org/node/202995"
+        },
+        {
+          "id": "002",
+          "description": "M75 J5 Windlesham interchange",
+          "geometry": {
+            "type": "Point",
+            "coordinates": [
+              52.1373584,
+              -0.1198955
+            ]
+          },
+          "gazetteer": {
+            "scheme": "osm",
+            "identifiers": []
+          },
+          "address": {
+            "streetAddress": "Windlesham Interchange, Old Road",
+            "locality": "Windlesham",
+            "region": "Westshire",
+            "postalCode": "WS21 6RZ",
+            "countryName": "UK"
+          },
+          "uri": "https://www.openstreetmap.org/node/1638915385"
+        }
+      ],
+      "budget": {
+        "amount": {
+          "amount": 40000000,
+          "currency": "GBP"
+        },
+        "requestDate": "2015-05-30T00:00:00Z",
+        "approvalDate": "2015-06-24T00:00:00Z",
+        "budgetBreakdown": [
+          {
+            "id": "1",
+            "description": "2016 budget allocation",
+            "amount": {
+              "amount": 10000000,
+              "currency": "GBP"
+            },
+            "period": {
+              "startDate": "2016-01-01T00:00:00Z",
+              "endDate": "2016-12-31T00:00:00Z"
+            },
+            "sourceParty": {
+              "name": "Motorways UK",
+              "id": "GB-GOR-XX1234"
+            }
+          },
+          {
+            "id": "2",
+            "description": "2017 budget allocation",
+            "amount": {
+              "amount": 20000000,
+              "currency": "GBP"
+            },
+            "period": {
+              "startDate": "2017-01-01T00:00:00Z",
+              "endDate": "2017-12-31T00:00:00Z"
+            },
+            "sourceParty": {
+              "name": "Motorways UK",
+              "id": "GB-GOR-XX1234"
+            }
+          },
+          {
+            "id": "3",
+            "description": "2018 budget allocation",
+            "amount": {
+              "amount": 10000000,
+              "currency": "GBP"
+            },
+            "period": {
+              "startDate": "2018-01-01T00:00:00Z",
+              "endDate": "2018-12-31T00:00:00Z"
+            },
+            "sourceParty": {
+              "name": "Motorways UK",
+              "id": "GB-GOR-XX1234"
+            }
+          }
+        ]
+      },
+      "parties": [
+        {
+          "name": "Motorways UK",
+          "id": "GB-GOR-XX1234",
+          "identifier": {
+            "scheme": "GB-GOR",
+            "legalName": "Motorways UK",
+            "id": "XX1234",
+            "uri": "https://government-organisation.register.gov.uk/records/XX1234"
+          },
+          "address": {
+            "postalCode": "LL55 4NY",
+            "countryName": "UK",
+            "streetAddress": "8 Mountain Walk",
+            "region": "Westshire",
+            "locality": "Patcham"
+          },
+          "contactPoint": {
+            "name": "Motorways Manager",
+            "email": "EX12345@motorwaysuk.gov.uk",
+            "telephone": "+44 0123 456 7890",
+            "faxNumber": "+44 0123 456 7891"
+          },
+          "roles": [
+            "procuringEntity",
+            "buyer",
+            "administrativeEntity",
+            "publicAuthority"
+          ]
+        },
+        {
+          "name": "A1 Expert Smart Moto Design",
+          "id": "GB-COH-11111111",
+          "identifier": {
+            "scheme": "GB-COH",
+            "id": "11111111",
+            "legalName": "A1 Expert Smart Moto Design Ltd",
+            "uri": "https://beta.companieshouse.gov.uk/company/11111111"
+          },
+          "address": {
+            "streetAddress": "Farm Grove, Prince Road",
+            "locality": "Patcham",
+            "region": "Westshire",
+            "postalCode": "WS18 5BW",
+            "countryName": "UK"
+          },
+          "contactPoint": {
+            "name": "Kim Designer",
+            "email": "kim.designerd@a1expertsmart.com",
+            "telephone": "+44 0123 456 7890",
+            "url": "https://www.example.com"
+          },
+          "roles": [
+            "supplier",
+            "tenderer"
+          ]
+        },
+        {
+          "name": "Motorway Design Services PLC",
+          "id": "GB-COH-12345678",
+          "identifier": {
+            "scheme": "GB-COH",
+            "id": "12345678",
+            "legalName": "Motorway Design Services PLC",
+            "uri": "https://beta.companieshouse.gov.uk/company/22222222"
+          },
+          "address": {
+            "streetAddress": "567 High Street",
+            "locality": "Mareham",
+            "region": "Eastshire",
+            "postalCode": "ES22 3TW",
+            "countryName": "UK"
+          },
+          "roles": [
+            "tenderer"
+          ]
+        },
+        {
+          "name": "Expert Motorway Supervisors Ltd",
+          "id": "GB-COH-22222222",
+          "identifier": {
+            "scheme": "GB-COH",
+            "id": "22222222",
+            "legalName": "Expert Motorway Supervisors Ltd",
+            "uri": "https://beta.companieshouse.gov.uk/company/22222222"
+          },
+          "address": {
+            "streetAddress": "9 Seaview Road",
+            "locality": "London",
+            "region": "London",
+            "postalCode": "SE1 1EZ",
+            "countryName": "UK"
+          },
+          "contactPoint": {
+            "name": "Supervisor Manager",
+            "email": "supervisor.manager@example.com",
+            "telephone": "+44 0123 456 7890",
+            "faxNumber": "+44 0123 456 7891",
+            "url": "https://www.example.com"
+          },
+          "roles": [
+            "supplier",
+            "tenderer"
+          ]
+        },
+        {
+          "name": "Concrete Motorways Construction",
+          "id": "GB-COH-33333333",
+          "identifier": {
+            "scheme": "GB-COH",
+            "id": "33333333",
+            "legalName": "Concrete Motorways Construction Ltd",
+            "uri": "https://beta.companieshouse.gov.uk/company/33333333"
+          },
+          "address": {
+            "streetAddress": "5 Example Grove",
+            "locality": "London",
+            "region": "London",
+            "postalCode": "SW1A 1AA",
+            "countryName": "UK"
+          },
+          "contactPoint": {
+            "name": "Construction Manager",
+            "email": "construction.example@example.com",
+            "telephone": "+44 0123 456 7890",
+            "faxNumber": "+44 0123 456 7891",
+            "url": "https://www.example.com"
+          },
+          "roles": [
+            "supplier",
+            "tenderer"
+          ]
+        }
+      ],
+      "publicAuthority": {
+        "name": "Motorways UK",
+        "id": "GB-GOR-XX1234"
+      },
+      "documents": [
+        {
+          "id": "consultation-1234",
+          "documentType": "x_consultationResponses",
+          "title": "M75 Junction 4 to 5 Smart Motorway. Summary of Statutory Instrument consultation responses",
+          "description": "Summary of Statutory Instrument consultation responses",
+          "url": "https://example.com/he/M75-junctions-4-to-5-smart-motorway/results/M75J4-5responsereportforstatutoryinstrument-pbamendsjune18.pdf",
+          "datePublished": "2016-05-01T00:00:00Z",
+          "dateModified": "2016-05-11T00:00:00Z",
+          "format": "application/pdf",
+          "language": "en",
+          "author": "Fred Consulter"
+        },
+        {
+          "id": "environmental-impact-5678-r4",
+          "documentType": "environmentalImpact",
+          "title": "Environmental Study Report",
+          "description": "An Environmental Study Report into the M75 Junction 4 to 5 Smart Motorway Upgrade",
+          "url": "http://example.com/roads/road-projects/M75+junctions+4+to+5++smart+motorway/M75+J4-5SM+Environmental+Study+Report.pdf",
+          "datePublished": "2016-02-10T00:00:00Z",
+          "dateModified": "2016-12-15T00:00:00Z",
+          "format": "application/pdf",
+          "author": "Jane Environment, Environment Motorway Consultants Ltd."
+        },
+        {
+          "id": "budget-approval-5678",
+          "documentType": "budgetApproval",
+          "title": "Approval of Budget for M75 J4-5 upgrade",
+          "description": "A full budget approval document for the M75 J4-5 upgrade with budgeting for design, build and supervision.",
+          "url": "http://example.com/roads/road-projects/M75+unctions+4+to+5+budget+approval.pdf",
+          "datePublished": "2015-10-01T00:00:00Z",
+          "dateModified": "2018-03-01T00:00:00Z",
+          "format": "application/pdf",
+          "author": "UK Motorways Budget Agency",
+          "pageStart": "55",
+          "pageEnd": "60",
+          "accessDetails": "Documents can be inspected in the Motoways UK Example Archive or users can register for free to access."
+        }
+      ],
+      "contractingProcesses": [
+        {
+          "id": "ocds-a1b1c1-a410a80d-adc8-11e6-9901-0019b9f3037b",
+          "summary": {
+            "ocid": "ocds-a1b1c1-a410a80d-adc8-11e6-9901-0019b9f3037b",
+            "externalReference": "2016-SMP-M75-J4_J5-design",
+            "nature": [
+              "design"
+            ],
+            "title": "Smart Motorway Design M75 J4-5",
+            "description": "Design of Smart Motorway upgrade M75 J4-5",
+            "status": "closed",
+            "tender": {
+              "procurementMethod": "limited",
+              "procurementMethodDetails": "Restricted procedure",
+              "costEstimate": {
+                "amount": 2000000,
+                "currency": "GBP"
+              },
+              "numberOfTenderers": 2,
+              "tenderers": [
+                {
+                  "name": "A1 Expert Smart Moto Design",
+                  "id": "GB-COH-11111111"
+                },
+                {
+                  "name": "Motorway Design Services PLC",
+                  "id": "GB-COH-12345678"
+                }
+              ],
+              "procuringEntity": {
+                "name": "Motorways UK",
+                "id": "GB-GOR-XX1234"
+              }
+            },
+            "suppliers": [
+              {
+                "name": "A1 Expert Smart Moto Design",
+                "id": "GB-COH-11111111"
+              }
+            ],
+            "contractValue": {
+              "amount": 1950000,
+              "currency": "GBP"
+            },
+            "contractPeriod": {
+              "startDate": "2016-06-01T00:00:00Z",
+              "endDate": "2017-07-07T00:00:00Z"
+            },
+            "finalValue": {
+              "amount": 1950000,
+              "currency": "GBP"
+            },
+            "documents": [
+              {
+                "id": "a1b1c1-tender-doc-001",
+                "documentType": "tenderNotice",
+                "title": "M72 improvements at J4-5: Tender Notice",
+                "description": "A tender notice for the design of improvements to M75 J4-5",
+                "url": "https://example.com/Published/a1b1c1-design-001.html",
+                "datePublished": "2018-12-10T16:45:00Z",
+                "format": "text/html",
+                "author": "Motorways UK"
+              }
+            ]
+          },
+          "releases": [
+            {
+              "id": "ocds-cdf-pc10008",
+              "date": "2016-04-01T00:00:00Z",
+              "tag": [
+                "tender"
+              ],
+              "url": "https://www.example.com/releases/ocds-cdf-pc10008.json"
+            },
+            {
+              "id": "ocds-cdf-pc10009",
+              "date": "2016-06-01T15:49:19Z",
+              "tag": [
+                "award"
+              ],
+              "url": "https://www.example.com/releases/ocds-cdf-pc10009.json"
+            }
+          ]
+        },
+        {
+          "id": "ocds-a1b1c1-370ad85a-097f-4b8c-adf8-09d840c7c48b",
+          "summary": {
+            "ocid": "ocds-a1b1c1-370ad85a-097f-4b8c-adf8-09d840c7c48b",
+            "externalReference": "2016-SMP-M75-J4_J5-supervision",
+            "nature": [
+              "supervision"
+            ],
+            "title": "Commercial Management and Assurance for the Motorways Upgrade Programme M75 J4-5",
+            "description": "Specialist Professional and Technical Services Framework: Commercial Management and Assurance for the Motorways Upgrade Programme M75 J4-5",
+            "status": "closed",
+            "tender": {
+              "procurementMethod": "limited",
+              "procurementMethodDetails": "Framework",
+              "costEstimate": {
+                "amount": 5000000,
+                "currency": "GBP"
+              },
+              "numberOfTenderers": 1,
+              "tenderers": [
+                {
+                  "name": "Expert Motorway Supervisors",
+                  "id": "GB-COH-22222222"
+                }
+              ],
+              "procuringEntity": {
+                "name": "Motorways UK",
+                "id": "GB-GOR-XX1234"
+              },
+              "administrativeEntity": {
+                "name": "Motorways UK",
+                "id": "GB-GOR-XX1234"
+              }
+            },
+            "suppliers": [
+              {
+                "name": "Expert Motorway Supervisors",
+                "id": "GB-COH-22222222"
+              }
+            ],
+            "contractValue": {
+              "amount": 4900000,
+              "currency": "GBP"
+            },
+            "contractPeriod": {
+              "startDate": "2017-02-24T00:00:00Z",
+              "endDate": "2018-10-10T00:00:00Z"
+            },
+            "finalValue": {
+              "amount": 4900000,
+              "currency": "GBP"
+            },
+            "documents": [
+              {
+                "id": "a1b1c1-spats-2-033-completion",
+                "documentType": "completionCertificate",
+                "title": "Completion Certificate for supervision",
+                "description": "A completion certificate for Expert Motorway Supervisors supervision of M75 J4-5",
+                "url": "https://example.com/Published/a1b1c1-spats-2-033-completion.html",
+                "datePublished": "2018-12-10T16:45:00Z",
+                "format": "text/html"
+              }
+            ]
+          },
+          "releases": [
+            {
+              "id": "ocds-a1b1c1-spats-2-033e",
+              "date": "2017-03-02T17:14:37Z",
+              "tag": [
+                "tender"
+              ],
+              "url": "https://example.com/releases/ex-a1b1c1--033e.json"
+            },
+            {
+              "id": "ocds-a1b1c1-spats-2-033f",
+              "date": "2017-05-02T17:14:37Z",
+              "tag": [
+                "award"
+              ],
+              "url": "https://example.com/releases/ex-a1b1c1--033f.json"
+            },
+            {
+              "id": "ocds-a1b1c1-spats-2-033g",
+              "date": "2017-07-02T17:14:37Z",
+              "tag": [
+                "implementation"
+              ],
+              "url": "https://example.com/Published/releases/ex-a1b1c1--033g.json"
+            },
+            {
+              "id": "ocds-a1b1c1-spats-2-033h",
+              "date": "2018-12-10T14:45:00Z",
+              "tag": [
+                "contractTermination"
+              ],
+              "url": "https://example.com/releases/ex-a1b1c1--033h.json"
+            }
+          ]
+        },
+        {
+          "id": "ocds-a1b1c1-c9b14c18-adc8-11e6-9901-0019b9f3037b",
+          "summary": {
+            "ocid": "ocds-a1b1c1-c9b14c18-adc8-11e6-9901-0019b9f3037b",
+            "externalReference": "2016-SMP-M75-J4_J5-construction",
+            "nature": [
+              "construction"
+            ],
+            "title": "Smart Motorways Programme - Construction - Package 3 - M75 J8 - 10",
+            "description": "Collaborative Delivery Framework (CDF) - Lot 3B - Construction  £10 to  £50m",
+            "status": "closed",
+            "tender": {
+              "procurementMethod": "limited",
+              "procurementMethodDetails": "Restricted procedure",
+              "costEstimate": {
+                "amount": 33000000,
+                "currency": "GBP"
+              },
+              "numberOfTenderers": 1,
+              "tenderers": [
+                {
+                  "name": "Concrete Motorways Construction",
+                  "id": "GB-COH-33333333"
+                }
+              ],
+              "procuringEntity": {
+                "name": "Motorways UK",
+                "id": "GB-GOR-XX1234"
+              }
+            },
+            "suppliers": [
+              {
+                "name": "Concrete Motorways Construction",
+                "id": "GB-COH-33333333"
+              }
+            ],
+            "contractValue": {
+              "amount": 29000000,
+              "currency": "GBP"
+            },
+            "contractPeriod": {
+              "startDate": "2017-07-07T00:00:00Z",
+              "endDate": "2018-07-01T00:00:00Z"
+            },
+            "finalValue": {
+              "amount": 35250000,
+              "currency": "GBP"
+            },
+            "documents": [
+              {
+                "id": "a1b1c1-construction-excavation-report",
+                "documentType": "physicalProgressReport",
+                "title": "Report on construction excavation",
+                "description": "A report on the construction at Junction 5 where excavation damaged a watercourse.",
+                "url": "https://example.com/Published/a1b1c1-construction-monitoring.html",
+                "datePublished": "2018-02-01T00:00:00Z",
+                "dateModified": "2018-02-11T00:00:00Z",
+                "format": "text/html",
+                "language": "en",
+                "accessDetails": "Register for document access.",
+                "author": "Motorways UK"
+              },
+              {
+                "id": "a1b1c1-construction-completion",
+                "documentType": "comletionCertificate",
+                "title": "Completion certificate for construction at M75 J4-5 upgrade",
+                "description": "Completion certificate for the construction upgrading motorway M75 Junctions 4-5.",
+                "url": "https://example.com/Published/a1b1c1-construction-completion.html",
+                "datePublished": "2018-12-10T00:00:00Z",
+                "format": "text/html",
+                "language": "en",
+                "accessDetails": "Register for document access.",
+                "author": "Motorways UK"
+              }
+            ],
+            "modifications": [
+              {
+                "id": "m27-4-5-construction-modification-001",
+                "date": "2018-04-01T15:15:00Z",
+                "description": "Construction extended for 5 months",
+                "rationale": "Excavation damaged a watercourse. Construction extended for repairs.",
+                "type": "duration",
+                "releaseID": "ocds-a1b1c1-c9b14c18-adc8-11e6-9901-0019b9f3037b-cdfpc3b005",
+                "oldContractPeriod": {
+                  "startDate": "2017-07-07T00:00:00Z",
+                  "endDate": "2018-07-01T00:00:00Z"
+                },
+                "newContractPeriod": {
+                  "startDate": "2017-07-07T00:00:00Z",
+                  "endDate": "2018-12-01T00:00:00Z"
+                }
+              },
+              {
+                "id": "m27-4-5-construction-modification-002",
+                "date": "2018-04-01T15:15:00Z",
+                "description": "Construction scope extended to include repairing a watercourse",
+                "rationale": "Excavation damaged a watercourse. Construction scope extended for repairs.",
+                "type": "scope",
+                "releaseID": "ocds-a1b1c1-c9b14c18-adc8-11e6-9901-0019b9f3037b-cdfpc3b0015"
+              },
+              {
+                "id": "m27-4-5-construction-modification-003",
+                "date": "2018-04-01T15:15:00Z",
+                "description": "Contract value increased from 29000000 to 35250000 to include repairing a watercourse",
+                "rationale": "Excavation damaged a watercourse. Construction budget extended for repairs.",
+                "type": "value",
+                "releaseID": "ocds-a1b1c1-c9b14c18-adc8-11e6-9901-0019b9f3037b-cdfpc3b0015",
+                "oldContractValue": {
+                  "amount": 29000000,
+                  "currency": "GBP"
+                },
+                "newContractValue": {
+                  "amount": 35250000,
+                  "currency": "GBP"
+                }
+              }
+            ]
+          },
+          "releases": [
+            {
+              "id": "ocds-a1b1c1-c9b14c18-adc8-11e6-9901-0019b9f3037b-cdfpc3b0011",
+              "date": "2015-09-16T15:12:32Z",
+              "tag": [
+                "tender"
+              ],
+              "url": "https://example.com/Published/releases/5553-b55.json"
+            },
+            {
+              "id": "ocds-a1b1c1-c9b14c18-adc8-11e6-9901-0019b9f3037b-cdfpc3b0012",
+              "date": "2015-12-16T15:15:00Z",
+              "tag": [
+                "award"
+              ],
+              "url": "https://example.com/Published/releases/5553-b56.json"
+            },
+            {
+              "id": "ocds-a1b1c1-c9b14c18-adc8-11e6-9901-0019b9f3037b-cdfpc3b0013",
+              "date": "2015-12-16T15:15:00Z",
+              "tag": [
+                "contract"
+              ],
+              "url": "https://example.com/Published/releases/5553-b57.json"
+            },
+            {
+              "id": "ocds-a1b1c1-c9b14c18-adc8-11e6-9901-0019b9f3037b-cdfpc3b0014",
+              "date": "2015-12-16T15:15:00Z",
+              "tag": [
+                "implementation"
+              ],
+              "url": "https://example.com/Published/releases/5553-b58.json"
+            },
+            {
+              "id": "ocds-a1b1c1-c9b14c18-adc8-11e6-9901-0019b9f3037b-cdfpc3b0015",
+              "date": "2018-04-01T15:15:00Z",
+              "tag": [
+                "implementationUpdate"
+              ],
+              "url": "https://example.com/Published/releases/5553-b59.json"
+            },
+            {
+              "id": "ocds-a1b1c1-c9b14c18-adc8-11e6-9901-0019b9f3037b-cdfpc3b0016",
+              "date": "2018-12-10T09:15:00Z",
+              "tag": [
+                "contractTermination"
+              ],
+              "url": "https://example.com/Published/releases/5553-b60.json"
+            }
+          ]
+        }
+      ],
+      "completion": {
+        "endDate": "2018-12-10T00:00:00Z",
+        "endDateDetails": "Construction was delayed due to excavation problems when a watercourse was damaged.",
+        "finalValue": {
+          "amount": 42100000,
+          "currency": "GBP"
+        },
+        "finalValueDetails": "Budget increase due to construction delay.",
+        "finalScope": "Upgrade of Junctions 4 and 5 and repairs to the watercourse at Junction 5.",
+        "finalScopeDetails": "Scope was expanded to include repairs to a watercourse damaged during construction excavation."
+      }
+    }
+  ]
+}
diff --git a/tests/fixtures/oc4ids/project_package_split.json b/tests/fixtures/oc4ids/project_package_split.json
new file mode 100644
index 0000000..af10d5c
--- /dev/null
+++ b/tests/fixtures/oc4ids/project_package_split.json
@@ -0,0 +1,2 @@
+{"version":"0.9","uri":"https://standard.open-contracting.org/infrastructure/0.9/en/_static/example.json","publishedDate":"2018-12-10T15:53:00Z","publisher":{"name":"Open Data Services Co-operative Limited","scheme":"GB-COH","uid":"9506232","uri":"http://data.companieshouse.gov.uk/doc/company/09506232"},"license":"http://opendatacommons.org/licenses/pddl/1.0/","publicationPolicy":"https://standard.open-contracting.org/1.1/en/implementation/publication_policy/","projects":[{"id":"oc4ids-bu3kcz-m75-junctions-4-to-5-smart-motorway","updated":"2018-12-10T15:53:00Z","title":"M75 Junctions 4 to 5 upgrade smart motorway","description":"Upgrading the 5km stretch of the M75 near Birmingham Airport, between junction 4 near Patcham and junction 5 at Windlesham, to an all-lane running smart motorway.","status":"completed","period":{"startDate":"2016-01-01T00:00:00Z","endDate":"2018-12-10T00:00:00Z","durationInDays":1074},"sector":["transport","transport.road"],"type":"expansion","relatedProjects":[{"id":"1","scheme":"oc4ids","identifier":"oc4ids-bu3kcz-m75-junctions-4-to-5-construction","relationship":"construction","title":"Original construction of M75 J4-5"}],"assetLifetime":{"startDate":"2018-07-01T00:00:00Z","endDate":"2040-07-01T00:00:00Z","durationInDays":8027},"locations":[{"id":"001","description":"M75 J4 Patcham Interchange","geometry":{"type":"Point","coordinates":[52.2571843,-0.1163333]},"gazetteer":{"scheme":"GEONAMES","identifiers":["2657507"]},"address":{"streetAddress":"Patcham Interchange, New Road","locality":"Patcham","region":"Westshire","postalCode":"WS20 5TV","countryName":"UK"},"uri":"https://www.openstreetmap.org/node/202995"},{"id":"002","description":"M75 J5 Windlesham interchange","geometry":{"type":"Point","coordinates":[52.1373584,-0.1198955]},"gazetteer":{"scheme":"osm","identifiers":[]},"address":{"streetAddress":"Windlesham Interchange, Old Road","locality":"Windlesham","region":"Westshire","postalCode":"WS21 6RZ","countryName":"UK"},"uri":"https://www.openstreetmap.org/node/1638915385"}],"budget":{"amount":{"amount":40000000,"currency":"GBP"},"requestDate":"2015-05-30T00:00:00Z","approvalDate":"2015-06-24T00:00:00Z","budgetBreakdown":[{"id":"1","description":"2016 budget allocation","amount":{"amount":10000000,"currency":"GBP"},"period":{"startDate":"2016-01-01T00:00:00Z","endDate":"2016-12-31T00:00:00Z"},"sourceParty":{"name":"Motorways UK","id":"GB-GOR-XX1234"}},{"id":"2","description":"2017 budget allocation","amount":{"amount":20000000,"currency":"GBP"},"period":{"startDate":"2017-01-01T00:00:00Z","endDate":"2017-12-31T00:00:00Z"},"sourceParty":{"name":"Motorways UK","id":"GB-GOR-XX1234"}},{"id":"3","description":"2018 budget allocation","amount":{"amount":10000000,"currency":"GBP"},"period":{"startDate":"2018-01-01T00:00:00Z","endDate":"2018-12-31T00:00:00Z"},"sourceParty":{"name":"Motorways UK","id":"GB-GOR-XX1234"}}]},"parties":[{"name":"Motorways UK","id":"GB-GOR-XX1234","identifier":{"scheme":"GB-GOR","legalName":"Motorways UK","id":"XX1234","uri":"https://government-organisation.register.gov.uk/records/XX1234"},"address":{"postalCode":"LL55 4NY","countryName":"UK","streetAddress":"8 Mountain Walk","region":"Westshire","locality":"Patcham"},"contactPoint":{"name":"Motorways Manager","email":"EX12345@motorwaysuk.gov.uk","telephone":"+44 0123 456 7890","faxNumber":"+44 0123 456 7891"},"roles":["procuringEntity","buyer","administrativeEntity","publicAuthority"]},{"name":"A1 Expert Smart Moto Design","id":"GB-COH-11111111","identifier":{"scheme":"GB-COH","id":"11111111","legalName":"A1 Expert Smart Moto Design Ltd","uri":"https://beta.companieshouse.gov.uk/company/11111111"},"address":{"streetAddress":"Farm Grove, Prince Road","locality":"Patcham","region":"Westshire","postalCode":"WS18 5BW","countryName":"UK"},"contactPoint":{"name":"Kim Designer","email":"kim.designerd@a1expertsmart.com","telephone":"+44 0123 456 7890","url":"https://www.example.com"},"roles":["supplier","tenderer"]},{"name":"Motorway Design Services PLC","id":"GB-COH-12345678","identifier":{"scheme":"GB-COH","id":"12345678","legalName":"Motorway Design Services PLC","uri":"https://beta.companieshouse.gov.uk/company/22222222"},"address":{"streetAddress":"567 High Street","locality":"Mareham","region":"Eastshire","postalCode":"ES22 3TW","countryName":"UK"},"roles":["tenderer"]},{"name":"Expert Motorway Supervisors Ltd","id":"GB-COH-22222222","identifier":{"scheme":"GB-COH","id":"22222222","legalName":"Expert Motorway Supervisors Ltd","uri":"https://beta.companieshouse.gov.uk/company/22222222"},"address":{"streetAddress":"9 Seaview Road","locality":"London","region":"London","postalCode":"SE1 1EZ","countryName":"UK"},"contactPoint":{"name":"Supervisor Manager","email":"supervisor.manager@example.com","telephone":"+44 0123 456 7890","faxNumber":"+44 0123 456 7891","url":"https://www.example.com"},"roles":["supplier","tenderer"]},{"name":"Concrete Motorways Construction","id":"GB-COH-33333333","identifier":{"scheme":"GB-COH","id":"33333333","legalName":"Concrete Motorways Construction Ltd","uri":"https://beta.companieshouse.gov.uk/company/33333333"},"address":{"streetAddress":"5 Example Grove","locality":"London","region":"London","postalCode":"SW1A 1AA","countryName":"UK"},"contactPoint":{"name":"Construction Manager","email":"construction.example@example.com","telephone":"+44 0123 456 7890","faxNumber":"+44 0123 456 7891","url":"https://www.example.com"},"roles":["supplier","tenderer"]}],"publicAuthority":{"name":"Motorways UK","id":"GB-GOR-XX1234"},"documents":[{"id":"consultation-1234","documentType":"x_consultationResponses","title":"M75 Junction 4 to 5 Smart Motorway. Summary of Statutory Instrument consultation responses","description":"Summary of Statutory Instrument consultation responses","url":"https://example.com/he/M75-junctions-4-to-5-smart-motorway/results/M75J4-5responsereportforstatutoryinstrument-pbamendsjune18.pdf","datePublished":"2016-05-01T00:00:00Z","dateModified":"2016-05-11T00:00:00Z","format":"application/pdf","language":"en","author":"Fred Consulter"},{"id":"environmental-impact-5678-r4","documentType":"environmentalImpact","title":"Environmental Study Report","description":"An Environmental Study Report into the M75 Junction 4 to 5 Smart Motorway Upgrade","url":"http://example.com/roads/road-projects/M75+junctions+4+to+5++smart+motorway/M75+J4-5SM+Environmental+Study+Report.pdf","datePublished":"2016-02-10T00:00:00Z","dateModified":"2016-12-15T00:00:00Z","format":"application/pdf","author":"Jane Environment, Environment Motorway Consultants Ltd."},{"id":"budget-approval-5678","documentType":"budgetApproval","title":"Approval of Budget for M75 J4-5 upgrade","description":"A full budget approval document for the M75 J4-5 upgrade with budgeting for design, build and supervision.","url":"http://example.com/roads/road-projects/M75+unctions+4+to+5+budget+approval.pdf","datePublished":"2015-10-01T00:00:00Z","dateModified":"2018-03-01T00:00:00Z","format":"application/pdf","author":"UK Motorways Budget Agency","pageStart":"55","pageEnd":"60","accessDetails":"Documents can be inspected in the Motoways UK Example Archive or users can register for free to access."}],"contractingProcesses":[{"id":"ocds-a1b1c1-a410a80d-adc8-11e6-9901-0019b9f3037b","summary":{"ocid":"ocds-a1b1c1-a410a80d-adc8-11e6-9901-0019b9f3037b","externalReference":"2016-SMP-M75-J4_J5-design","nature":["design"],"title":"Smart Motorway Design M75 J4-5","description":"Design of Smart Motorway upgrade M75 J4-5","status":"closed","tender":{"procurementMethod":"limited","procurementMethodDetails":"Restricted procedure","costEstimate":{"amount":2000000,"currency":"GBP"},"numberOfTenderers":2,"tenderers":[{"name":"A1 Expert Smart Moto Design","id":"GB-COH-11111111"},{"name":"Motorway Design Services PLC","id":"GB-COH-12345678"}],"procuringEntity":{"name":"Motorways UK","id":"GB-GOR-XX1234"}},"suppliers":[{"name":"A1 Expert Smart Moto Design","id":"GB-COH-11111111"}],"contractValue":{"amount":1950000,"currency":"GBP"},"contractPeriod":{"startDate":"2016-06-01T00:00:00Z","endDate":"2017-07-07T00:00:00Z"},"finalValue":{"amount":1950000,"currency":"GBP"},"documents":[{"id":"a1b1c1-tender-doc-001","documentType":"tenderNotice","title":"M72 improvements at J4-5: Tender Notice","description":"A tender notice for the design of improvements to M75 J4-5","url":"https://example.com/Published/a1b1c1-design-001.html","datePublished":"2018-12-10T16:45:00Z","format":"text/html","author":"Motorways UK"}]},"releases":[{"id":"ocds-cdf-pc10008","date":"2016-04-01T00:00:00Z","tag":["tender"],"url":"https://www.example.com/releases/ocds-cdf-pc10008.json"},{"id":"ocds-cdf-pc10009","date":"2016-06-01T15:49:19Z","tag":["award"],"url":"https://www.example.com/releases/ocds-cdf-pc10009.json"}]},{"id":"ocds-a1b1c1-370ad85a-097f-4b8c-adf8-09d840c7c48b","summary":{"ocid":"ocds-a1b1c1-370ad85a-097f-4b8c-adf8-09d840c7c48b","externalReference":"2016-SMP-M75-J4_J5-supervision","nature":["supervision"],"title":"Commercial Management and Assurance for the Motorways Upgrade Programme M75 J4-5","description":"Specialist Professional and Technical Services Framework: Commercial Management and Assurance for the Motorways Upgrade Programme M75 J4-5","status":"closed","tender":{"procurementMethod":"limited","procurementMethodDetails":"Framework","costEstimate":{"amount":5000000,"currency":"GBP"},"numberOfTenderers":1,"tenderers":[{"name":"Expert Motorway Supervisors","id":"GB-COH-22222222"}],"procuringEntity":{"name":"Motorways UK","id":"GB-GOR-XX1234"},"administrativeEntity":{"name":"Motorways UK","id":"GB-GOR-XX1234"}},"suppliers":[{"name":"Expert Motorway Supervisors","id":"GB-COH-22222222"}],"contractValue":{"amount":4900000,"currency":"GBP"},"contractPeriod":{"startDate":"2017-02-24T00:00:00Z","endDate":"2018-10-10T00:00:00Z"},"finalValue":{"amount":4900000,"currency":"GBP"},"documents":[{"id":"a1b1c1-spats-2-033-completion","documentType":"completionCertificate","title":"Completion Certificate for supervision","description":"A completion certificate for Expert Motorway Supervisors supervision of M75 J4-5","url":"https://example.com/Published/a1b1c1-spats-2-033-completion.html","datePublished":"2018-12-10T16:45:00Z","format":"text/html"}]},"releases":[{"id":"ocds-a1b1c1-spats-2-033e","date":"2017-03-02T17:14:37Z","tag":["tender"],"url":"https://example.com/releases/ex-a1b1c1--033e.json"},{"id":"ocds-a1b1c1-spats-2-033f","date":"2017-05-02T17:14:37Z","tag":["award"],"url":"https://example.com/releases/ex-a1b1c1--033f.json"},{"id":"ocds-a1b1c1-spats-2-033g","date":"2017-07-02T17:14:37Z","tag":["implementation"],"url":"https://example.com/Published/releases/ex-a1b1c1--033g.json"},{"id":"ocds-a1b1c1-spats-2-033h","date":"2018-12-10T14:45:00Z","tag":["contractTermination"],"url":"https://example.com/releases/ex-a1b1c1--033h.json"}]},{"id":"ocds-a1b1c1-c9b14c18-adc8-11e6-9901-0019b9f3037b","summary":{"ocid":"ocds-a1b1c1-c9b14c18-adc8-11e6-9901-0019b9f3037b","externalReference":"2016-SMP-M75-J4_J5-construction","nature":["construction"],"title":"Smart Motorways Programme - Construction - Package 3 - M75 J8 - 10","description":"Collaborative Delivery Framework (CDF) - Lot 3B - Construction  £10 to  £50m","status":"closed","tender":{"procurementMethod":"limited","procurementMethodDetails":"Restricted procedure","costEstimate":{"amount":33000000,"currency":"GBP"},"numberOfTenderers":1,"tenderers":[{"name":"Concrete Motorways Construction","id":"GB-COH-33333333"}],"procuringEntity":{"name":"Motorways UK","id":"GB-GOR-XX1234"}},"suppliers":[{"name":"Concrete Motorways Construction","id":"GB-COH-33333333"}],"contractValue":{"amount":29000000,"currency":"GBP"},"contractPeriod":{"startDate":"2017-07-07T00:00:00Z","endDate":"2018-07-01T00:00:00Z"},"finalValue":{"amount":35250000,"currency":"GBP"},"documents":[{"id":"a1b1c1-construction-excavation-report","documentType":"physicalProgressReport","title":"Report on construction excavation","description":"A report on the construction at Junction 5 where excavation damaged a watercourse.","url":"https://example.com/Published/a1b1c1-construction-monitoring.html","datePublished":"2018-02-01T00:00:00Z","dateModified":"2018-02-11T00:00:00Z","format":"text/html","language":"en","accessDetails":"Register for document access.","author":"Motorways UK"},{"id":"a1b1c1-construction-completion","documentType":"comletionCertificate","title":"Completion certificate for construction at M75 J4-5 upgrade","description":"Completion certificate for the construction upgrading motorway M75 Junctions 4-5.","url":"https://example.com/Published/a1b1c1-construction-completion.html","datePublished":"2018-12-10T00:00:00Z","format":"text/html","language":"en","accessDetails":"Register for document access.","author":"Motorways UK"}],"modifications":[{"id":"m27-4-5-construction-modification-001","date":"2018-04-01T15:15:00Z","description":"Construction extended for 5 months","rationale":"Excavation damaged a watercourse. Construction extended for repairs.","type":"duration","releaseID":"ocds-a1b1c1-c9b14c18-adc8-11e6-9901-0019b9f3037b-cdfpc3b005","oldContractPeriod":{"startDate":"2017-07-07T00:00:00Z","endDate":"2018-07-01T00:00:00Z"},"newContractPeriod":{"startDate":"2017-07-07T00:00:00Z","endDate":"2018-12-01T00:00:00Z"}},{"id":"m27-4-5-construction-modification-002","date":"2018-04-01T15:15:00Z","description":"Construction scope extended to include repairing a watercourse","rationale":"Excavation damaged a watercourse. Construction scope extended for repairs.","type":"scope","releaseID":"ocds-a1b1c1-c9b14c18-adc8-11e6-9901-0019b9f3037b-cdfpc3b0015"},{"id":"m27-4-5-construction-modification-003","date":"2018-04-01T15:15:00Z","description":"Contract value increased from 29000000 to 35250000 to include repairing a watercourse","rationale":"Excavation damaged a watercourse. Construction budget extended for repairs.","type":"value","releaseID":"ocds-a1b1c1-c9b14c18-adc8-11e6-9901-0019b9f3037b-cdfpc3b0015","oldContractValue":{"amount":29000000,"currency":"GBP"},"newContractValue":{"amount":35250000,"currency":"GBP"}}]},"releases":[{"id":"ocds-a1b1c1-c9b14c18-adc8-11e6-9901-0019b9f3037b-cdfpc3b0011","date":"2015-09-16T15:12:32Z","tag":["tender"],"url":"https://example.com/Published/releases/5553-b55.json"},{"id":"ocds-a1b1c1-c9b14c18-adc8-11e6-9901-0019b9f3037b-cdfpc3b0012","date":"2015-12-16T15:15:00Z","tag":["award"],"url":"https://example.com/Published/releases/5553-b56.json"},{"id":"ocds-a1b1c1-c9b14c18-adc8-11e6-9901-0019b9f3037b-cdfpc3b0013","date":"2015-12-16T15:15:00Z","tag":["contract"],"url":"https://example.com/Published/releases/5553-b57.json"},{"id":"ocds-a1b1c1-c9b14c18-adc8-11e6-9901-0019b9f3037b-cdfpc3b0014","date":"2015-12-16T15:15:00Z","tag":["implementation"],"url":"https://example.com/Published/releases/5553-b58.json"},{"id":"ocds-a1b1c1-c9b14c18-adc8-11e6-9901-0019b9f3037b-cdfpc3b0015","date":"2018-04-01T15:15:00Z","tag":["implementationUpdate"],"url":"https://example.com/Published/releases/5553-b59.json"},{"id":"ocds-a1b1c1-c9b14c18-adc8-11e6-9901-0019b9f3037b-cdfpc3b0016","date":"2018-12-10T09:15:00Z","tag":["contractTermination"],"url":"https://example.com/Published/releases/5553-b60.json"}]}],"completion":{"endDate":"2018-12-10T00:00:00Z","endDateDetails":"Construction was delayed due to excavation problems when a watercourse was damaged.","finalValue":{"amount":42100000,"currency":"GBP"},"finalValueDetails":"Budget increase due to construction delay.","finalScope":"Upgrade of Junctions 4 and 5 and repairs to the watercourse at Junction 5.","finalScopeDetails":"Scope was expanded to include repairs to a watercourse damaged during construction excavation."}}]}
+{"version":"0.9","uri":"https://standard.open-contracting.org/infrastructure/0.9/en/_static/example.json","publishedDate":"2018-12-10T15:53:00Z","publisher":{"name":"Open Data Services Co-operative Limited","scheme":"GB-COH","uid":"9506232","uri":"http://data.companieshouse.gov.uk/doc/company/09506232"},"license":"http://opendatacommons.org/licenses/pddl/1.0/","publicationPolicy":"https://standard.open-contracting.org/1.1/en/implementation/publication_policy/","projects":[{"id":"oc4ids-bu3kcz-m75-junctions-4-to-5-smart-motorway","updated":"2018-12-10T15:53:00Z","title":"M75 Junctions 4 to 5 upgrade smart motorway","description":"Upgrading the 5km stretch of the M75 near Birmingham Airport, between junction 4 near Patcham and junction 5 at Windlesham, to an all-lane running smart motorway.","status":"completed","period":{"startDate":"2016-01-01T00:00:00Z","endDate":"2018-12-10T00:00:00Z","durationInDays":1074},"sector":["transport","transport.road"],"type":"expansion","relatedProjects":[{"id":"1","scheme":"oc4ids","identifier":"oc4ids-bu3kcz-m75-junctions-4-to-5-construction","relationship":"construction","title":"Original construction of M75 J4-5"}],"assetLifetime":{"startDate":"2018-07-01T00:00:00Z","endDate":"2040-07-01T00:00:00Z","durationInDays":8027},"locations":[{"id":"001","description":"M75 J4 Patcham Interchange","geometry":{"type":"Point","coordinates":[52.2571843,-0.1163333]},"gazetteer":{"scheme":"GEONAMES","identifiers":["2657507"]},"address":{"streetAddress":"Patcham Interchange, New Road","locality":"Patcham","region":"Westshire","postalCode":"WS20 5TV","countryName":"UK"},"uri":"https://www.openstreetmap.org/node/202995"},{"id":"002","description":"M75 J5 Windlesham interchange","geometry":{"type":"Point","coordinates":[52.1373584,-0.1198955]},"gazetteer":{"scheme":"osm","identifiers":[]},"address":{"streetAddress":"Windlesham Interchange, Old Road","locality":"Windlesham","region":"Westshire","postalCode":"WS21 6RZ","countryName":"UK"},"uri":"https://www.openstreetmap.org/node/1638915385"}],"budget":{"amount":{"amount":40000000,"currency":"GBP"},"requestDate":"2015-05-30T00:00:00Z","approvalDate":"2015-06-24T00:00:00Z","budgetBreakdown":[{"id":"1","description":"2016 budget allocation","amount":{"amount":10000000,"currency":"GBP"},"period":{"startDate":"2016-01-01T00:00:00Z","endDate":"2016-12-31T00:00:00Z"},"sourceParty":{"name":"Motorways UK","id":"GB-GOR-XX1234"}},{"id":"2","description":"2017 budget allocation","amount":{"amount":20000000,"currency":"GBP"},"period":{"startDate":"2017-01-01T00:00:00Z","endDate":"2017-12-31T00:00:00Z"},"sourceParty":{"name":"Motorways UK","id":"GB-GOR-XX1234"}},{"id":"3","description":"2018 budget allocation","amount":{"amount":10000000,"currency":"GBP"},"period":{"startDate":"2018-01-01T00:00:00Z","endDate":"2018-12-31T00:00:00Z"},"sourceParty":{"name":"Motorways UK","id":"GB-GOR-XX1234"}}]},"parties":[{"name":"Motorways UK","id":"GB-GOR-XX1234","identifier":{"scheme":"GB-GOR","legalName":"Motorways UK","id":"XX1234","uri":"https://government-organisation.register.gov.uk/records/XX1234"},"address":{"postalCode":"LL55 4NY","countryName":"UK","streetAddress":"8 Mountain Walk","region":"Westshire","locality":"Patcham"},"contactPoint":{"name":"Motorways Manager","email":"EX12345@motorwaysuk.gov.uk","telephone":"+44 0123 456 7890","faxNumber":"+44 0123 456 7891"},"roles":["procuringEntity","buyer","administrativeEntity","publicAuthority"]},{"name":"A1 Expert Smart Moto Design","id":"GB-COH-11111111","identifier":{"scheme":"GB-COH","id":"11111111","legalName":"A1 Expert Smart Moto Design Ltd","uri":"https://beta.companieshouse.gov.uk/company/11111111"},"address":{"streetAddress":"Farm Grove, Prince Road","locality":"Patcham","region":"Westshire","postalCode":"WS18 5BW","countryName":"UK"},"contactPoint":{"name":"Kim Designer","email":"kim.designerd@a1expertsmart.com","telephone":"+44 0123 456 7890","url":"https://www.example.com"},"roles":["supplier","tenderer"]},{"name":"Motorway Design Services PLC","id":"GB-COH-12345678","identifier":{"scheme":"GB-COH","id":"12345678","legalName":"Motorway Design Services PLC","uri":"https://beta.companieshouse.gov.uk/company/22222222"},"address":{"streetAddress":"567 High Street","locality":"Mareham","region":"Eastshire","postalCode":"ES22 3TW","countryName":"UK"},"roles":["tenderer"]},{"name":"Expert Motorway Supervisors Ltd","id":"GB-COH-22222222","identifier":{"scheme":"GB-COH","id":"22222222","legalName":"Expert Motorway Supervisors Ltd","uri":"https://beta.companieshouse.gov.uk/company/22222222"},"address":{"streetAddress":"9 Seaview Road","locality":"London","region":"London","postalCode":"SE1 1EZ","countryName":"UK"},"contactPoint":{"name":"Supervisor Manager","email":"supervisor.manager@example.com","telephone":"+44 0123 456 7890","faxNumber":"+44 0123 456 7891","url":"https://www.example.com"},"roles":["supplier","tenderer"]},{"name":"Concrete Motorways Construction","id":"GB-COH-33333333","identifier":{"scheme":"GB-COH","id":"33333333","legalName":"Concrete Motorways Construction Ltd","uri":"https://beta.companieshouse.gov.uk/company/33333333"},"address":{"streetAddress":"5 Example Grove","locality":"London","region":"London","postalCode":"SW1A 1AA","countryName":"UK"},"contactPoint":{"name":"Construction Manager","email":"construction.example@example.com","telephone":"+44 0123 456 7890","faxNumber":"+44 0123 456 7891","url":"https://www.example.com"},"roles":["supplier","tenderer"]}],"publicAuthority":{"name":"Motorways UK","id":"GB-GOR-XX1234"},"documents":[{"id":"consultation-1234","documentType":"x_consultationResponses","title":"M75 Junction 4 to 5 Smart Motorway. Summary of Statutory Instrument consultation responses","description":"Summary of Statutory Instrument consultation responses","url":"https://example.com/he/M75-junctions-4-to-5-smart-motorway/results/M75J4-5responsereportforstatutoryinstrument-pbamendsjune18.pdf","datePublished":"2016-05-01T00:00:00Z","dateModified":"2016-05-11T00:00:00Z","format":"application/pdf","language":"en","author":"Fred Consulter"},{"id":"environmental-impact-5678-r4","documentType":"environmentalImpact","title":"Environmental Study Report","description":"An Environmental Study Report into the M75 Junction 4 to 5 Smart Motorway Upgrade","url":"http://example.com/roads/road-projects/M75+junctions+4+to+5++smart+motorway/M75+J4-5SM+Environmental+Study+Report.pdf","datePublished":"2016-02-10T00:00:00Z","dateModified":"2016-12-15T00:00:00Z","format":"application/pdf","author":"Jane Environment, Environment Motorway Consultants Ltd."},{"id":"budget-approval-5678","documentType":"budgetApproval","title":"Approval of Budget for M75 J4-5 upgrade","description":"A full budget approval document for the M75 J4-5 upgrade with budgeting for design, build and supervision.","url":"http://example.com/roads/road-projects/M75+unctions+4+to+5+budget+approval.pdf","datePublished":"2015-10-01T00:00:00Z","dateModified":"2018-03-01T00:00:00Z","format":"application/pdf","author":"UK Motorways Budget Agency","pageStart":"55","pageEnd":"60","accessDetails":"Documents can be inspected in the Motoways UK Example Archive or users can register for free to access."}],"contractingProcesses":[{"id":"ocds-a1b1c1-a410a80d-adc8-11e6-9901-0019b9f3037b","summary":{"ocid":"ocds-a1b1c1-a410a80d-adc8-11e6-9901-0019b9f3037b","externalReference":"2016-SMP-M75-J4_J5-design","nature":["design"],"title":"Smart Motorway Design M75 J4-5","description":"Design of Smart Motorway upgrade M75 J4-5","status":"closed","tender":{"procurementMethod":"limited","procurementMethodDetails":"Restricted procedure","costEstimate":{"amount":2000000,"currency":"GBP"},"numberOfTenderers":2,"tenderers":[{"name":"A1 Expert Smart Moto Design","id":"GB-COH-11111111"},{"name":"Motorway Design Services PLC","id":"GB-COH-12345678"}],"procuringEntity":{"name":"Motorways UK","id":"GB-GOR-XX1234"}},"suppliers":[{"name":"A1 Expert Smart Moto Design","id":"GB-COH-11111111"}],"contractValue":{"amount":1950000,"currency":"GBP"},"contractPeriod":{"startDate":"2016-06-01T00:00:00Z","endDate":"2017-07-07T00:00:00Z"},"finalValue":{"amount":1950000,"currency":"GBP"},"documents":[{"id":"a1b1c1-tender-doc-001","documentType":"tenderNotice","title":"M72 improvements at J4-5: Tender Notice","description":"A tender notice for the design of improvements to M75 J4-5","url":"https://example.com/Published/a1b1c1-design-001.html","datePublished":"2018-12-10T16:45:00Z","format":"text/html","author":"Motorways UK"}]},"releases":[{"id":"ocds-cdf-pc10008","date":"2016-04-01T00:00:00Z","tag":["tender"],"url":"https://www.example.com/releases/ocds-cdf-pc10008.json"},{"id":"ocds-cdf-pc10009","date":"2016-06-01T15:49:19Z","tag":["award"],"url":"https://www.example.com/releases/ocds-cdf-pc10009.json"}]},{"id":"ocds-a1b1c1-370ad85a-097f-4b8c-adf8-09d840c7c48b","summary":{"ocid":"ocds-a1b1c1-370ad85a-097f-4b8c-adf8-09d840c7c48b","externalReference":"2016-SMP-M75-J4_J5-supervision","nature":["supervision"],"title":"Commercial Management and Assurance for the Motorways Upgrade Programme M75 J4-5","description":"Specialist Professional and Technical Services Framework: Commercial Management and Assurance for the Motorways Upgrade Programme M75 J4-5","status":"closed","tender":{"procurementMethod":"limited","procurementMethodDetails":"Framework","costEstimate":{"amount":5000000,"currency":"GBP"},"numberOfTenderers":1,"tenderers":[{"name":"Expert Motorway Supervisors","id":"GB-COH-22222222"}],"procuringEntity":{"name":"Motorways UK","id":"GB-GOR-XX1234"},"administrativeEntity":{"name":"Motorways UK","id":"GB-GOR-XX1234"}},"suppliers":[{"name":"Expert Motorway Supervisors","id":"GB-COH-22222222"}],"contractValue":{"amount":4900000,"currency":"GBP"},"contractPeriod":{"startDate":"2017-02-24T00:00:00Z","endDate":"2018-10-10T00:00:00Z"},"finalValue":{"amount":4900000,"currency":"GBP"},"documents":[{"id":"a1b1c1-spats-2-033-completion","documentType":"completionCertificate","title":"Completion Certificate for supervision","description":"A completion certificate for Expert Motorway Supervisors supervision of M75 J4-5","url":"https://example.com/Published/a1b1c1-spats-2-033-completion.html","datePublished":"2018-12-10T16:45:00Z","format":"text/html"}]},"releases":[{"id":"ocds-a1b1c1-spats-2-033e","date":"2017-03-02T17:14:37Z","tag":["tender"],"url":"https://example.com/releases/ex-a1b1c1--033e.json"},{"id":"ocds-a1b1c1-spats-2-033f","date":"2017-05-02T17:14:37Z","tag":["award"],"url":"https://example.com/releases/ex-a1b1c1--033f.json"},{"id":"ocds-a1b1c1-spats-2-033g","date":"2017-07-02T17:14:37Z","tag":["implementation"],"url":"https://example.com/Published/releases/ex-a1b1c1--033g.json"},{"id":"ocds-a1b1c1-spats-2-033h","date":"2018-12-10T14:45:00Z","tag":["contractTermination"],"url":"https://example.com/releases/ex-a1b1c1--033h.json"}]},{"id":"ocds-a1b1c1-c9b14c18-adc8-11e6-9901-0019b9f3037b","summary":{"ocid":"ocds-a1b1c1-c9b14c18-adc8-11e6-9901-0019b9f3037b","externalReference":"2016-SMP-M75-J4_J5-construction","nature":["construction"],"title":"Smart Motorways Programme - Construction - Package 3 - M75 J8 - 10","description":"Collaborative Delivery Framework (CDF) - Lot 3B - Construction  £10 to  £50m","status":"closed","tender":{"procurementMethod":"limited","procurementMethodDetails":"Restricted procedure","costEstimate":{"amount":33000000,"currency":"GBP"},"numberOfTenderers":1,"tenderers":[{"name":"Concrete Motorways Construction","id":"GB-COH-33333333"}],"procuringEntity":{"name":"Motorways UK","id":"GB-GOR-XX1234"}},"suppliers":[{"name":"Concrete Motorways Construction","id":"GB-COH-33333333"}],"contractValue":{"amount":29000000,"currency":"GBP"},"contractPeriod":{"startDate":"2017-07-07T00:00:00Z","endDate":"2018-07-01T00:00:00Z"},"finalValue":{"amount":35250000,"currency":"GBP"},"documents":[{"id":"a1b1c1-construction-excavation-report","documentType":"physicalProgressReport","title":"Report on construction excavation","description":"A report on the construction at Junction 5 where excavation damaged a watercourse.","url":"https://example.com/Published/a1b1c1-construction-monitoring.html","datePublished":"2018-02-01T00:00:00Z","dateModified":"2018-02-11T00:00:00Z","format":"text/html","language":"en","accessDetails":"Register for document access.","author":"Motorways UK"},{"id":"a1b1c1-construction-completion","documentType":"comletionCertificate","title":"Completion certificate for construction at M75 J4-5 upgrade","description":"Completion certificate for the construction upgrading motorway M75 Junctions 4-5.","url":"https://example.com/Published/a1b1c1-construction-completion.html","datePublished":"2018-12-10T00:00:00Z","format":"text/html","language":"en","accessDetails":"Register for document access.","author":"Motorways UK"}],"modifications":[{"id":"m27-4-5-construction-modification-001","date":"2018-04-01T15:15:00Z","description":"Construction extended for 5 months","rationale":"Excavation damaged a watercourse. Construction extended for repairs.","type":"duration","releaseID":"ocds-a1b1c1-c9b14c18-adc8-11e6-9901-0019b9f3037b-cdfpc3b005","oldContractPeriod":{"startDate":"2017-07-07T00:00:00Z","endDate":"2018-07-01T00:00:00Z"},"newContractPeriod":{"startDate":"2017-07-07T00:00:00Z","endDate":"2018-12-01T00:00:00Z"}},{"id":"m27-4-5-construction-modification-002","date":"2018-04-01T15:15:00Z","description":"Construction scope extended to include repairing a watercourse","rationale":"Excavation damaged a watercourse. Construction scope extended for repairs.","type":"scope","releaseID":"ocds-a1b1c1-c9b14c18-adc8-11e6-9901-0019b9f3037b-cdfpc3b0015"},{"id":"m27-4-5-construction-modification-003","date":"2018-04-01T15:15:00Z","description":"Contract value increased from 29000000 to 35250000 to include repairing a watercourse","rationale":"Excavation damaged a watercourse. Construction budget extended for repairs.","type":"value","releaseID":"ocds-a1b1c1-c9b14c18-adc8-11e6-9901-0019b9f3037b-cdfpc3b0015","oldContractValue":{"amount":29000000,"currency":"GBP"},"newContractValue":{"amount":35250000,"currency":"GBP"}}]},"releases":[{"id":"ocds-a1b1c1-c9b14c18-adc8-11e6-9901-0019b9f3037b-cdfpc3b0011","date":"2015-09-16T15:12:32Z","tag":["tender"],"url":"https://example.com/Published/releases/5553-b55.json"},{"id":"ocds-a1b1c1-c9b14c18-adc8-11e6-9901-0019b9f3037b-cdfpc3b0012","date":"2015-12-16T15:15:00Z","tag":["award"],"url":"https://example.com/Published/releases/5553-b56.json"},{"id":"ocds-a1b1c1-c9b14c18-adc8-11e6-9901-0019b9f3037b-cdfpc3b0013","date":"2015-12-16T15:15:00Z","tag":["contract"],"url":"https://example.com/Published/releases/5553-b57.json"},{"id":"ocds-a1b1c1-c9b14c18-adc8-11e6-9901-0019b9f3037b-cdfpc3b0014","date":"2015-12-16T15:15:00Z","tag":["implementation"],"url":"https://example.com/Published/releases/5553-b58.json"},{"id":"ocds-a1b1c1-c9b14c18-adc8-11e6-9901-0019b9f3037b-cdfpc3b0015","date":"2018-04-01T15:15:00Z","tag":["implementationUpdate"],"url":"https://example.com/Published/releases/5553-b59.json"},{"id":"ocds-a1b1c1-c9b14c18-adc8-11e6-9901-0019b9f3037b-cdfpc3b0016","date":"2018-12-10T09:15:00Z","tag":["contractTermination"],"url":"https://example.com/Published/releases/5553-b60.json"}]}],"completion":{"endDate":"2018-12-10T00:00:00Z","endDateDetails":"Construction was delayed due to excavation problems when a watercourse was damaged.","finalValue":{"amount":42100000,"currency":"GBP"},"finalValueDetails":"Budget increase due to construction delay.","finalScope":"Upgrade of Junctions 4 and 5 and repairs to the watercourse at Junction 5.","finalScopeDetails":"Scope was expanded to include repairs to a watercourse damaged during construction excavation."}}]}