-
Notifications
You must be signed in to change notification settings - Fork 46
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
Update all status codelists #1160
Comments
More generally: why isn't there just a single contractingProcess.status field, i.e. what are the use cases for having one in each block? Also, shouldn't there be a planning.status, since there could be an OCDS planning process that would not have eForms have a Not Awarded Reason (BT-144) field that lists various reasons why a process could be unsuccessful. I could imagine classifying the different fields into whether the "unsuccess" happened at the tender, award or contract stage. However, if that is the approach, we should explain it in quite some detail, probably both in the general https://standard.open-contracting.org/latest/en/guidance/map/unsuccessful_tender/ (the name of which shouldn't be just about the tender though) and https://standard.open-contracting.org/latest/en/schema/codelists/#closed-codelists. |
@JachymHercher The idea behind The problem is that it doesn't carry enough granularity and one must analyze the data further (awards? contracts? suppliers?) in order to infer accurate insights. The proposal of Jachym is interesting:
I suggest we first reflect on what questions we would like to ask the data :) |
There are multiple status fields, because each object can have a different status. For example, in the same contracting process, one contract might be terminated while another remains active. One award of a lot might be unsuccessful, while another award of another lot is active.
There is no top-level status because, well, it's not clear what it would express. What do you label a contracting process with a completed pre-award stage, cancelled awards (due to complaints), unsuccessful awards (no qualified bidders), active awards, and a similar mix of contract statuses? We can define use cases, but there is no demand yet. For comparison, OC4IDS has a simple contracting process status codelist, which is just pre-award, active or closed. There is no Regarding eForms, in TED R2.0.9, there were just two reasons for non-award, which in OCDS are expressed using the free-text field Award.statusDetails: https://standard.open-contracting.org/profiles/eu/master/en/forms/F03/#V.1 |
In any case, I agree that non-success ought to be better explained, which is the subject of this issue, viz:
|
Thank you for the clarifications, @jpmckinney and @ColinMaudry, I understand better now, esp. that Beyond scope for improvement in the documentation and description, I think there might be others problems with 'unsuccessful' eForms' Not Awarded Reason (BT-144) contains the following codes:
Assuming that 'cancelled' is intended to be "unsuccessful because the buyer cancelled it" while unsuccessful is "unsuccessul for any other reason", my impression is that:
|
My understanding is that, in OCDS jargon
That means that the tendered items (it can be a lot) has not been awarded, e.g. if none of the bids was good enough. In the eForms codes, that would encompass:
(maybe more, but these are the ones for which I'm pretty confident)
I think I don't have enough experience in procurement to help on these ones :) |
I'd put 4. only in We can decide that 1 & 2 & 3 belong in |
Since we mentioned lots (from the Lots extension): each lot has a status field, which uses the tender.status codelist. So, it is not necessary to create an award related to a lot in order to describe the status of the lot. Taking a step back, I believe contract.status = 'cancelled' exists because contract.status = 'pending' exists, and the latter needs statuses to transition to. To be honest, I'm not sure what information could be on a pending contract object that can't be on an award object. In principle, I see no issue with modelling this information on the award. However, the only way to remove 'cancelled' is to also remove 'pending'. I think the reasons provided by eForms are a good way to think through the scenarios. Other governments sometimes have very long lists of possible reasons for cancelling procedures, but I think they all fall within one of the existing codes. Going over it again: (1) No tenders, requests to participate or projects were received Yes, these would be tender.status = 'unsuccessful' ("The tender process was unsuccessful.") (4) The highest ranked tenderer(s) refused to sign the contract I think this can be award.status = 'unsuccessful', but we'd probably want to clean up contract.status as outlined above. (5) Decision of the buyer, because of insufficient funds @JachymHercher You put these as 'cancelled' under tender.status, award.status, and contract.status. Is that because the buyer can make this decision at the times below?
(7) Decision of the buyer, not following a tenderer's request for review, because of technical or procedural errors @JachymHercher You put these as 'cancelled' under tender.status and award.status. You also put 8 under contract.status if "a contract can be cancelled after judicial review even though ti has been signed already". Is that because the buyer can make this decision at the times above? (9) Decision of a review body or another judicial body @JachymHercher You put this as 'cancelled' under tender.status. You also put it under contract.status if "a contract can be cancelled after judicial review even though ti has been signed already". Why at these times, and only at these times? (Why can't this decision come after deciding the supplier, but before contract signature?) This discussion suggests to me that it might be advisable to remove 'pending' and 'unsuccessful' from contractStatus, and for contract objects to only exist if there is a signed contract. That contract can still be 'cancelled' (e.g. after judicial review). If that proposal doesn't achieve consensus, we'll just need to be clear when to use contract.status = 'unsuccessful' versus award.status = 'unsuccessful'.
We don't currently have the evidence to propose new codes that work across jurisdictions. If we collect that evidence, we can propose new codes – and then decide whether to deprecate old codes. This would be a separate issue.
No, and I'm ignoring it for this discussion, since it has no semantics. |
Another good next step would be to ask OCDS Helpdesk analysts to describe how implementers have used these codes. |
I've started replying to the questions, but I think it ultimately all boils down to where stages/phases start and finish. (If this doesn't help enough, I'll reply to the individual questions.) My perception:
|
Yes, I think we need to establish those boundaries between stages to resolve this issue: that is, to be able to describe which events cause a given stage to be unsuccessful. First, a simpler way to resolve the semantic conflict I described earlier is to change the description of the Contract object ("Information regarding the signed contract between the buyer and supplier(s)") to allow for unsigned contracts. Also, I think the questions for which I tagged you (@JachymHercher) are not too closely tied to specifying the boundaries, but are rather for me to understand in what scenarios a process is cancelled. Now, the boundaries. To summarize my longer comments below, I suggest:
The longer version: Planning/Tender
Tender/Award
Award/Contract
Given that it mentions suppliers, I assume the idea was that an award could be initiated to a supplier, and then somehow not succeed (e.g. the supplier doesn't sign the contract). There's no code in It also seems to suggest that an unsuccessful award could specify items without specifying suppliers. In that case, the interpretation would be that those items were not awarded to any supplier. This is really about lots, but in OCDS 1.0 there were no lots. So, in this interpretation, the 'unsuccessful' code was a workaround that now overlaps with |
I agree, I've noted it in #896 (comment) and will update the definition once we're done here.
I think the bid submission deadline is more useful. Mainly because, at least in the EU, in an open procedure, you can choose whether you first evaluate the qualification criteria or the award criteria (a very useful provision, the reasoning being that if you know a bid is too expensive to win, then don't waste time checking the tenderer's credentials), so using it as a threshold would be quite fuzzy; also I think it makes sense to bundle the evaluation of qualification and award criteria together, because they are quite similar; and also the bid submission deadline is a more important, official and public piece of information.
In principle I would like it, but I get worried about the details. If, after an award, the buyer first informs the tenderers (e.g. in their eproc system or by email), waits a week, and then informs the general public, where does the award stage end?
Ending with the award decision has the advantage of being very clear and official.
I originally proposed them as (I would then put "The highest ranked tenderer(s) refused to sign the contract" in
Updating the description of tender a bit doesn't sound like a bad idea to me.
"Yes", or rather before the bid submission deadline; after the bid submission deadline and before contract signature; after contract signature (e.g. I cancel the contract and pay the penalty).
Same as above. On second look though, I guess (7) could apply also to
Sorry, my bad, this should have indeed been also for |
Here is the list of action points based on this issue so far:
Note: All but 4) is moved to #1385; 5) and 7) concerns both this issue and #1385. |
@JachymHercher Great summary, thanks! |
Currently, the standstill period (see #1142) is part of the award stage. Is the proposal for the standstill period to instead be part of the contract stage, and thus remove the 'pending' code from the award status codelist? |
If we decided that tender and award stages end with bid submission and the award decision, respectively, then indeed the standstill period would be part of the contract stage. This would require changing the description of 'pending' in the award status codelist, as that currently in effect only covers the standstill period. I wouldn't remove the code as such though - I think it should be used to inform about any award for which tenders were already submitted, but no decision was issued yet (e.g. under evaluation). "The end of the standstill period" might be an even better candidate for the end of the award stage though. It avoids my main objections to ending the award stage with "informing the tenderers/public" (proposed in #1160 (comment)) because the end of the standstill period is neither ambiguous nor informal. Furthermore, by definition, it precedes the conclusion of the contract. The only thing I have no clue about is how much remedies apply outside the EU (I gather they are part of UNCITRAL, but I think they are not part of GPA). However, maybe that isn't a problem, as the definition could be ~"end of the standstill period, if there is none, then the award decision". (If we went this way, then the standstill period would be part of the award stage, but we should still broaden the definition of the 'pending' award status.) |
@JachymHercher Sounds good! |
@jpmckinney moved this to #1385 |
|
In my comment above, I've clarified that bid submission falls into the tender stage and not the award stage, as discussed above. Furthermore, I've added alternative wordings and clearer identification of which blocks, fields and codes should change. The comment now covers answers to questions 1-3 in #1160 (comment). |
The changes proposed to the [block]Status codelists are listed in the table below. I've introduced the changes discussed above (update cancelled/unsuccessful), standardized the wording and added examples from the eForms' codelist. Furthermore, I suggest the following changes not discussed above:
Note: the descriptions repeat the important moments (e.g. bid submission deadline passed) of a contracting process. We could avoid this by saying "the end of the stager stage", "the award stage", etc., but then readers would have to look for what it means. I think in this case, repetition might be better. Note2: The use of past tenses needs a native / grammar obsessed proofreader :). The proposal above covers (above and beyond) point 4) from #1160 (comment). Before going further (preparing a PR / drafting the guidance), it would be great to get the views of @jpmckinney (and/or others) - it's a lot of changes. |
Sounds good. I'm just double-checking how some use cases will work. Of course, we will need to update some worked examples, red flags and indicators calculation, etc., but we will need to do that for other improvements anyway. |
Split to #1582 |
@jpmckinney please can you confirm that I've understood what needs to be done from the proposal in #1160 (comment):
In #1509:
|
I've resolved the merge conflicts.
I think Jáchym did that in 469e540 The rest sounds good! |
@jpmckinney should I make all the changes in #1160 (comment) as part of #1509 or should I create separate PRs for points 3 and 4? |
Let's do it all at once. It'll make it easier to track the closing conditions for this issue. |
The additional details would be the more specific reason (insufficient funds, etc.), like |
For 1.2, we need to rename it to |
Done in #1648 |
The 'unsuccessful' code's description is:
This seems to imply that if the process is unsuccessful, then there would be an award object without suppliers and
status
set to 'unsuccessful'.But, https://standard.open-contracting.org/latest/en/guidance/map/unsuccessful_tender/ doesn't mention awards. This seems correct for, e.g., a procedure where all tenderers were excluded because of exclusion grounds or selection criteria.
The OCDS for EU profile uses awards in F03. Since there might be many CANs for the same procedure, and it's unknown whether a later CAN will be successful, this approach makes sense. But, it means all awards could be unsuccessful.
The text was updated successfully, but these errors were encountered: