Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Tender: Options extension #691

Closed
jpmckinney opened this issue Apr 19, 2018 · 9 comments
Closed

Tender: Options extension #691

jpmckinney opened this issue Apr 19, 2018 · 9 comments
Labels
Extensions - Drafted Relating to a drafted extension Focus - Extensions Relating to new or proposed extensions, or the governance and maintenance of extensions

Comments

@jpmckinney
Copy link
Member

jpmckinney commented Apr 19, 2018

Motivation

The Revised Agreement on Government Procurement (GPA) includes: "each notice of intended procurement shall include … d. a description of any options".

The European Union is a party to the GPA, and as such its Directive 2014/24/EU (Public contracts — setting out clear ground rules) includes: "Information to be included in contract notices … 7. … Where appropriate, description of any options."

The new EU eForms have:

  • Options exist ◯ yes ◯ no
  • +Description of options:

Discussion

The legal instruments take it for granted that "options" is a clear legal concept. The eForms specifications provide a useful note:

The buyer has a right (but not an obligation) to additional purchases from the contractor (while the contract is valid). These possible additional purchases should be described below.

For example, a contract may concern a thousand uniforms and the buyer may keep the option to request an additional hundred uniforms, if he finds out he needs them. This could be useful if, when publishing the call for competition, the buyer does not yet know whether a planned increase in staff will take place or not.

Proposal

Example:

{
  "tender": {
    "options": "The buyer has the option to buy an additional hundred uniforms."
  }
}

This is essentially identical to an earlier proposal, except it:

  • removes the hasOptions boolean, as the options field will simply not be set if there are none
  • options is a single field, not an array (eForms indicates no repetition)
  • attaches to Tender as well as Lot to not require the use of the Lot extension (not shown above).
@jpmckinney jpmckinney added the bug label Apr 19, 2018
@jpmckinney
Copy link
Member Author

@jpmckinney jpmckinney changed the title Tender: Options Tender: Options extension Apr 19, 2018
@jpmckinney jpmckinney added Focus - Extensions Relating to new or proposed extensions, or the governance and maintenance of extensions Extensions - Drafted Relating to a drafted extension labels Nov 29, 2018
@jpmckinney
Copy link
Member Author

@myroslav: FYI, this issue and extension should answer your question about options in GPA.

@PaulBoroday
Copy link

PaulBoroday commented Mar 14, 2019

@jpmckinney , for options we considering a bit deeper approach:

Why

Let's take a look at what we will have on a practical example:

II.2.7: Duration of the contract, framework agreement or dynamic purchasing system of Contract Notice have to be filled as follows: duration of contract in months or duration of contract in days or start: (dd/mm/yyyy) / End: (dd/mm/yyyy) for contract. However, the Procuring Entity would like to provide himself with some room for maneuver by affording himself the right to extend the duration of the contract. This does not mean he is obliged to do so but he may consider that it may become a useful option to have (for further information, see Regulation 32(11) and 72(1)(a))

Designing this example with ocds_options_extension we will have the following:

{
  "tender": {
    "lots": [
      {
        "id": "1",
        "contractPeriod": {
          "durationInMonth":12
        },
        "options": "The buyer has the option to extend contract for three more month"
      }
    ]
  }
}

It's quite complicated to proceed on such information in an automated way but still, looks good )

Let's make an example a bit more complicated: let's assume that Procuring Entity wants to put an option for another one attribute that he obliged to indicate in the Contract Notice: II.2.3) Place of performance

{
  "tender": {
    "lots": [
      {
        "id": "1",
        "contractPeriod": {
          "durationInMonth":12
        },
        "placeOfPerformance":{
          "address":{},
          "NUTSCode":""
        },
        "options": "The buyer has the option to extend contract for three more month and by the way the place of performance can be changed  "
      }
    ]
  }
}

Now it is totally impossible to process this... So what to do? And this is where the idea of 'options' update rises

Proposal

Options might serve as a tool for Procuring Entity to put the options in a machine-readable way and be applicable for:

  • tender.lot
  • tender.criteria.requirement
  • targets.observation

Options for Lot

As shown in the example above the Procuring Entity may like to provide options for contract period and/or place of performance. Technically speaking it means that some attributes of contractPeriod and palceOfPerformance may have options.

Lets design it using the following approach:

  1. Lot includes optionDetails with all the options details considered by PE for a number of attributes of Lot (in our case - two of them) presented by optionGroups
  2. Each optionGroup has a relation to a specific attribute of Lot indicated by relatesTo attribute and set of available options for such related attribute
  3. Here basically the main trick: since any attribute on which optionGroup may be related is either a property itself or an object with includes properties, options of such optionsGroup may vary the available value for such property. In other words - include the same properties together with values or being the property.
{
  "tender": {
    "lots": [
      {
        "id": "1",
        "contractPeriod": {
          "durationInMonth": 12
        },
        "placeOfPerformance": {
          "address": {
            "country": "Ukraine"
          }
        },
        "optionDetails": {
          "optionGroups": [
            {
              "id": "1",
              "description": "",
              "relatesTo": "contractPeriod",
              "options": [
                {
                  "id": "1-1",
                  "durationInMonth": 15
                }
              ]
            },
            {
              "id": "2",
              "title": "",
              "description": "",
              "relatesTo": "placeOfPerformance",
              "options": [
                {
                  "id": "2-1",
                  "address": {
                    "country": "Moldova"
                  }
                },
                {
                  "id": "2-2",
                  "address": {
                    "country": "Romania"
                  }
                }
              ]
            }
          ]
        }
      }
    ]
  }
}

To complete this framework - sort of OptionsToCombine array may be used to indicate the options that considered to be applied as a single batch. Let's combine the 15-month duration of the contract with Romania as an allowed place of performance in this case:

{
  "optionDetails": {
    "optionsToCombine": [
      {
        "id": "",
        "relatedOptions": [
          "1-1",
          "2-2"
        ]
      }
    ]
  }
}

Options for Requirement

Options could allow to include an applicable options into used requirement. Such an approach allows prescribing more precise ranges of expected values. For example: if CA requires EO to have at least one Google certified specialist on his board but ready to grant EO with additional advantage if such EO has more than one guy:

{
  "criteria": [
    {
      "id": "003",
      "title": "Capacity",
      "description": "Minimum qualification requirements",
      "source": "tenderer",
      "relatesTo": "tenderer",
      "requirementGroups": [
        {
          "id": "003-1",
          "requirements": [
            {
              "id": "003-1-1",
              "title": "At least one Google certified specialist on-board",
              "dataType": "boolean",
              "expectedValue": true
            },
            {
              "id": "003-1-2",
              "title": "Number of Google certified staff",
              "description": "",
              "dataType": "integer",
              "minValue": 1,
              "optionDetails": {
                "optionGroups": [
                  {
                    "id": "1",
                    "description": "",
                    "relatesTo": "maxValue",
                    "options": [
                      {
                        "id": "1-1",
                        "maxValue": 3,
                        "description": "Up to three specialist"
                      },
                      {
                        "id": "1-2",
                        "maxValue": 5,
                        "description": "Up to five specialists"
                      }
                    ]
                  },
                  {
                    "id": "2",
                    "description": "",
                    "relatesTo": "minValue",
                    "options": [
                      {
                        "id": "2-1",
                        "minValue": 6,
                        "description": "More han five specialists"
                      }
                    ]
                  }
                ]
              }
            }
          ]
        }
      ]
    }
  ]
}

Options for Targets

Options also could be applicable for targets. For example, CA is going to buy 1000 cars during some period but at the same time, he considered to buy less cars during a shorter period. PE can describe options for target:

