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

Approval of an IIA #30

Closed
BavoNootaert opened this issue Sep 2, 2019 · 56 comments
Closed

Approval of an IIA #30

BavoNootaert opened this issue Sep 2, 2019 · 56 comments

Comments

@BavoNootaert
Copy link

Scope: supporting the process of approving an IIA.
Out of scope: Discussion about the contents.

We have two different proposals. Of course, EWP should support only one method, either one of those below, or another one that evolves from these after discussion.
In both methods we follow the principals of this issue. We stick to IIA3 distributed, no-master, meaning that everybody is master of its own data. And this data can be duplicated by both parties.

Method I

Approval can be supported by including a status associated with the SCHAC-code of the approving partner in the current IIA API.
One of the partners enters the data into its system, and sends a notification to the partners. The IIA at that point contains an approval status from that one partner.
If the other partners agree, they enter the data in their system, and add their own approval status. A notification is sent to the partners.
The partners that have already approved, compare if the contents of the IIA they have in their local system is equal to the one the notification is sent for. If it is, the approval by the other partner is recorded in their local system. If it is not, the local system must report an error, and discussion should follow through some other medium.

In multilateral agreements, at a certain time the different partners may have different sets of approving partners, as notifications are being sent and processed. However, since the data itself is never changed, and approvals are only being added, this will stabilize after a little while.

In xml, the status element should contain the status APPROVED (different statusses may be needed in the future, see also the proposal about amendments), and the SCHAC-code of the approving partner.
If necessary, this element would be the place to add a signature of the approved data.

Example.

Suppose X and Y have agreed upon a proposal, and X first enters the data.
The iia element would look like this (only the relevant elements are included):

<iia>
    <partner>
        <hei-id>X</hei-id>
    </partner>
    <partner>
        <hei-id>Y</hei-id>
    </partner>
    <current-status>
        <partner-id>X</parnter-id>
        <status>APPROVED</status>
     </current-status>
</iia>

After review, Y adds its own status:

<iia>
    <partner>
          <hei-id>X</hei-id>
    </partner>
    <partner>
          <hei-id>Y</hei-id>
    </partner>
    <current-status>
          <partner-id>X</partner-id>
          <status>APPROVED</status>
    </current-status>
    <current-status>
          <partner-id>Y</parnter-id>
          <status>APPROVED</status>
     </current-status>
</iia>

Method II

The approval proces could be considered a pattern that we will probably need more often. Maybe we can treat it in a general way like we have CN. We actually have an example already with the mobilities.
The difference between IIA and mobitilies is that incoming mobilities that are not communicated through the network, remain invisible to the network. Therefore every mobility is known by one ID inside the network. In the case of IIA both parties can expose the same IIA with different ID's. However, they should use the same IIA-code.

The approval proces consists of:

  • one of the parties, the initiator, makes a proposal
  • there can be different versions of the proposal
  • all collaborating parties approve or reject a specific version of the proposal
  • there can be remarks on a specific version of the proposal

So in addition to the IIA and CNR-API we would need an API with corresponding CNR-API that we can use to report the status of the IIA.
The API could expose an entity like StatusUpdate(datetime of the statusupdate, hei-id of the status,surrogate-id of the IIA, version, comment, status).
Each HEI remains the master of its decision about the IIA, i.e. whether it approved or rejected the proposal

Example.

Initiator X creates IIA with surrogate ID "X-1" and version 1 and sends a IIA-CN to all partners (there is a single partner Y in this example).

Collaborator Y receives IIA-CN, creates

<status-update>
	<timestamp>2019-08-30T16:35:00Z</timestamp>
	<hei-id>Y</hei-id>
	<iia-id>X-1</iia-id>
	<version>1</version>
	<comment>Didn't we agree on three years in stead of 5?</comment>
	<status>REJECTED</status>
</status-update>

and sends a StatusUpdate-CN to all partners

Initiator X receives the StatusUpdate-CN and updates IIA and sends a IIA-CN for version 2 to all partners.
Collaborator Y receives IIA-CN, creates

<status-update>
	<timestamp>2019-08-31T17:35:30Z</timestamp>
	<hei-id>Y</hei-id>
	<iia-id>X-1</iia-id>
	<version>2</version>
	<comment>Great Job</comment>
	<status>APPROVED</status>
</status-update>

and sends a StatusUpdate-CN to all partners

Initiator X creates

<status-update>
	<timestamp>2019-08-31T18:10:00Z</timestamp>
	<hei-id>X</hei-id>
	<iia-id>X-1</iia-id>
	<version>2</version>
	<comment/>
	<status>APPROVED</status>
</status-update>

and sends a StatusUpdate-CN to all partners

It is possible that two hei's X and Y create an IIA that are in fact the same. In that case they can agree to approve only the one from X or only the one from Y, or both.

@janinamincer-daszkiewicz
Copy link
Member

Ad. Method I
In our opinion more in line with the spirit of EWP (according to the assumption that we stick to IIA3 distributed, no-master, meaning that everybody is master of its own data) would be the solution where every partner sends his own approval and does not send approvals of the other partners. In such approach I share information which comes from myself, so it is the most current.

Ad. Method II
It is much more complicated than Method I. Are these version numbers local or global? Anyway, sending version number does not solve the problem of credibility. If we really want to be sure that we know what is being approved we should send the copy of IIA being approved.

You write "However, they should use the same IIA-code." This condition is not met in the current specification.

@georgschermann
Copy link

We would prefer a method 1 like approach.
I'd suggest to move the status inside the partner element where the signing-date is already placed.
Either with <approved/> / <signed/> Empty flags or a <status>APPROVED/SIGNED</status>
This way partners which don't track the signing data could also indicate that the agreement has been signed.
Also a REJECTED status could be used to indicate that some changes made by the partner were rejected.

@CarmenDiazSIGMA
Copy link

We also prefer a method 1.

@MartaJuzepczuk
Copy link
Contributor

I'd suggest to move the status inside the partner element where the signing-date is already placed.

If we keep status for all the partners, than it seems a good idea. @georgschermann What do you think about our proposal where every partner sends only his own approval/status?

@georgschermann
Copy link

I am not quite sure about this. It makes sense to only share someones own status, but for some edge cases it could come in handy to also propagate someone elses status, for example if you have 3 or more partners, or multiple faculties of one university, one of multiple partners not using EWP, ...

@janinamincer-daszkiewicz
Copy link
Member

But how can you be sure that you really know the current status of the opinion of the other partner? He might have changed his mind a couple of seconds ago.
I would like to hear a really convincing scenario.

@janinamincer-daszkiewicz
Copy link
Member

From the Minutes from the Technical meeting in Malaga (2019-09-12).

It is decided that we will only support bilateral agreements and do away with multilateral agreements. So each agreement may have only 2 partners.
The discussion will be continued in the GitHub issue #30. Francisco will write the proposal for bilateral agreements and make sure we have some way of signing.

@fmapeixoto
Copy link
Contributor

As agreed in the technical meeting in Málaga (12/09/2019), when an Institution creates a new IIA (or makes any change), hereinafter referred to as First Party, and sends the notification to the other institution, hereinafter referred to as Second Party, the First Party is automatically agreeing that the data is the correct data and will not be changed. Given this, the First Party must sign the data with a valid certificate, every time the Second Party gets this data.
With this, we guarantee that after the Second Party gets the data for the first time, and checks that it is properly signed from the First Party, every request after should return exactly the same data.
After this, the Second Party may agree or disagree and make changes to the agreement.
If the Second Party agrees with what is specified, signs the same document received and sends a notification to the First Party to get the new document. The First Party gets the document from the Second party and validates his signature and the signature from the Second Party, and if correct, the agreement is closed.
If the Second Party does not agree with the specifications, makes the proposed changes, removes the First Party signature from the document and send the notification, starting the process as if it was “new”, signing it every time a request was made.

The signing process should be exactly the same as specified in he ToR Get API https://github.com/erasmus-without-paper/ewp-specs-api-imobility-tors/blob/master/endpoints/get.md .

In summary, the following steps are needed.

  • First Party creates de the new IIA and sends the CNR to Second Party;
  • Second Party contacts First Party and get the data of the IIA, verifies the signature of the First Party and saves it locally as proof.
  • If Second Party agrees with the IIA:
    • Leaves the signature from First Party in the document and sends a CNR to First Party
    • The First Party gets the data from the Second Party, verifies both his signature and the other and saves it as proof.
  • If Second Party does not agree with the IIA:
    • The Second Party removes the First Party signature from the document and makes the intended changes.
    • The Second Party then becomes the First Party and sends a CNR to the Other Party and the process restarts.

@janinamincer-daszkiewicz
Copy link
Member

Thank you. We will update the specification according to this proposal.

@BavoNootaert
Copy link
Author

The signing process should be exactly the same as specified in he ToR Get API https://github.com/erasmus-without-paper/ewp-specs-api-imobility-tors/blob/master/endpoints/get.md .

That specification states that the certificate is not important, but

it seems that the best certificate to use for this, would be the same
certificate which was used to actually serve the ToRs API.

That is not always possible: in our case, the key and certificate to serve the API are managed by another team. What then should be the requirements for the certificate?

@wrygiel
Copy link
Contributor

wrygiel commented Oct 24, 2019

Perhaps this could be used instead of embedded signatures.

@MartaJuzepczuk
Copy link
Contributor

We see some problems with the solution described by Francisco. We wrote a short google document with the description of what we need and possible solutions (among others our comments to the Francisco's proposal). I will send you an email with a link. Please, comment.

@BavoNootaert
Copy link
Author

I wrote some comments in the document. One of the arguments against signing (only) PDF is that the PDF might not contain the same data as the XML (e.g. due to some error). Since the XML contains the master data (that is the purpose of this API), I think the XML should be signed.

@janinamincer-daszkiewicz
Copy link
Member

I added comments to your comments.

My impression is that you miss the most important part, that - according to our opinion - the Francisco solution cannot be meaningfully implemented. If you think that it can, please explain how you see such an implementation. I hope that this will help us all to either notice deficiencies in the Francisco algorithm or maybe prove that we are wrong and the implementation is possible.

We can discuss whether PDFs are better than XMLs, but that's not the biggest problem. I am afraid that the correct solution with XML signing would be just as or maybe even more complicated than LA, because the contracts are served by both parties.

@BavoNootaert
Copy link
Author

I think it would be easier if both parties just sign their own version of the agreement, and do not include the signature of the other party. That would eliminate most difficulties arising from using different element order, API version,...

We already agreed that the agreement should not change once it is approved by both partners. If an field is to be added or removed, a new agreement must be created.

If the API version is changed, the signature will change also. That should not be a problem, as it would not have an effect once the approval process is over. It is probably a good idea for both parties to keep the original signed XML.
An implementation should be able to parse this old XML's. Since in the case of an API change, different partners will be at a different version for some time, a parser for both versions will be needed simultaneously anyway.

@janinamincer-daszkiewicz
Copy link
Member

Bavo: I think it would be easier if both parties just sign their own version of the agreement, and do not include the signature of the other party. That would eliminate most difficulties arising from using different element order, API version,...

If each partner signs his own version, no partner has a proof that HIS version has been approved by the other party.

Bavo in the Google document: Non-repudation based on HTTP Signature works as long as the old keys from the registry can still be recovered.

This is a real problem and it concerns not only HTTP Signatures. To solve it we should either use qualified certificates or store somewhere all keys in use any time by all partners (for example in the registry). This is a real challenge.

To push the discussion forward we suggest that we first agree on the answers to the following questions:

  1. PDF
    option a) sending PDF in IIA is obligatory. This solution is attractive since (1) only this gives us one document signed by both partners, (2) PDf has a nice visual form, (3) if the physical docuemnt is needed in real world anyway, signed PDF is the best replacement
    option b) sending PDF in IIA is optional
    option c) we definitely don't want to send PDFs

  2. XML
    ad a) in this option we do not need to sign XML
    ad b and c) in this option we have to sign XML, the only possible solution (in our opinion) is described in the Google document as "Signing partner’s XML". Also it should be remembered that solutions shown here based on signing XMLs are more complex.

@wrygiel
Copy link
Contributor

wrygiel commented Nov 22, 2019

store somewhere all keys in use any time by all partners

That was one of the reasons why we log every registry change and allow people to replicate this log in a distributed Git-like fashion (although I cannot find the prod log for some reason, perhaps it wasn't configured?)

In other words everyone should have access to fingerprints of all keys ever served by the registry. (Registry keeps this repository locally too, and it could run queries on it to help people find things.)

@BavoNootaert
Copy link
Author

BavoNootaert commented Nov 25, 2019

If each partner signs his own version, no partner has a proof that HIS version has been approved by the other party.

Partner A fetches the signed version of partner B, and vice versa. Both versions should match, or there would be no agreement.
How would it work if both signatures need to be present? Since there is no master in the process, both partners would need both signatures. If A starts the process and serves a signed agreement, which B fetches and signs, A would have to include B's signature in its own version. So both A and B's versions would have signatures from A and B. Then B has proof that A has seen its approval and vice versa. But is this necessary? @fmapeixoto, what do you think?

To solve it we should either use qualified certificates

This applies to both XML and PDF. I would prefer CA-signed certificates over self-signed. But we still need to agree on which CA's are allowed. This hasn't even been decided for certificate-based server authentication.

In other words everyone should have access to fingerprints of all keys ever served by the registry.

Agreed, although that would be another discussion.

To push the discussion forward we suggest that we first agree on the answers to the following questions

I have no strong opinion to whether we should or should not have (signed) PDF's. I agree signing XML has its challenges, but signing PDF and not XML incurs the risk of both versions deviating from each other. How would you guarantee that they are in sync?

@janinamincer-daszkiewicz
Copy link
Member

janinamincer-daszkiewicz commented Nov 27, 2019

Then B has proof that A has seen its approval and vice versa. But is this necessary? @fmapeixoto, what do you think?

As I understand we started the whole discussion with the assumption that every partner needs to have the approval of his version of IIA of the other partner.
If not, what problem are we solving and why the current solution does not suffice?

Where is Paul? Where is George? Where is Francisco? There were so many opinions when we talked about that in Malaga and now only Bavo is interested in finding the solution?

@fmapeixoto
Copy link
Contributor

Hello,

For what I have read I think we are mixing problems and different things.

First, I think we should treat the IIA as a contract between parties, and as a contract, after signed, you can't just change content or add lines or any kind of alteration. So, as Bavo said, both versions of the XML should match so both parties can agree that they signed the same contract.

Regarding the two parties signing the same XML or just one party, if both of them send to the other partner the agreement signed by them and it's saved as it is, I don't see a big problem with that. Both parties have proof that the other signed so.

@janinamincer-daszkiewicz
Copy link
Member

For what I have read I think we are mixing problems and different things.

or I would rather say that we do not understand each other

First, I think we should treat the IIA as a contract between parties, and as a contract, after signed, you can't just change content or add lines or any kind of alteration.

That's obvious

So, as Bavo said, both versions of the XML should match so both parties can agree that they signed the same contract.

That's also obvious but the problem is that we are not able to check that on a technical level, since semantically the two versions may be the same but represented by two different XML files.

By the way - for that reason we still think that PDF is as good as XML and even better).

Regarding the two parties signing the same XML or just one party, if both of them send to the other partner the agreement signed by them and it's saved as it is, I don't see a big problem with that.

We do see the problem. It's not enough that every party signs his version, what we need is to approve the partner's version. So every partner should:

  1. get the version from the other partner
  2. sign it
  3. send it back.
    Optionally this version might be then signed by the first partner in step 1.

I would suggest to meet via Skype for a short talk to make sure that we do understand each other.

@fmapeixoto
Copy link
Contributor

I agree with a Skype meeting to agree to solve these issues.

@janinamincer-daszkiewicz
Copy link
Member

janinamincer-daszkiewicz commented Nov 29, 2019

Bavo and all the others, will you be available for Skype on Monday, December 2nd, at 11:00 CET?

@fmapeixoto
Copy link
Contributor

Works for me.

@georgschermann
Copy link

we would prefer PDF signatures for simplicity, the possibility of more than 2 signatures, the possibility of hand written or personal, digital signatures, the possibility for staff to view and verify the signatures, etc.

Skype meeting works for me.

@georgschermann
Copy link

Follow up on the Skype Meeting, please correct me if I got something wrong:

The initial requirement we wanted to cover is, that Partner A can approve/verify Partner B's IIA Proposal. We think this should/could be achieved using a solution similar to method 1 and the EWP CNR/GET (vs. POST, discussed multiple times earlier) approach.

We propose similar to method one to introduce an "approved" (or verified if preferred) timestamp.

Partner A Partner B
creates IIA .
sends CNR .
. fetches IIA
. edits IIA
. sends CNR
... ...
fetches IIA at time x .
thinks this should be final / wants to approve .
adds <approved>time x</approved> .
sends CNR .
. fetches IIA containing <approved> at time y
. thinks this should be final / wants to approve
. adds/replaces <approved>time y</approved>
. sends CNR
fetches IIA containing <approved> .
sees partners approval and knows about own previous approval .

We can use one shared <approved> in the schema or one for every partner, it souldn't matter in the implementation, since every partner knows about the own approval and can GET every partners approval at anytime later.

The timestamps only add the possibility to check if the version the partner GOT earlier and approved will differ from the current version. (supposing the local last modified date of the IIA is stored)

If a partner not approves an approved IIA, it can just omit the <approved> and the renegotiation continues, the same would be the case if a partner sees that the timestamp refers to an outdated IIA (in which case an CNR should have been sent earlier, but was probably lost).

@vmeus
Copy link

vmeus commented Dec 3, 2019

Seems logical and intuitive to me and in line with the Skype meeting, but of course I cannot see all the technical implications

@umesh-qs
Copy link

umesh-qs commented Dec 4, 2019

In this flow, isn't the partner is approving their own copy and not other partners copy?

@janinamincer-daszkiewicz
Copy link
Member

Georg, thank you very much for your input. I will try to explain why - in our opinion - it will not work.

1 We agree that we need an approval. Strictly speaking we need to know:
1.1 that partner approved
1.2 what has been approved (we don't want to base our solution only on trust)

Because of "what" neither version number nor timestamp is sufficient .

2 We can use:

2.1 hash (or fingerprint) - exactly as we already use in LA
2.2 signed hash - nice to have but is more than what we need

Final proposal to solve (1) --> Let's use hash.

  1. Should we use PUSH (meaning POST) or CNR/GET?

Assumption:
We have to assume that in both systems each single IIA is represented as a single object identified with one id. Every system should store local IIA id and partners's IIA-id. (Unfortunately some preliminary tests show that this may not be the case in real life.)

We are in favor of PUSH for several reasons:

2.1 PUSH allows us to obtain two goals in one simple synchronized call:
a) credible delivery of the approval decision to the partner
b) getting his confirmation.
In case of CNR/GET we send CNR (one call), partner invokes GET (second call) but can not react in the same call to the obtained content.

2.2 In case of CNR/GET we always have to keep in database the data we approve (GET can be invoked any time). In case of PUSH we push the data, which can be generated dynamically at our convenience.

2.3 Extensions needed in APIs specification
PUSH --> We had to add one extra endpoint to IIA API, lets call it "approved".
CNR/GET --> We had to add two extra APIs, lets call them PARTNER_IIA with endpoint "get" and PARNTER_IIA_CNR.

2.4 The scenario of data exchange
Partners exchange draft versions for some time. We start the scenario when one of the partners (or both at the same time - they behave in a symmetric way) want to approve.
Partner A calculates hash of his IIA and sends (IIA CNR/GET) IIA and hash-A to partner B.
Partner B wants to confirm that he accepts this IIA, so have to send identifier of this IIA, IIA-id, and the same hash-A to partner A.

2.4.1 PUSH to endpoint approved
Parameters of PUSH: IIA-id, hash-A

PUSH is synchronous, we get the confirmation in a transactional way with error code 200 (everything is OK, A has got approval) or 409 (A has got an approval but the version approved is outdated) or 400/500 (some other error or timeout).

2.4.2 New APIs PARTNER_IIA_CNR/PARTNER_IIA_GET
A send PARTNER_IIA_CNR to B with information "I have new information about version of IIA identified by IIA-id".
B gets this IIA identified by IIA-id, finds there hash-A.
If the version is outdated B has to use another way to say it to A.

Final conclusion on (2) --> GET/CNR could also be used but is more complicated. We opt for PUSH, as it is simpler to specify, simpler to implement and compliant with the current version of LA. If we would replace PUSH with CNR/GET for IIA, we would still have PUSH in LA. If you would argue that PUSH should be replaced by CNR/GET in LA it would make LA even more complicated than it is now.

@janinamincer-daszkiewicz
Copy link
Member

But we recommend PUSH :)
Marta, Michał, please prepare an example.

@MartaJuzepczuk
Copy link
Contributor

What do you think about our arguments and our solution? @umesh-qs, @fmapeixoto, @BavoNootaert, @georgschermann, the others? It will be easier to talk on Monday when we exchange arguments before.

I will prepare an example scenario.

@MartaJuzepczuk
Copy link
Contributor

https://github.com/erasmus-without-paper/ewp-specs-api-iias/tree/acceptanceExamples/example-scenarios/

Currently there is one simple example scenario. If I write more scenarios, I will put them in the same catalogue.

@BavoNootaert
Copy link
Author

In response to Janina's arguments above (#30 (comment)):
2.1
a) true. But CNR/GET is similar: once the CN has been delivered, it is the responsibility of the partner to fetch the approval.
b) true. But what would you do if the partner responds with a 500?
2.2 Do you mean you don't keep your approval in your database, or that you can change the data after it has been approved?
2.3 CNR/GET: In Georg's proposal the approval-element is included in the current API. This works, because the data from both partners has to be the same, or there would be no agreement.
2.4.1 Same remark as 2.1b: what would you do when there was a 500? In the case of CNR/GET, assuming that an error is more likely in processing the approval than in processing the CN, the partner can GET the approval after the bug has been fixed.
2.4.2 If the version is outdated, then B will already have sent a CN. It can do so again, or wait until A has processed the previous one.

@MartaJuzepczuk
Copy link
Contributor

MartaJuzepczuk commented Dec 9, 2019

Your response refers to the "Push vs. CNR" problem. We will try to answer soon.
And what do you think about our proposal to use hash instead of timestamp. Do you think it is correct? Do you agree, that timestamp is not sufficient?

@mkurzydlowski
Copy link
Contributor

After thinking about implementation of our solution on the client side we noticed that the user needs to know:

  • which partner agreements have been approved,
  • if partner agreement has changed after being approved.

To solve this issues we need to store the fact of approval and what has been approved (hash). We need to store this for every partner agreement and map it by partner agreement ID.

In other words we would have all the information needed to implement GET in Partner Agreements Approval API. No point in not sharing this data with the partner.


As for the question of adding the approval to IIAs GET method we don't think this is possible as it would require the approved partner to already have the mapping from partner's agreement ID to his own.

It makes more sense to create a separate API for approvals and use ID's of the approved agreements. This also doesn't require agreements to always map 1 to 1.


Having a separate API for approvals, it doesn't seem justified to use PUSH for sending an approval, as there aren't enough arguments for it. For example, knowing immediately that the partner agreement has changed doesn't solve an issue of the change happening just moments after the approval.

@MartaJuzepczuk
Copy link
Contributor

We agreed to use hash and to use CNR and GET for sending approval. The last thing is to decide if we add the acceptance to the existing API or we add new API(s). Here you can find example scenario in this two approaches: https://github.com/erasmus-without-paper/ewp-specs-api-iias/tree/acceptanceExamples/example-scenarios

@BavoNootaert
Copy link
Author

Could you give an example where the agreements don't map 1 to 1?

@MartaJuzepczuk
Copy link
Contributor

I can write something, but I'm not sure if it will be a real life scenario. I tried to find why we started to consider agreements which don't map 1 to 1 and found emails from tests with SOP. They are/were saving recurring agreements as one.

@georgschermann do you still do this way? How will the acceptance process look like? Saving recurring agreements as one probably means that at some time you change a signed agreement.

Maybe we shouldn't allow this?

@georgschermann
Copy link

Yes, our internal agreements roughly correspond to the cooperation conditions, so 10 of our agreements are summarized to one iia, or the other way round.
During agreement rollover for a new year, etc., existing signed agreements would change, or we would map the changes to a new iia. Since we already do a lot of internal mapping it wouldn't be much of a problem.

@BavoNootaert
Copy link
Author

Having a seperate API for approval is OK for us.

@MartaJuzepczuk
Copy link
Contributor

What about the others? @fmapeixoto, @umesh-qs? As I remember Georg said he can accept any version (separate API or field in existing API). Do we need this skype meeting that we have planned for today?

@fmapeixoto
Copy link
Contributor

fmapeixoto commented Dec 12, 2019 via email

@janinamincer-daszkiewicz
Copy link
Member

The draft version of the new IIA Approval API is available at:
https://github.com/erasmus-without-paper/ewp-specs-api-iias-approval

There is still an issue how to handle PDFs. We see two options:
Option 1

  1. We add one PDF to IIAs API and one to IIAs Approval API.
  2. In IIAs API we publish PDF that has been created by us.
  3. In IIAs Approval API we publish PDF that has been created by partner and signed by us.

Consequences:

  1. If we want to take PDF created by partner and an approval of our version, we need to make two requests.

Option 2

  1. We add one PDF to IIAs API and one to IIAs Approval API.
  2. In IIAs API we publish any PDF we have (it may be PDF that has been created by us or PDf created by partner and sign by us)
  3. In IIAs Approval API we publish any PDF we have (it may be PDF that has been created by us or PDF created by partner and signed by us).

Consequences:

  1. If we want to have our version of PDF and partner wants to have his version of PDF we can either keep versions with single signatures or need extra requests to obtain our version signed by partner

Which one do you prefer? Do you see other options we should consider or other consequences which should be taken into account?

@pleys
Copy link

pleys commented Jan 7, 2020

@janinamincer-daszkiewicz if we talk about PDF created by us, does that mean it is signed by us? If both partners have the same data in their system, the PDF's (based on EC template) should look exactly the same whoever generates it right?

@janinamincer-daszkiewicz
Copy link
Member

In theory yes. But visually they may differ e.g. having different logos. For some reason Georg asked for the possibility to send separate PDFs. @georgschermann could you give us examples?

@BavoNootaert
Copy link
Author

I would prefer Option 1, because then the PDFs in each API reflect the meaning of the corresponding XML-document. Both options could possibly support multiple PDFs.

@MartaJuzepczuk MartaJuzepczuk reopened this Jan 8, 2020
@pleys
Copy link

pleys commented Jan 8, 2020

In theory yes. But visually they may differ e.g. having different logos. For some reason Georg asked for the possibility to send separate PDFs. @georgschermann could you give us examples?

I think we shouldn't include logos and other additional elements on the agreements and stick to the EC template and the data included on this template. In my view the PDFs are only relevant for IRO users who need to get used to a new way of dealing with agreements. They are used to support users in the transition to a new way of working and can become obsolete once a digital workflow is generally used, trusted and accepted.

@janinamincer-daszkiewicz
Copy link
Member

Both options could possibly support multiple PDFs.
Could you give an example of a case when you would like to send multiple PDFs?

@BavoNootaert
Copy link
Author

BavoNootaert commented Jan 9, 2020

Sorry, probably a misunderstanding from my part. I thought

For some reason Georg asked for the possibility to send separate PDFs.

meant that multiple PDFs were required, but perhaps you meant just one PDF from each partner.

In any case, as Paul said, we are not asking for any special features regarding PDF documents. But if they are to be supported by the API, then I think Option 1 is the cleaner solution.

@georgschermann
Copy link

I think it would be 1 PDF for each partner at most. Some of our Universities use the E+ template, but some extend or adapt the template, use their logo, add more signature fields, additional information or be more specific on the conditions, etc.

Some Universities won't allow any contracts/agreements which are not signed by various responsible persons. And the IROs cannot force the rectors or staff from other faculties, etc. to use any software tool they have. Getting a digital signature onto a PDF is the most digitization some can hope for at the moment. In some cases it may also end in print & re-scan. So for the time being the lack of PDFs would be a show stopper for some.

I'll ask some of our customers if the have example agreements.

For the implementation I think we would also prefer Option 1

@CarmenDiazSIGMA
Copy link

Currently SIGMA generates the PDF according to the template, we do not add logos or more information.
We do not know if universities subsequently edit this document and add some elements. At the moment we don't have the possibility of signing digitally this document.
We also prefer Option 1.

@janinamincer-daszkiewicz
Copy link
Member

Marta, I think we can continue with the specification.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests