Closed vidhyaneel closed 1 month ago
Greetings,
As you pointed out, every QUESTION to be answered must be provided in the REQUEST by the CA.
Following the case you provided, a QUESTION_SUBGROUP criterion element with 0..n cardinality (with value f5276600-a2b6-4ff6-a90e-b31fe19dae41) the fixed UUID must be kept for every occurrence of the QUESTION_SUBGROUP.
In the other hand, the UUIDs created dynamically for each dependent QUESTION (ie, Date of conviction, Reason...) must be unique and this unique UUID is the one that will be used in the cac:TenderingCriterionResponse.
In the snippet you provide if the REQUEST HAS two cac:SubsidiaryTenderingCriterionPropertyGroup for f5276600-a2b6-4ff6-a90e-b31fe19dae41
<cac:SubsidiaryTenderingCriterionPropertyGroup>
<cbc:ID schemeID="criterion" schemeAgencyID="EU-COM-GROW" schemeVersionID="3.0.0">f5276600-a2b6-4ff6-a90e-b31fe19dae41</cbc:ID>
<cbc:PropertyGroupTypeCode listID="PropertyGroupType" listAgencyID="EU-COM-GROW" listVersionID="3.0.0">ONTRUE</cbc:PropertyGroupTypeCode>
<cac:TenderingCriterionProperty>
<cbc:ID schemeID="criterion" schemeAgencyID="EU-COM-GROW" schemeVersionID="3.0.0"> UUID-1</cbc:ID>
<<cbc:Description>>Date of conviction</cbc:Description>
<cbc:TypeCode listID="CriterionElementType" listAgencyID="EU-COM-GROW" listVersionID="3.0.0">QUESTION</cbc:TypeCode>
<cbc:ValueDataTypeCode listID="ResponseDataType" listAgencyID="EU-COM-GROW" listVersionID="3.0.0">DATE</cbc:ValueDataTypeCode>
</cac:TenderingCriterionProperty>
...
</cac:SubsidiaryTenderingCriterionPropertyGroup>
<cac:SubsidiaryTenderingCriterionPropertyGroup>
<cbc:ID schemeID="criterion" schemeAgencyID="EU-COM-GROW" schemeVersionID="3.0.0">f5276600-a2b6-4ff6-a90e-b31fe19dae41</cbc:ID>
<cbc:PropertyGroupTypeCode listID="PropertyGroupType" listAgencyID="EU-COM-GROW" listVersionID="3.0.0">ONTRUE</cbc:PropertyGroupTypeCode>
<cac:TenderingCriterionProperty>
<cbc:ID schemeID="criterion" schemeAgencyID="EU-COM-GROW" schemeVersionID="3.0.0">
UUID-2</cbc:ID>
<cbc:Description>Date of conviction</cbc:Description>
<cbc:TypeCode listID="CriterionElementType" listAgencyID="EU-COM-GROW" listVersionID="3.0.0">QUESTION</cbc:TypeCode>
<cbc:ValueDataTypeCode listID="ResponseDataType" listAgencyID="EU-COM-GROW" listVersionID="3.0.0">DATE</cbc:ValueDataTypeCode>
</cac:TenderingCriterionProperty>
...
</cac:SubsidiaryTenderingCriterionPropertyGroup>
the RESPONSE to each QUESTION must be answered with the referred UUID like follows:
<cac:TenderingCriterionResponse>
<cbc:ID schemeID="ISO/IEC 9834-8:2008 - 4UUID" ...>...</cbc:ID>
<cbc:ValidatedCriterionPropertyID schemeID="Criterion" schemeAgencyID="EU-COM-GROW" schemeVersionID="3.0.0"> UUID-1</cbc:ValidatedCriterionPropertyID>
<cac:ResponseValue>
<cbc:ID schemeID="ISO/IEC 9834-8:2008 - 4UUID"...>...</cbc:ID>
<cbc:ResponseDate>XXXX-XX-XX</cbc:ResponseDate>
</cac:ResponseValue>
</cac:TenderingCriterionResponse>
<cac:TenderingCriterionResponse>
<cbc:ID schemeID="ISO/IEC 9834-8:2008 - 4UUID" ...>...</cbc:ID>
<cbc:ValidatedCriterionPropertyID schemeID="Criterion" schemeAgencyID="EU-COM-GROW" schemeVersionID="3.0.0"> UUID-2</cbc:ValidatedCriterionPropertyID>
<cac:ResponseValue>
<cbc:ID schemeID="ISO/IEC 9834-8:2008 - 4UUID"...>...</cbc:ID>
<cbc:ResponseDate>XXXX-XX-XX</cbc:ResponseDate>
</cac:ResponseValue>
</cac:TenderingCriterionResponse>
Please, let us know if you require further detail.
Thanks @psotofer for your last comment here. But this means that the suppliers won't be able to reuse any existing xml response for the questions for which UUIDs are generated dynamically. They will have to populate these fields in the UI manually, correct?
Greetings, If UUIDs are unchanged in the RESQUEST document they can be reused. However, the same UUIDs provided in the REQUEST must be referred in the answer provided (if any) in the RESPONSE document.
Please advise if this answer your doubt.
This issue is closed as a duplicate of issue 311 (https://github.com/ESPD/ESPD-EDM/issues/311), since both of them are related to the use of UUIDs.
Greetings,
We reopen this issue to address the reuse of xml you pointed out in your last message: we are currently working on this and will come back to you when we have the final results of our analysis. Best regards.
Greetings, As we discussed in the last OUC meeting, this is a first proposal to define a reusable identifier to replace all the dynamic UUIDs present in the current version of the ESPD-EDM.
We propose to use a new identifier following a hyphen separated format, similar to the UUID currently in use. Format: CCCCCCCC-XXXX-SSSS-EEEEEEEE-RRRRRRRR [8] [4] [4] [56] [56]
For instance, we would find this identifier in a REQUEST element: 4908c6dc-a52d-0001
The previous example would be updated in the RESPONSE element with EO+Country and the response value like this: 4908c6dc-a52d-0001- 84113de743e6d6f4e09ed430576ee18ef5ff786524778ecf482c86b3- cf655931d7b5dd0a2880633ab7be2f4395857f67edddd7f5ad6ede0c
Following this example, we would change from this current identification model
to this other model with the new hash values:
The identifier defined for the REQUEST is enough for uniquely identify every element while the identifier blocks added in the RESPONSE represent added information that would allow to store and reuse response values.
We are currently analysing the performance cost associated in the hash calculations and will come back to you with the results.
Any comments or ideas you would share with us regarding this proposal are more than welcome. Thank you.
Greetings, We will be very please to hear about any suggestion or question you have regarding this topic. Thank you.
Hi, we are reviewing your proposal. We will share our thoughts in the next comment.
Greetings,
We will be very please to hear about any suggestion or question you have regarding this topic. Please, let us know in advance so we can best answer any doubt in the incoming 7 October OUC. Thank you.
Hi, the proposed solution seems to be a valid one assuming that the number of responses to the questions is not limited. If we could limit it then we could have the constant number of questions (eg. 10) - each of them with its UUID what ultimately would allow for reusing response values.
Greetings,
As discussed during the Open User Community meeting on 7th October, here we include additional information regarding the Issue.
First of all, how are the UUID managed currently:
ESPD-criterion document declares UUIDs for QUESTION elements subject to multiple cardinalities as blank fields. This defines those particular Identifiers as values to be initialized dynamically at the moment the ESPDRequest is created.
Those UUIDs dynamically generated for each QUESTION are provided as a unique UUID in the REQUEST document and need to be referred afterwards in the RESPONSE in the related cac:TenderingCriterionResponse.
The following example shows that a criterion with two cac:SubsidiaryTenderingCriterionPropertyGroup> includes two dynamic UUIDs, one per
And then, the answer in the ESPD response looks like: (Note that as stated before, these UUIDs generated in the request are generated automatically and randomly. This means that every single procurement procedure would create a new random UUID that would not allow the reuse)
In this approach, similar to our previous solution, we propose:
Use an identifier following a hyphen separated format, like the UUID currently in use.
Format: CCCCCCCC-XXXX-SSSS-RRRRRRRR
• CCCCCCCC (REQUEST): Criterion coded with CRC32 hash function. For instance, crime-org would be coded as 4908c6dc; • XXXX (REQUEST): Fixed unique code. This value will be defined in the ESPD criteria to ensure identifiers are collision-safe; • SSSS (REQUEST): Sequence value needed to address multiple cardinalities. This value is local to the group with multiple cardinalities; • RRRRRRRR (RESPONSE): Response coded with SHA224 hash function;
For instance, we would find this identifier in a REQUEST element:
0416ea49-e90a-001
The previous example would be updated in the RESPONSE element with the response value like this:
0416ea39-e90a-0001-04cr4e5c6790d60392d3468b2e4c24fd1e84b4a4a2cbcef3b17f33
In the following example for the yearly turnover in both models, the current and the proposed
• The UUID assignment following the actual dynamic generation would give the following results:
• With the new model option, the code would be as shown below
Pros and cons for the new proposal (codifying only the response values):
Pros: (1) Allows reusing information on both sides; (2) Reduces redundancy when providing the information of the economic operator and the country. (3) All UUIDs are defined in one ESPDRequest document.
Cons: (1) Major change: No UUID standard compliant code. Completely new identifier generation process; (2) In case of full code refactoring, new conde registration will be needed in eCertis.
Additionally to the comment above, during the last OUC (07-10-2021) it was discussed the possibility of limiting to a certain number of possible questions was discarded. Find as a quote the topic discussed and discarded:
Hi, the proposed solution seems to be a valid one assuming that the number of responses to the questions is not limited. If we could limit it then we could have the constant number of questions (eg. 10) - each of them with its UUID what ultimately would allow for reusing response values.
It was discarded as it is deemed better to define a global solution that is not constrained with specific constants that might become obsolete.
Greetings,
We have discussed and prepared an alternative approach within the InterProc consortium.
This approach aims to preserve the benefits of fixed Question IDs (e.g. reusability of an ESPD Response artefact) and provide an alternative solution, due to some issues the CEF Action INTERPROC consortium has detected in the Publication Office (OP)'s proposed solution.
The approach presented below identifies problems in the OP solution, states the goals of the solution, presents the pre-requisites and assumprions, and details an alternative solution together with an example to show re-use.
According to what already said, if the owner of an ESPD Response wants to reuse some of the Questions of the crime-org Criterion, let's assume those in the orange rectangle, he/she will never reuse a particular Question only. The most logical approach is to reuse the whole context (e.g. the whole Question Group), which for the above example contains the Questions 1...4:
The goals of the approach are the following:
The assumptions we make in our approach are the following:
The solution we propose for the construction of the Question fixed IDs is simple hierarchical indexing.
The Question ID format consists of three main parts.
Below, we present a visualization of the above description. The ID of a Question in the ESPD Request will look like:
As for the ESPD Response, the ID remains the same for the Question and the answers.
For the Questions 1...4 from the first figure, the ESPD Request XML part will look like:
and the ESPD Response XML part (the answers) will look like:
Below we present how the re-use of the ESPD Response works. Let's consider that we have:
Below there is an example on how to use an answer (response) from an old ESPD Response with a new ESPD Request in order to create a new ESPD Response.
, , : Question Groups with the same UUIDs, within the same Criterion
The steps in order to re-use an answer are:
Following discussions in the OUC, various proposals for addressing multiple cardinalities in the response have been discussed:
Description of the "XML Path Like Variant" proposal
We have further developped this variant with additional features:
The proposal provides a path to a target criterion element (criterion elements can be captions, questions, requirements, responses, etc. see column 1 below). This proposal is based on a pre-defined short tag name for each element and a numbering according to the position within the tree structure.
The table below shows the criterion elements’ short tag and corresponding UBL element.
The sample below shows the tagging and numbering of the criterion C1 EG crime-org.
![UUID_Criterion_Tag_Numbering_reduce_jpg](https://user-images.githubusercontent.com/102807568/187675847-feeaf16e-d9e0-4452-8e97-4e837742e276.jpg)
The sample below shows a corresponding XML extract related to the "TenderingCriterionProperty" (structure) for the Question "Date of conviction" of Criterion C1 EG crime-org.
![Question_XML_VARIANT_jpg](https://user-images.githubusercontent.com/102807568/187676138-650dfbf1-cfa8-4e7e-aa21-a706d8a7e7d3.jpg)
The sample below shows a corresponding XML extract related to a "TenderingCriterionResponse" (contents) for the Question "Date of conviction" of Criterion C1 EG crime-org.
![TenderingCriterionResponse_XML_VARIANT_jpg](https://user-images.githubusercontent.com/102807568/187676228-7478755c-1f26-4bf9-920c-4e8d2a1393be.jpg)
The sample below shows a corresponding XML extract relating to a "Requirement" for the "Number of fiscal years" of Criterion C32 SC spec-year-to. Requirement values are nested within the structure and therefore can apply to a specific question, question group or to the complete structure.
![Requirement_XML_VARIANT_jpg](https://user-images.githubusercontent.com/102807568/187676729-7580d4b6-28a2-4b73-9d17-478aaf77d935.jpg)
The responses provided are validated against these requirements (constraints).
Description of the "UUID Variant" proposal
This proposal keeps the framework of the UUID (fixed and dynamic), but changes the way the link between the Request and the Responses are managed.
This proposal restores a direct link between the request and its various responses by re-using the same dynamic UUID from the request for all the occurrences of the target element (Question) in the responses.
In order to distinguish among occurrences within the response, semantics are injected into the contents for each "TenderingCriterionResponse".
The sample below shows patten related to a "TenderingCriterionResponse" ID for the Question “Date of conviction” of Criterion C1 EG crime-org (adapting the UUID currently in use).
The sample below shows a corresponding XML extract related to the "TenderingCriterionProperty" (structure) for the "UUID Variant" proposal (Question "Date of Conviction" of Criterion C1 EG crime-org). This extract is the same for the “UUID As-Is".
![Question_UUID_As_Is_VARIANT_jpg](https://user-images.githubusercontent.com/102807568/187677355-348001ea-63af-4711-ae0a-ce4a5a7d86b1.jpg)
The UUID for each response contents is different. However, it is related to the structure (Question) via the ValidatedCriterionPropertyID.
The sample below shows the XML extract related to a "TenderingCriterionResponse" (contents) for the "UUID Variant" proposal (Question "Date of Conviction" of Criterion C1 EG crime-org).
![TenderingCriterionResponse_UUID_VARIANT_jpg](https://user-images.githubusercontent.com/102807568/187677458-6be44147-8720-4bc7-bf7e-b9c676acb6f0.jpg)
The sample below shows the XML extract related to the "Requirement" "Number of fiscal years" of Criterion C32 SC spec-year-to). Requirement values are nested within the structure and therefore can apply to a specific question, question group or to the complete structure.
![Requirement_UUID_VARIANT_jpg](https://user-images.githubusercontent.com/102807568/187677547-cd6e7c51-2955-40ad-a877-2f43e3006c89.jpg)
Comparison of the XML Path Like Variant proposal and the UUID Variant proposal
The XML Path Like Variant proposal is a structure-based approach that aims at replacing the dynamic UUID. Each time, the structure changes, the paths have to be recomputed.
On the other hand, the UUID Variant proposal keeps the dynamic UUID, but adds semantics. The property used for validation (ValidatedCriterionPropertyID) has a constant UUID. However, the dynamic UUID for the response contents (TenderingCriterionResponse ID) has a tag added (Rn) to differentiate the various response occurrences.
Hello @konstantinosraptis91,
The solution was implemented in ESPD-EDM v4.0.0 via XML path like IDs replacing dynamic UUIDs.
Hi, Referring to the Exclusion Criteria , pasted below. If the Contracting Authority provides only one set of Questions for Question SubGroup (Row 13) (See XML snippet from Request below) in the ESPD Request and if the EO wants to provide multiple responses , how will he generate the UUID to be put in the
<cbc:ValidatedCriterionPropertyID schemeID="Criterion" schemeAgencyID="EU-COM-GROW" schemeVersionID="3.0.0">478e8188-04dd-4da4-961f-835165b2ab15</cbc:ValidatedCriterionPropertyID>
for the 2nd or 3rd set of questions, as the CA has provided only one set in the Request.Or does the CA have to provide the unique number of TenderingCriterionProperty and subsequent questions for the EO to answer against ?
Request Snippet: