VaccineProcurementC is an agreement between pfizer (Manufacturer) and mcdc (Government). regulator (Regulator), fda (FDA), and worldcourier (WorldCourier) take part as third parties without being bound by it.
Fixed when the contract is created
approval (Boolean)
unitPrice (Number)
minQuantity (Number)
maxQuantity (Number)
Comes into force only if
vaccineDose.FDAapproval holds
Time is counted in days.
What the parties owe
4 obligations within the contract
2 obligations that survive termination
2 powers
How it can end
mcdc may terminate the contract once either mcdc (lawStopWork) or regulator (adminStopWork, regulationStopWork, or judicialStopWork) issues a stop-work order (pStopWork)
temperature (Alert): condition value > -80, 5 readings, and within 10; raised by regulator, controlled by pfizer
humidity (Alert): condition value > 70, 3 readings, and within 15; raised by regulator, controlled by pfizer
shock (Alert): condition value > 5; raised by regulator, controlled by pfizer
lightExposure (Alert): condition value > 0; raised by regulator, controlled by pfizer
sealOpen (Alert): condition value > 0; raised by regulator, controlled by pfizer
Normal course (obligations in dependency order)
oAgreedOnRequest: mcdc owes pfizer; created by requested; binding once agreedFromG; requires leadtimeINform.
oDeliver: pfizer owes mcdc; created by requested; binding once confirmed and oAgreedOnRequest is fulfilled; requires notifiedOD, delivered, and outsideRisk.
oAssign: mcdc owes pfizer; created by requested; binding once delivered; requires oDeliver is fulfilled.
oPay (survives termination): mcdc owes pfizer; created by requested; binding once invoiced and delivered and oDeliver is fulfilled; requires paid.
oWithdrewApproval (survives termination): pfizer owes mcdc; exists from the start; binding once withdrewApproval.
Observations
No postconditions are specified.
No constraints are specified.
Domain
The domain model as a UML class diagram: base types (Role / Asset / Event / DataTransfer), inheritance, «Enumeration» and «thirdParty» stereotypes, and named associations for domain-typed attributes.
Parties & norms
Parties (blue) with obligations (solid) and powers (dashed), debtor → creditor. Rules (yellow) point to their To role: green = Grant, red = Revoke, labelled with the permission.
This obligation exists from the start of the contract. It is binding immediately. mcdc must then, for pfizer, ensure that (1) remain.value is less than minQuantity; (2) obligation oAgreedOnRequest has been fulfilled; (3) obligation oDeliver has been fulfilled; (4) obligation oAssign has been fulfilled; (5) mcdc declares the agreement terminated (mcdcTerminateAgreement); and (6) pfizer declares the agreement terminated (pfizerTerminateAgreement). Otherwise the obligation is violated.
Rule:oRequestVaccineDosage Obligation: mcdc owes pfizer.
Refers to oAgreedOnRequest, oDeliver, oAssign.
Referred to by pTermination.
# Specifier's note: To keep the contract in active state until the remain doses is less than the minimum requested quantity (end of performance) and the mcdc and pfizer terminate the agreement
Scenario:oRequestVaccineDosage is fulfilled
Given the contract is in force
When "remain.value" is less than "minQuantity"
And obligation "oAgreedOnRequest" has been fulfilled
And obligation "oDeliver" has been fulfilled
And obligation "oAssign" has been fulfilled
And "mcdc" declares the agreement terminated ("mcdcTerminateAgreement")
And "pfizer" declares the agreement terminated ("pfizerTerminateAgreement")
Then obligation "oRequestVaccineDosage" is fulfilled
Scenario:oRequestVaccineDosage is violated
Given the contract is in force
When any of the required conditions does not come about
Then obligation "oRequestVaccineDosage" is violated
Specifier's note: To keep the contract in active state until the remain doses is less than the minimum requested quantity (end of performance) and the mcdc and pfizer terminate the agreement
Each time mcdc submits a request (requested), this obligation is created. It becomes binding once mcdc agrees (agreedFromG). mcdc must then, for pfizer, ensure that (1) pfizer informs the negotiated lead time (leadtimeINform) strictly before agreedFromG; (2) leadtimeINform, requested, and agreedFromG all refer to the same reqID; and (3) requested.dosage is between minQuantity and remain.value. Otherwise the obligation is violated.
Rule:oAgreedOnRequest Obligation: mcdc owes pfizer.
Referred to by oRequestVaccineDosage, oDeliver.
# Specifier's note: A Request must satisfy all the conditions required in a particular order
Scenario:oAgreedOnRequest is fulfilled
Given "mcdc" submits a request ("requested")
And "mcdc" agrees ("agreedFromG")
When "pfizer" informs the negotiated lead time ("leadtimeINform") strictly before "agreedFromG"
And "leadtimeINform", "requested", and "agreedFromG" all refer to the same "reqID"
And "requested.dosage" is between "minQuantity" and "remain.value"
Then obligation "oAgreedOnRequest" is fulfilled
Scenario:oAgreedOnRequest is violated
Given "mcdc" submits a request ("requested")
And "mcdc" agrees ("agreedFromG")
When any of the required conditions does not come about
Then obligation "oAgreedOnRequest" is violated
Specifier's note: A Request must satisfy all the conditions required in a particular order
pfizer gives notice of the delivery date (notifiedOD) strictly before confirmed
worldcourier delivers (delivered)
delivered.delAddr equals confirmed.shipToLocation
vaccineDose.FDAapproval holds
delivered, requested, notifiedOD, and confirmed all refer to the same reqID
either delivered.date equals notifiedOD.delD or pfizer declares an outside risk (outsideRisk), delivered.date equals outsideRisk.extendedDel, and requested and outsideRisk refer to the same reqID
no temperature, sealOpen, humidity, shock, or lightExposure alert occurs for the same reqID as requested
Rule1: pfizer grants mcdc read access to vaccineDose
Rule2: pfizer grants worldcourier read access to vaccineDose.FDAapproval
Rule3: pfizer grants mcdc read access to delivered
Rule4: regulator revokes pfizer write access on temperature.value
Rule5: regulator revokes pfizer write access on humidity.value
Rule6: regulator revokes pfizer write access on shock.value
Rule7: regulator revokes pfizer write access on lightExposure.value
Rule8: regulator revokes pfizer write access on sealOpen.value
Each time mcdc submits a request (requested), this obligation is created. It becomes binding once obligation oAgreedOnRequest has been fulfilled and mcdc confirms (confirmed). pfizer must then, for mcdc, ensure that (1) pfizer gives notice of the delivery date (notifiedOD) strictly before confirmed; (2) worldcourier delivers (delivered); (3) delivered.delAddr equals confirmed.shipToLocation; (4) vaccineDose.FDAapproval holds; (5) delivered, requested, notifiedOD, and confirmed all refer to the same reqID; (6) either delivered.date equals notifiedOD.delD or pfizer declares an outside risk (outsideRisk), delivered.date equals outsideRisk.extendedDel, and requested and outsideRisk refer to the same reqID; and (7) no temperature, sealOpen, humidity, shock, or lightExposure alert occurs for the same reqID as requested. Otherwise the obligation is violated.
Access to this obligation is administered by regulator. It refers to oAgreedOnRequest. It is referred to by oRequestVaccineDosage, oAssign, and oPay. Access rules that apply: Rule1: pfizer grants mcdc read access to vaccineDose, Rule2: pfizer grants worldcourier read access to vaccineDose.FDAapproval, Rule3: pfizer grants mcdc read access to delivered, Rule4: regulator revokes pfizer write access on temperature.value, Rule5: regulator revokes pfizer write access on humidity.value, Rule6: regulator revokes pfizer write access on shock.value, Rule7: regulator revokes pfizer write access on lightExposure.value, and Rule8: regulator revokes pfizer write access on sealOpen.value.
Rule:oDeliver Obligation: pfizer owes mcdc.
Access administered by regulator.
Refers to oAgreedOnRequest.
Referred to by oRequestVaccineDosage, oAssign, oPay.
Access rule Rule1: pfizer grants mcdc read access to vaccineDose.
Access rule Rule2: pfizer grants worldcourier read access to vaccineDose.FDAapproval.
Access rule Rule3: pfizer grants mcdc read access to delivered.
Access rule Rule4: regulator revokes pfizer write access on temperature.value.
Access rule Rule5: regulator revokes pfizer write access on humidity.value.
Access rule Rule6: regulator revokes pfizer write access on shock.value.
Access rule Rule7: regulator revokes pfizer write access on lightExposure.value.
Access rule Rule8: regulator revokes pfizer write access on sealOpen.value.
Scenario:oDeliver is fulfilled
Given "mcdc" submits a request ("requested")
And obligation "oAgreedOnRequest" has been fulfilled
And "mcdc" confirms ("confirmed")
When "pfizer" gives notice of the delivery date ("notifiedOD") strictly before "confirmed"
And "worldcourier" delivers ("delivered")
And "delivered.delAddr" equals "confirmed.shipToLocation"
And "vaccineDose.FDAapproval" holds
And "delivered", "requested", "notifiedOD", and "confirmed" all refer to the same "reqID"
And either "delivered.date" equals "notifiedOD.delD" or "pfizer" declares an outside risk ("outsideRisk"), "delivered.date" equals "outsideRisk.extendedDel", and "requested" and "outsideRisk" refer to the same "reqID"
And no "temperature", "sealOpen", "humidity", "shock", or "lightExposure" alert occurs for the same "reqID" as "requested"
Then obligation "oDeliver" is fulfilled
Scenario:oDeliver is violated
Given "mcdc" submits a request ("requested")
And obligation "oAgreedOnRequest" has been fulfilled
And "mcdc" confirms ("confirmed")
When any of the required conditions does not come about
Then obligation "oDeliver" is violated
when obligation oDeliver has been fulfilled, remain.value is reduced by delivered.dosage and paidAmount.value is set to delivered.dosage × vaccineDose.price
Rule1: pfizer grants mcdc read access to vaccineDose
Rule3: pfizer grants mcdc read access to delivered
Each time mcdc submits a request (requested), this obligation is created. It becomes binding once worldcourier delivers (delivered) and delivered and requested refer to the same reqID. mcdc must then, for pfizer, ensure that when obligation oDeliver has been fulfilled, remain.value is reduced by delivered.dosage and paidAmount.value is set to delivered.dosage × vaccineDose.price and delivered and requested refer to the same reqID. Otherwise the obligation is violated.
It refers to oDeliver. It is referred to by oRequestVaccineDosage. Access rules that apply: Rule1: pfizer grants mcdc read access to vaccineDose and Rule3: pfizer grants mcdc read access to delivered.
Rule:oAssign Obligation: mcdc owes pfizer.
Refers to oDeliver.
Referred to by oRequestVaccineDosage.
Access rule Rule1: pfizer grants mcdc read access to vaccineDose.
Access rule Rule3: pfizer grants mcdc read access to delivered.
# Specifier's note: Calculate the remains of the doses and the price of the doses delivered when the required doses are delivered, fulfilling all the agreed-upon conditions
Scenario:oAssign is fulfilled
Given "mcdc" submits a request ("requested")
And "worldcourier" delivers ("delivered")
And "delivered" and "requested" refer to the same "reqID"
When when obligation "oDeliver" has been fulfilled, "remain.value" is reduced by "delivered.dosage" and "paidAmount.value" is set to "delivered.dosage" × "vaccineDose.price"
And "delivered" and "requested" refer to the same "reqID"
Then obligation "oAssign" is fulfilled
Scenario:oAssign is violated
Given "mcdc" submits a request ("requested")
And "worldcourier" delivers ("delivered")
And "delivered" and "requested" refer to the same "reqID"
When any of the required conditions does not come about
Then obligation "oAssign" is violated
Specifier's note: Calculate the remains of the doses and the price of the doses delivered when the required doses are delivered, fulfilling all the agreed-upon conditions
Surviving obligations
These remain enforceable after the contract has ended.
Rule1: pfizer grants mcdc read access to vaccineDose
Rule2: pfizer grants worldcourier read access to vaccineDose.FDAapproval
Rule3: pfizer grants mcdc read access to delivered
Each time mcdc submits a request (requested), this obligation is created. It becomes binding once (1) mcdc records an invoice (invoiced); (2) vaccineDose.FDAapproval holds; (3) invoiced, requested, and delivered all refer to the same reqID; (4) obligation oDeliver has been fulfilled; and (5) worldcourier delivers (delivered) strictly before invoiced. mcdc must then, for pfizer, ensure that (1) mcdc pays (paid) strictly before 30 days after invoiced.date; (2) invoiced, requested, and paid all refer to the same reqID; and (3) paid.amount equals paidAmount.value. Deadline: paid strictly before 30 days after invoiced.date. Otherwise the obligation is violated. It remains enforceable after the contract ends.
It refers to oDeliver. Access rules that apply: Rule1: pfizer grants mcdc read access to vaccineDose, Rule2: pfizer grants worldcourier read access to vaccineDose.FDAapproval, and Rule3: pfizer grants mcdc read access to delivered.
Rule:oPay Surviving obligation (still owed after the contract ends): mcdc owes pfizer.
Refers to oDeliver.
Access rule Rule1: pfizer grants mcdc read access to vaccineDose.
Access rule Rule2: pfizer grants worldcourier read access to vaccineDose.FDAapproval.
Access rule Rule3: pfizer grants mcdc read access to delivered.
# Specifier's note: Checking the agreed terms necessary to activate and complete the payment process
Scenario:oPay is fulfilled
Given "mcdc" submits a request ("requested")
And "mcdc" records an invoice ("invoiced")
And "vaccineDose.FDAapproval" holds
And "invoiced", "requested", and "delivered" all refer to the same "reqID"
And obligation "oDeliver" has been fulfilled
And "worldcourier" delivers ("delivered") strictly before "invoiced"
When "mcdc" pays ("paid") strictly before 30 days after "invoiced.date"
And "invoiced", "requested", and "paid" all refer to the same "reqID"
And "paid.amount" equals "paidAmount.value"
Then obligation "oPay" is fulfilled
Scenario:oPay is violated
Given "mcdc" submits a request ("requested")
And "mcdc" records an invoice ("invoiced")
And "vaccineDose.FDAapproval" holds
And "invoiced", "requested", and "delivered" all refer to the same "reqID"
And obligation "oDeliver" has been fulfilled
And "worldcourier" delivers ("delivered") strictly before "invoiced"
When "paid" does not occur strictly before 30 days after "invoiced.date"
Then obligation "oPay" is violated
Specifier's note: Checking the agreed terms necessary to activate and complete the payment process
Rule1: pfizer grants mcdc read access to vaccineDose
Rule2: pfizer grants worldcourier read access to vaccineDose.FDAapproval
Rule9: fda grants pfizer read access to withdrewApproval
This obligation exists from the start of the contract. It becomes binding once fda withdraws approval (withdrewApproval). pfizer must then, for mcdc, ensure that vaccineDose.FDAapproval is set to false. Otherwise the obligation is violated. It remains enforceable after the contract ends.
Access rules that apply: Rule1: pfizer grants mcdc read access to vaccineDose, Rule2: pfizer grants worldcourier read access to vaccineDose.FDAapproval, and Rule9: fda grants pfizer read access to withdrewApproval.
Rule:oWithdrewApproval Surviving obligation (still owed after the contract ends): pfizer owes mcdc.
Access rule Rule1: pfizer grants mcdc read access to vaccineDose.
Access rule Rule2: pfizer grants worldcourier read access to vaccineDose.FDAapproval.
Access rule Rule9: fda grants pfizer read access to withdrewApproval.
# Specifier's note: FDA approval monitoring where mcdc must pay for vaccine doses already approved by FDA
Scenario:oWithdrewApproval is fulfilled
Given "fda" withdraws approval ("withdrewApproval")
When "vaccineDose.FDAapproval" is set to false
Then obligation "oWithdrewApproval" is fulfilled
Scenario:oWithdrewApproval is violated
Given "fda" withdraws approval ("withdrewApproval")
When any of the required conditions does not come about
Then obligation "oWithdrewApproval" is violated
Specifier's note: FDA approval monitoring where mcdc must pay for vaccine doses already approved by FDA
when either mcdc (lawStopWork) or regulator (adminStopWork, regulationStopWork, or judicialStopWork) issues a stop-work order
Exercisable
once mcdc issues a stop-work order (govStopWork)
Effect
The contract is terminated
Access administered by
not specified
Refers to
no other norm
Referred to by
no other norm
Access rules
none touch this power
If either mcdc (lawStopWork) or regulator (adminStopWork, regulationStopWork, or judicialStopWork) issues a stop-work order, mcdc gains the power, against pfizer, to bring it about that the contract is terminated. It may be exercised once mcdc issues a stop-work order (govStopWork).
Rule:pStopWork Power held by mcdc against pfizer.
# Specifier's note: mcdc has the power to stop the work if one of the following four events occurs
Scenario Outline:pStopWork is exercised
Given "<party>" issues a stop-work order ("<event>")
When "mcdc" issues a stop-work order ("govStopWork")
Then the contract is terminated
Examples: | party | event |
| mcdc | lawStopWork |
| regulator | adminStopWork |
| regulator | regulationStopWork |
| regulator | judicialStopWork |
Specifier's note: mcdc has the power to stop the work if one of the following four events occurs
If obligation oRequestVaccineDosage has been fulfilled, pfizer gains the power, against mcdc, to bring it about that the contract is terminated. It may be exercised at will.
Rule:pTermination Power held by pfizer against mcdc.
Refers to oRequestVaccineDosage.
# Specifier's note: Terminate the contract at the end of the performance
Scenario:pTermination is exercised
Given obligation "oRequestVaccineDosage" has been fulfilled
When "pfizer" exercises the power
Then the contract is terminated
Specifier's note: Terminate the contract at the end of the performance
Specification
The SymboleoAC source this documentation was generated from, coloured as in the editor. Identifiers in the text above jump to their declaration here; inside the source, references are linked to their declarations.