{
  "targets": [
    {
      "id": "annualNeed",
      "title": "Annual need",
      "description": "The annual need",
      "observations": [
        {
          "period": {
            "startDate": "2015-01-01T00:00:00Z",
            "endDate": "2015-12-31T23:59:59Z"
          },
          "measure": 1000,
          "unit": {
            "id": "NC",
            "name": "car"
          },
          "optionDetails": {
            "optionGroups": [
              {
                "id": "1",
                "description": "",
                "relatesTo": "measure",
                "options": [
                  {
                    "id": "1-1",
                    "measure": 800
                  }
                ]
              },
              {
                "id": "2",
                "description": "",
                "relatesTo": "perios",
                "options": [
                  {
                    "id": "2-1",
                    "startDate": "2015-01-01T00:00:00Z",
                    "endDate": "2015-09-31T23:59:59Z"
                  }
                ]
              }
            ],
            "optionsToCombine": [
             {
               "id": "",
               "relatedOptions": [
                 "1-1",
                 "2-1"
               ]
             }
           ]
          }
        }
      ]
    }
  ]
}

Draft of release-schema.json of this approach is here

@jpmckinney
Copy link
Member Author

jpmckinney commented Apr 24, 2019

For other readers: CA = contracting authority (buyer), EO = economic operator (supplier), PE = procuring entity. FYI, re: requirements, here's a real example of "option for 1 000 litres containers".

@PaulBoroday Can you provide a link to the regulation you are referring to? ("Regulation 32(11) and 72(1)(a)")

So far, among the jurisdictions we've looked at, there is no structured data about options. For example, in the EU's eForms consultation, within the Purpose business group (which is specified per lot), there are only two fields: a yes/no field to indicate whether there are options, and a free-text field to describe the options.

In the absence of structure, we see a wide variety of free-text values, many of which can't be easily structured without loss of detail. To preserve that detail, a non-machine-readable, human-language sentence is needed, for example:

One off purchase of equipment with the option to extend the maintenance for a further 60 months or until the end of life of the equipment.

(Note: Many of the TED notices seem to incorrectly use "Options" instead of "This contract is subject to renewal" under "II.2.7 Duration of the contract, framework agreement or dynamic purchasing system" or instead of "II.2.10 Information about variants", etc.)

In general, OCDS doesn't propose a structure until we can identify common data elements across multiple jurisdictions. As of now, we can identify common data elements in specific scenarios (if the option is very simple) but not in others. As such, I think it's premature to establish a structure.

@PaulBoroday
Copy link

PaulBoroday commented May 14, 2019

@jpmckinney
It’s EU24, articles 32, 72

@ColinMaudry
Copy link
Member

@PaulBoroday In the comment above you say that using the current options extension and a place of execution "it is totally impossible to process this... ".

Could you develop? I don't see what the problem is.

@PaulBoroday
Copy link

@ColinMaudry, my point is if you have all the options described as a free-text - you cannot do anything automated (process inside eProcurement system) or even read it, for example, for analytical needs

@ColinMaudry
Copy link
Member

@PaulBoroday Ah OK. You point then was that it's complicated to parse the options field when one property is subject to change, but it's impossible if it's more than one.

I'd say that free text is never safe to process unless strong conventions are enforced, even if only one property is mentioned in options 🙂.

@jpmckinney jpmckinney added this to the Extension Explorer milestone Jan 20, 2020
@jpmckinney
Copy link
Member Author

Now in Explorer: https://extensions.open-contracting.org/en/extensions/options/master/

As mentioned in an earlier comment, it remains premature to model structured information about options, without additional examples from more jurisdictions. As there has not been external participation in about a year, I'll close this issue. We can re-open the issue once additional examples become available, or open a new issue in the https://github.com/open-contracting/ocds-extensions repository.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Extensions - Drafted Relating to a drafted extension Focus - Extensions Relating to new or proposed extensions, or the governance and maintenance of extensions
Projects
None yet
Development

No branches or pull requests

3 participants