-
Notifications
You must be signed in to change notification settings - Fork 13
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
Rejection / termination of IIAs #41
Comments
According to the description of the in-effect element, it is not even good for termination.
You are right, does not seem a good idea for me too.
We could add such possibility, but I see some problems. In the approval API we use CNR + get approach. So to be able to send rejection response we have to keep the rejected agreement. For how long? The rejection reponse limited to the "REJECTED" flag is also not very interesting, so partners would probably have to communicate outside the network. Or we should make the approval/rejection response more complicated, which we probably do not want to.
Maybe this is a good idea? |
Not sure if a bit late on this issue but: 1st suggestion is: Status codes can be listed on the specs/xsd file: such as "rejected", "approved", "terminated", "pending", etc. Cons: Implementing a new API? 2nd and better solution would be to add a status field to the get endpoint. This approach would not need a new API or CNR. Pros: Shorter implementation time both for developers and the API maintainers. What would you think? |
In my opinion, a situation where agreement is terminated is not a standard situation in which no other communication channel is necessary. So, once it has been agreed that the agreement is terminated, perhaps one party will only need to modify the end dates and the other will download them through the EWP? In the case of rejection, adding a field to the status in which the value "rejected" could appear would mean that the university that does not want a specific agreement would have to keep it in its system only to send it with the "rejected" status in get response . |
I agree that it is not a standard situation but this still can occur and EWP should cover such situations, too, with solutions as possible as keeping the things simple. Setting an end date or a previous academic year for the agreement is an option and would work. And just out of curiosity question: |
Currently, our system (USOS, used in many Polish universities) does not include the option of archiving agreements. As far as I know, old agreements are not removed either, or at least the University of Warsaw does not remove the old ones. Each agreement is linked in our system to one or more exchange programs (such as Erasmus+, govenment sponsored agreements, individual agreements etc.). Currently, we send only Erasmus+ agreements via EWP. |
Regarding rejection: Regarding termination: |
Ad. Regarding rejection: Ad. Regarding termination: |
In our opinion, a status flag in the existing IIA API is much cleaner and leaves no scope for any ambiguity. |
It was brought to our attention, that we have such use-cases as well, being:
Is there any recommendation on how to handle these scenarios in a clean way? |
Unilateral termination of the IIA is part of the official template, so there should definitely be a status flag for "termination" for covering this use-case. Rejection is another use-case and should be treated diferrently, with a diferrent status flag. To be honest, a timestamp of a "termination" status flag is also a must from a template perspective because you need to make sure that you have notified your partner at least a year earlier. |
Please, whoever is following this issue, share your opinion. If possible before the end of September. |
We currently handly rejection with an internal flag, parter is not notified about this. |
Rejection is a serious action and partners should be notified.
I believe you mean that you change the duration of the agreement. In that case, how do you know that it has been terminated and it was not so from the beginning? Notification for termination is a contractual obligation and should be clearly communicated to the partner and its receipt should be confirmed somehow.
Some uses cases are often based on erroneous interpretations of the obligations.
I believe that only rejection and then deletion is appropriate for erroneous agreements (on the premises that we are talking about agreements with errors that could not be fixed). Termination means that an IIA has been checked and put into place and that at some point we agree to terminate it. It is not erroneous, it is just not desired any more. |
I agree that there should be a status flag. A status flag can have different status types. If this status flag is included in the iia-get endpoint/content, then we will not need a new API for this. Also for termination related statuses, there is a need of a termination date field. See below: status types:
Notes for fields:
One important point is that this status field should exist for both partners. And a good place to put these fields would be the partners section of the iia-get content. And when these status/date fields are modified/updated on a partner's system, that partner should definitely need to notify the other partner with an IIA-CNR. This way the other partner will fetch the IIA and see the termination related fields and do the necessary updates on their system. If no CNR, the partner will not know or be informed about a termination decision from their partner. Hope it is clear. @janinamincer-daszkiewicz Why the end of September? Shall we expect new changes or a new version? PS: we need a iia-notes field to be added to the get API and I will open another issue for this. |
I believe that to move forward with terminating the IIAs, with the specifications that already exist, a new API is needed for informing the other partner that a specific IIA as been terminated (neither the approval CNR API ou the normal API should be used for this). Also, if we cannot use the in-effect tag, we would need an extra parameter to flag this situation in case some partner does a get request of an IIA that has been already terminated. Nevertheless, if the idea is to review all the methods and procedures, and launch a new version without backward compatibility, perhaps all the APIs should be reviewed, along with all the processes, to check what makes sense to maintain or not, and add/remove/change the APIs accordingly. |
@lioliosn I was speaking only about the technical level, and there are currently no technical means for these scenarios/notifications. |
@georgschermann Thanks for clarifying, although my intention was to highlight the need for alignment between technical and business level. |
Some changes in the IIA and IIA Approval APIs will take place by the end of 2022. It makes sense to group them to make the change in the major number of the APIs once. During the Infrastructure Forum meeting on 2022-10-19 we discussed the following issues:
The possible solution, discussed in this issue and during the mentioned meeting, is to add a state field to IIA. The possible values for this field and their meaning are yet to be defined. Let start from the following draft proposal:
Please share your opinion in this issue. We will discussed this topic further during the Infrastructure Forum meetings in 2022 and will vote on the proposal either on 2022-11-16 or (final date) 2022-12-14. States will not solve the need to make changes in the approved agreement. This topic will be discussed in a separate issue: #92. |
I don't know what is the regulation in other countries, but in Italy we have to keep track of every document exchanged for several years. Therefore, I have had to solve this problem in our system, because the deadline is coming. I think others have had to do in a similar way. Approved: can I really rely on this state to be sure that an IIA is approved? I think that this state already exists and is the "In Effect" element. We set it to true when our copy is approved by the partner, that should do the same when we approved its copy. If we both answer to the IIA-Get with the same couple of IIA-Id (our ID, partner's ID) and both of response declares the IIA "in effect", I consider it as Approved. Deleted could be useful only if the IIA has never been approved; something approved could not be deleted, but only modified, or better (for easier management on my mind) closed. But if an IIA has been deleted it might be because it contains something that we don't want to share anymore, therefore we don't want that the IIA Get Response contains the full IIA marked as deleted. I think that "deleted" could be contained in the response as for unknown ID (and status 200). That is, empty response for unknown ID, deleted for an IIA that is no more sharable Terminated could be redundant if it refers to the natural deadline (last academic year in cooperation conditions). Could be useful if it was renamed "Terminated-after-academic-year" and it contained the last academic year it will be (or was) in effect, if it will be introduced the possibility to change an IIA by closing the one in effect and creating a new one. |
I think that:
|
Regarding the "draft" status. This is a temporary working name and may not fully reflect the reason why the status was proposed. I was thinking about the name "work in progress", which is not perfect either. Of course, the brand new IIA, while entering into the system, should not be made available via EWP. Let us assume, however, such a situation that an unsigned IIA is already in the systems of universities A and B. Both universities provide their copies via EWP. University A proposed changes. University B has downloaded these changes, but needs to think about them. During this time, B should rather not hide its copy of IIA from the partner, but make it available with the status "draft" (or "work in progress" or whatever we will call it) until B processes the IIA on its side. Another example is the automatic download of IIAs by the Dashboard and sharing them via EWP before the Dasbhoard user even sees the downloaded IIA. Some other developers and users find this solution controversial, and both sides have meaningful arguments for and against it. If the status discussed here existed, the problem would be solved by itself. |
I guess there may indeed be use cases in which the draft status could be useful. Apart from the mentioned use case I can think of partner A exposing their draft and partner B being able to import it to their system, which could reduce the workload of partner B a bit (provided that their mobility system offers some import functionality, of course). Anyway, I would still prefer a solution in which the status would be inferred from the contents of the IIA and not a solution in which the status would be declared explicitly by some status element. But this is rather a technicality. Another, more important question is, what shall we do in the meantime until these changes are present in production implementations of the majority of providers. My personal guess is that even if we agree on a new specification, it will take at least a year before a considerable number of nodes will have them implemented. And during this time coordinators will need to create amendments. I think we need to think of some guidelines for using the current specification in order for coordinators to be able to handle amendments especially in the first half of 2023. My suggestion is to explicitly allow IIA changes after the IIA has been signed/approved by both parties. Some (and I hope most) systems allow this. Some, such as Dashboard, don't. I don't really understand why this should be disallowed. But if there are good reasons for this restriction, it would at least help to know which system allows this and which does not. Otherwise "my" coordinators create an amendment and then have to guess why the counterparty does not see the changes - is it because the other system decided this is not possible after the IIA is signed by both parties? Or is it another technical issue? |
We can discuss whatever we want, but the model master-master and the asynchronous operations will always require to introduce a new workaround. Therefore, we have complicated the present model without solving the starting problem. In my opinion, we could not rely on EWP for solutions that its model cannot satisfy. Then we couple our and partner's IIA-ID and we send a CNR approval; we have to save in our DB that we sent the CNR approval, the IIA ID and the conditions hash of the partner's IIA (the one we intend to approve). At this point we have to download again the IIA and check its hash code against the one we saved when we sent the CNR approval. We have to inform immediately our operator that the partner's IIA is changed so that he/she could examine the new IIA and send a new CNR Approval. |
In erasmus-without-paper/ewp-specs-api-iias-approval#5 the discussion goes in the direction of keeping/sharing statuses (and comments). Here I rather see arguments against statuses. I agree with Jiri, that it would be great to have a solution in which the status would be inferred from the contents of the IIA and not a solution in which the status would be declared explicitly by some status element. That would be like having virtual statuses with a meaning based on the other attributes of an IIA. Let's look into statuses again:
|
Yes, but you could decide to keep just the IDs of deleted records and not the entire record. |
I think that unfortunately nothing can assure that a partner suddenly removes an IIA from the network; with or without statuses I've already expressed my opinion against statuses; what I notice is that there could be a lot of new elements to keep track of statuses. |
If entire record is not kept then how would the IIA response look like? Rather make use of changes proposed in erasmus-without-paper/ewp-specs-api-iias-approval#5 for IIA status |
Wouldn't IIA status in IIA Get API clubbed with proposed changes in erasmus-without-paper/ewp-specs-api-iias-approval#5 address all the concerns? |
I understand, but normally we have a CNR to inform that something has changed and we can understand what by calling a second API (e.g. IIA Get). It seems to me that you rely on the fact that the other partner has previously downloaded/considered the IIA, but we cannot be sure. Another example: by mistake your system generates 100 IIAs; you delete them and then you have to send 100 CNRs to the partner that after that will perform 100 IIA-Gets... to obtain nothing? |
In that case CNR would indeed inform about the change - deleted IIA.
To inform your partner that all these IIAs have been deleted. |
But a CNR don't tell if it is about a changing or a deletion...
To inform your partner of something that could have never seen and therefor is not interested in... It seems to me that you are not interested in the confusion that could bring the fact that I receive a CNR for something that I've never seen and that I will not be able to see anymore... |
Please read specification of CNR in the EWP Network. Thank you very much for all these questions. Could you tell us what solution you prefer from those listed? |
I have read. Did you? The IIA-CNR requires only: notifier_hei_id and iia_id. We should have the IIA exposed in some way, but we cannot because the BPO said that we can expose only IIAs that can be approved (and a deleted IIA cannot be approved). I voted for 1-a), but I think we need correctives because these specifications introduce ambiguities. |
Yes. Either the IIA response content or unique response code should tell that the IIA is deleted. There should not be any scope of ambiguity. |
Hi, I'm Pietro, Politecnico of Milano. |
The answer of Ghent University: Only IIA's that are not approved can be deleted. How long should we keep deleted IIAs? I think a http status code 4** is not providing a solution for IIA Get requests that contain multiple iia-id's/iia-codes |
We are forcing the partner to call IIA Get for a single IIA ID. Additionally there is no scope for any mistake. This solution will potentially add more pain/work for the IROs. |
Deletion date would solve this problem. |
TERMINATE We add a new attribute of IIA, named <termination-date>. Scenario
Partner A would like to get some confirmation from B that he got the A's decision (equivalent to acknowledgment of receipt). If we do not want to add new API (to avoid changing the namespace) we can use IIA Approval.
Index parameters
|
P.S. We still have time to work out the details of these proposals. Please note that all three (COMMENT, DELETE, TERMINATE) are backward compatible, as we only introduce optional parameters. No change in namespace, version would change from 6.2.0 to 6.3.0. That the impact on the existing implementations would be the smallest possible. These changes would not be backward compatible:
|
Please keep in mind that no change in namespace doesn't necessarily involve the smallest impact on the existing implementations. |
Why can't add new APIs instead of modify the current implementation? |
Let's do a game!
Partner B changes the cooperation conditions for the mobilities that will take place before the termination date and it doesn't send an IIA-CNR; then:
Only after reading the above response A can realize that calling Approval API it has approved a different IIA, approving not only the termination but even some changes. The specifications should say that it is mandatory (always, not only for a "termination"):
|
Later in this thread you suggested that an IIA undergoing changes should be kept visible to the counterparty in the original version. However, it can hardly be the "intention of the exposing party" to have the original IIA approved while it is making changes. Therefore it is necessary to either hide the IIA, or keep it visible and let the counterparty know that it should not approve it yet. If we choose the second option, drafts are necessary.
The comment field will be useful in my opinion.
Option 2 seems enough to me.
Termination should be used for the purposes it was supposed to, not for amendments. Amendments can be done by changing the IIA Get response and have it re-approved. Server implementers should be required to keep all logs and therefore be able to find the original partner IIA before amendment, if need be. As far as termination is concerned, we should distinguish between unilateral termination versus termination agreed by both parties. In the first case the party unilaterally terminating an IIA will need to have a proof that it informed the counterparty at least one year in advance. In the second case, we need the approval of the counterparty.
If the intention of the parties is not to terminate the cooperation as such then termination should not be used. Amendments should be used.
If we start to think this way, we actually don't need IIA approvals at all because we can be "flexible" and allow anything. Important changes, such as number of persons, months/days, study levels and the blended option need to be mutually approved and the easiest technical solution for this is to allow changing the IIA Get even after it has been approved by both parties.
You do introduce states. They are just not explicit. By adding the termination-date, you introduce the "terminated" virtual state (or "to-be-terminated" state, to be precise). By adding deletion-date, you would add the "deleted" virtual state. The need for states has not disappeared, you have just stopped using the word "state".
I prefer (b).
I prefer (c).
I prefer (b).
In this scenario, partner B cannot know for sure from which academic year the IIA is supposed to be terminated. It is not inferrable from the termination-date. Also, partner A could freely set the termination-date to an earlier date (say, in January 2023, it would set it to 2022-08-31) and later claim that it was an unilateral termination and partner B's approval is therefore not needed and reject nominations based on this claim (in this example, nominations for 2023/24). On which party would the burden of proof lie? If on partner A, then it would need a log of an incoming IIA Get from no later than 2022-08-31. If the date http header is also not older than 2022-08-31 and the Http Signature is valid, then partner B was clearly informed in time to terminate the IIA for any mobility starting from 2023-09-01 onwards, no approval/confirmation needed. The only problem would be if B's implementation was buggy and wouldn't retrieve the IIA Get based on incoming IIA CNR. In that case A could provide the IIA CNR log from 2022-08-31 and say that it wanted to unilaterally terminate the IIA. It would be the problem of partner B that it did not react to the IIA CNR. But these are borderline cases... |
DELETION Two options emerge from the discussion so far:
Which one we prefer? |
@jiripetrzelka If we look for simple solutions, it is better not to introduce drafts, not to introduce amendments, and use comment only in response to IIA get. If we do not want to approve partner's IIA with a specific hash, we send IIA CNR and explain the reason in the comment. Terminate is (according to IIA template) "unilateral decision to discontinue the exchanges". We don't ask for 'approval'. Having 'confirmation' would be nice but we can live without it. |
Option 1: with or without IIA-CNR when an IIA is deleted? Option 2: we often talk about choosing the simplest solution. The simplest solution is not to touch existing APIs, but introducing a new one: IIA-deleted-Index. The existing code doesn't need to be touched. |
With CNR.
Yes. At least iia-id is still available. |
The template is nearer to a "with paper" approach than to a "without paper" approach. |
We already mentioned multiple times that this is ambiguous and can create more problems. Not acceptable to us.
|
I agree with you; could a new IIA-Delete-CNR API be a solution?
To be clear: case 2) is by mistake, case 3) is by intention |
I too consider my counterproposals to be simple solutions because, for example, to use IIA Get for amendments after the IIA has been approved by both parties builds on something that we have already implemented. It would also be simpler for end-users to keep track of changes that belong to one IIA. As for the comments in own IIAs, they won't be universally usable for commenting on partner proposals because not all partner IIAs are linkable to own IIAs. The need to communicate the reasons for not approving these IIAs via e-mail will remain. The solution to abandon the proposal is therefore simple (and cheaper) for implementers but the process won't be made simpler for IROs.
From https://erasmus-plus.ec.europa.eu/resources-and-tools/inter-institutional-agreement It is up to the involved institutions to agree on the procedure for modifying or terminating the inter-institutional agreement. However, in the event of unilateral termination, a notice of at least one academic year should be given. This means that a unilateral decision to discontinue the exchanges notified to the other party by 1 September 20XX will only take effect as of 1 September 20XX+1. Examples of my interpretation: Suppose we have an IIA signed by both parties from 2022/23 to 2028/29. Suppose it is now 15 January 2023. What can happen? For example: Are all these scenarios possible? And what about 15 February 2023? What if partners have not have enough time to discuss the changes in January and want to make changes for 2023/24. Is this strictly forbidden (because the IIA says "no later than the end of January") or is there some leeway in practise if both agree? But how much leeway? Until March, April, ...? |
I do not see it. I have to match IIAs on both sides before I send the Approval (with comment or without). |
For example, if the partner IIA is a duplicate of another partner IIA, which is already linked to the correct local IIA. In these cases it does not make sense to link partner IIA to local IIA. |
The discussion continues in #99. |
As briefly discussed in the last meeting an issue was brought to our attention, that some Universities may want to terminate or reject IIAs in addition to the approval ( #30 ).
This cannot be done at the moment in a clean way.
How would you handle termination / rejection?
The text was updated successfully, but these errors were encountered: