Closed duncandewhurst closed 11 months ago
@evelyndinora, @mgraca-prado, @jpmckinney it would be great to get your feedback on this proposal, please.
Sounds fine. We just need to be very clear in the field descriptions when each transactions
array should be used. This is one of the few cases where referring to another field in the schema is necessary :)
I did some more reading about South Africa's Water Reuse Programme (WRP) to make sure that the proposal in this issue is sufficient to model different ownership arrangements and procurement strategies.
According to page 65 of the approved funding proposal, infrastructure projects under the program can be either be publicly owned or owned by a public private partnership (PPP):
Ownership: The ownership model will be either a local government authority (municipality) or special purpose vehicle (SPV) – the latter comprising municipalities, the private sector, and/or possibly a national government entity (depending on size).
The following diagram shows financing arrangements and contracts for a publicly owned infrastructure project. Mappings to OC4IDS roles and fields are provided in brackets:
flowchart TD
0["DBSA
('funder')"]
1["Municipality
('publicAuthority', 'buyer')"]
2["Private company
('supplier')"]
0-- "Loan
(`budget.finance`)" ---1
1-- "Construction contract
(`contractingProcesses`)" ---2
The proposal is sufficient to model the different transactions that might occur in a publicly owned infrastructure project:
flowchart TD
0["DBSA
('funder')"]
1["Municipality
('publicAuthority', 'buyer')"]
2["Private company
('supplier')"]
0-- "Disbursement
(`transactions`)" -->1
1-- "Disbursement
(`contractingProcesses.transactions`)" -->2
0-- "Disbursement
(`contractingProcesses.transactions`)" -->2
The following diagram shows the financing arrangements and contracts for a public private partnership. There are two layers of contracts for a PPP: the PPP contract awarded to the project company / SPV (see page 49 of the approved funding proposal) and sub-contracts signed between the SPV and third-party contractors (e.g. the construction contract and the operation/maintenance contract) (Source). My understanding is that only the PPP contract is in scope for OC4IDS:
Key: --- = out of scope for OC4IDS
flowchart TD
0["DBSA
('funder')"]
4["Municipality
('publicAuthority', 'buyer')"]
5["Project company / SPV
('supplier')"]
6["Private company
(n/a)"]:::oos
0-- "Loan
(contractingProcesses.summary.finance)" ---5
4-- "PPP contract
(`contractingProcesses`)" ---5
5-. "Construction contract
(n/a)" .-6
classDef oos fill:GhostWhite,stroke:Gray,stroke-dasharray:3
In this scenario, I think that disbursements from the project company / SPV to its sub-contractors are out of scope and all other disbursements belong in contractingProcesses.transactions
.
As mentioned in the issue description, significant disbursements are usually made from the funder directly to the subcontractor, rather than going via the project company, so there is a potential gap around the project company's sub-contractors not otherwise being modelled in OC4IDS, but I suppose that can be covered in the mapping guidance (e.g. "If the disbursement is made directly to a sub-contractor of the project company, add the subcontractor to the parties
array.")
flowchart TD
0["DBSA
('funder')"]
4["Municipality
('publicAuthority', 'buyer')"]
5["Project company / SPV
('supplier')"]
6["Private company
(n/a)"]:::oos
0-- "Disbursement
(`contractingProcesses.transactions`)" ---6
0-- "Disbursement
(`contractingProcesses.transactions`)" ---5
4-- "Disbursement
(`contractingProcesses.transactions`)" ---5
5-. "Disbursement
(n/a)" .-6
classDef oos fill:GhostWhite,stroke:Gray,stroke-dasharray:5
Path | Title | Description | Type (format) | Codelist | Change |
---|---|---|---|---|---|
transactions |
Transactions | Financial transactions related to this project. For example, a disbursement from a funder to the project company. Transactions related to a contracting process, like a disbursement from a funder to a supplier, should be recorded in the contracting process summary's .transactions . |
Array of Transaction objects |
New field | |
Transaction |
Transaction | A |
Object | Description | |
milestones |
Milestones | Milestones associated with this project. | Array of Milestone objects |
New field | |
ContractingProcessSummary.milestones |
Milestones | Milestones associated with this contracting process. | Array of Milestone objects |
New field | |
Milestone |
Milestone | Description. Otherwise, copied from OCDS 1.2 Milestone definition. |
|||
Milestone.id |
ID | A local identifier for this milestone, unique within this block. |
String | Description and type. Otherwise, copied from OCDS 1.2. | |
Milestone.code |
Milestone code | Milestone codes can be used to track specific events that take place for a particular kind of project or contracting |
String | Description. Otherwise, copied from OCDS 1.2. |
Adapted from OCDS 1.2:
Code | Title | Description | Change from OCDS 1.2 |
---|---|---|---|
preProcurement | Pre-procurement milestones | For events during the planning process, such as the preparation of key studies. | None |
approval | Approval milestones | For events such as the sign-off of a contract or project. | None |
engagement | Engagement milestones | For engagement milestones, such as a public hearing. | None |
assessment | Assessment milestones | For assessment and adjudication milestones, such as the meeting date of a committee. | None |
delivery | Delivery milestones | For delivery milestones, such as the date when a good or service is to be provided. | None |
reporting | Reporting milestone | For reporting milestones, such as when key reports are to be provided. | None |
financing | Financing milestones | For events related to the funding of the project or contracting process. In public-private partnerships, such events might include, for example, planned payments and equity transfers. | Description |
payment | Payment milestones | For payment milestones, such as the date when a payment is expected to be made to a supplier. If the status of a implementation.transactions .transcations . |
Description |
procurement | Procurement | For events taking place during the procurement that are not captured elsewhere, such as additional enquiry periods or draft bid submissions in a competitive dialogue process. | None |
contractClose | Commercial and financial close | For events relating to agreeing commercial issues between the parties to a public-private partnership contract, executing contract documentation, and meeting any pre-conditions relating to the project's financing. | None |
securityClearanceDeadline | Security clearance deadline | The tenderers can obtain their security clearance until this date. | None |
Copy from OCDS 1.2 milestoneStatus codelist with no changes.
The following example shows a publicy-owned project with two disbursements, one made to the project owner and one made directly to a supplier.
{
"transactions": [
{
"id": "1",
"payer": {
"id": "1",
"name": "United Nations Development Programme"
},
"payee": {
"id": "2",
"name": "Municipality A"
},
"date": "2023-07-01T00:00:00Z",
"value": {
"amount": 5000000,
"currency": "USD"
}
}
],
"contractingProcesses": [
{
"id": "1",
"summary": {
"transactions": [
{
"id": "1",
"payer": {
"id": "1",
"name": "United Nations Development Programme"
},
"payee": {
"id": "2",
"name": "Skanska AB"
},
"date": "2024-01-01T00:00:00Z",
"value": {
"amount": 10000000,
"currency": "USD"
}
}
]
}
}
]
}
The following examples shows a PPP project with two transactions. One made to the project company / SPV and one made directly to a subcontractor.
{
"contractingProcesses": [
{
"id": "1",
"summary": {
"transactions": [
{
"id": "1",
"payer": {
"id": "1",
"name": "United Nations Development Programme"
},
"payee": {
"id": "2",
"name": "Project SPV"
},
"date": "2024-01-01T00:00:00Z",
"value": {
"amount": 10000000,
"currency": "USD"
}
},
{
"id": "1",
"payer": {
"id": "1",
"name": "United Nations Development Programme"
},
"payee": {
"id": "3",
"name": "Subcontractor B"
},
"date": "2023-07-01T00:00:00Z",
"value": {
"amount": 5000000,
"currency": "USD"
}
}
]
}
}
]
}
@duncandewhurst yes, the disbursements that are of interest are related to the sub-loans since those are specific to the individual infrastructure projects. I am happy with the proposal for both public owned and PPPs and having the array associated to the project and the contracts.
Thanks, Evelyn!
@jpmckinney are you happy with the proposal in my previous comment?
Yes, looks good. Just procuremen -> procurement
Thanks. I've corrected the typo.
The CoST IDS/OC4IDS review proposes the following data point in the climate finance extension:
Where disbursements refers to monies received by the project, rather than paid out from the project to contractors (those were already implemented in https://github.com/open-contracting/infrastructure/issues/273).
Based on the research in https://github.com/open-contracting/ocds-extensions/issues/209, project financing flows typically look like this:
Presumably, the disbursements that are of interest are related to the sub-loans since those are specific to the individual infrastructure projects. @EvelynDinora, please correct me if I'm wrong.
According to Denton's Guide to Project Finance, whilst the sub-loan agreement is between the financing party and the project company, significant disbursements are usually made directly from the financing party to suppliers, rather than via the project company:
For example:
In which case, those disbursements can be modelled in the relevant contracting process's
.transactions
array (in keeping with the mapping for the existing 'disbursement records' element in the reactive disclosure section of the CoST IDS):However, this leaves two gaps when compared to the proposed data point:
.transactions
array is only for actual payments)I propose:
.transactions
array..milestones
array at project-level (already discussed in https://github.com/open-contracting/infrastructure/issues/253) and at contracting process level.