VaccineProcurementC · contract documentation

The contract as a whole

Summary
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)
  • pfizer may terminate the contract once obligation oRequestVaccineDosage has been fulfilled (pTermination)
Still owed after it ends
Who controls access to information
regulator administers the access-control policy. 9 rules: 4 grants, 5 revocations.
Monitoring
  • 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)
  1. oAgreedOnRequest: mcdc owes pfizer; created by requested; binding once agreedFromG; requires leadtimeINform.
  2. oDeliver: pfizer owes mcdc; created by requested; binding once confirmed and oAgreedOnRequest is fulfilled; requires notifiedOD, delivered, and outsideRisk.
  3. oAssign: mcdc owes pfizer; created by requested; binding once delivered; requires oDeliver is fulfilled.
  4. oRequestVaccineDosage: mcdc owes pfizer; exists from the start; binding immediately; requires mcdcTerminateAgreement and pfizerTerminateAgreement and oAgreedOnRequest, oDeliver, and oAssign are fulfilled.
  5. oPay (survives termination): mcdc owes pfizer; created by requested; binding once invoiced and delivered and oDeliver is fulfilled; requires paid.
  6. 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.

performer

controller

performer

controller

performer

controller

performer

controller

performer

controller

shipToLocation

performer

controller

delAddr

performer

controller

owner

performer

controller

performer

controller

performer

controller

performer

controller

owner

owner

performer

controller

performer

controller

performer

controller

controller

performer

Role

Event

Asset

DataTransfer

Manufacturer

+String name

+String org

+String dept

Government

+String name

+String org

+String dept

«thirdParty»

Regulator

+String name

+String org

+String dept

«thirdParty»

WorldCourier

+String name

+String org

+String dept

«thirdParty»

FDA

+String name

+String org

+String dept

Invoiced

+String Env reqID

+Number Env noOfDoses

+Date Env date

Paid

+String Env reqID

+Number Env amount

Requested

+String Env reqID

+Number Env dosage

+Date Env date

LeadtimeInformedNegotiated

+String Env reqID

+Date Env date

NotifiedOfDelivery

+String Env reqID

+Date Env delD

Confirmed

+String Env reqID

«Enumeration»

Location

Ottawa

Toronto

Montrial

Vancover

Delivered

+String Env reqID

+Number Env dosage

+Date Env date

VaccineDose

+Number price

+Boolean FDAapproval

StopWork

ThirdPartyStopWork

Agreed

+String Env reqID

Risk

+String Env reqID

+Date Env extendedDel

Remain

+Number value

PaidAmount

+Number value

WithdrewApproval

TerminateAgreementG

TerminateAgreementM

Alert

+Number Env value

+String Env sensorTimestamp

+String condition

+String window

+String count

+String Env reqID

performer

controller

performer

controller

performer

controller

performer

controller

performer

controller

shipToLocation

performer

controller

delAddr

performer

controller

owner

performer

controller

performer

controller

performer

controller

performer

controller

owner

owner

performer

controller

performer

controller

performer

controller

controller

performer

Role

Event

Asset

DataTransfer

Manufacturer

+String name

+String org

+String dept

Government

+String name

+String org

+String dept

«thirdParty»

Regulator

+String name

+String org

+String dept

«thirdParty»

WorldCourier

+String name

+String org

+String dept

«thirdParty»

FDA

+String name

+String org

+String dept

Invoiced

+String Env reqID

+Number Env noOfDoses

+Date Env date

Paid

+String Env reqID

+Number Env amount

Requested

+String Env reqID

+Number Env dosage

+Date Env date

LeadtimeInformedNegotiated

+String Env reqID

+Date Env date

NotifiedOfDelivery

+String Env reqID

+Date Env delD

Confirmed

+String Env reqID

«Enumeration»

Location

Ottawa

Toronto

Montrial

Vancover

Delivered

+String Env reqID

+Number Env dosage

+Date Env date

VaccineDose

+Number price

+Boolean FDAapproval

StopWork

ThirdPartyStopWork

Agreed

+String Env reqID

Risk

+String Env reqID

+Date Env extendedDel

Remain

+Number value

PaidAmount

+Number value

WithdrewApproval

TerminateAgreementG

TerminateAgreementM

Alert

+Number Env value

+String Env sensorTimestamp

+String condition

+String window

+String count

+String Env reqID

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.

oRequestVaccineDosage

oAgreedOnRequest

oDeliver

oAssign

oPay

oWithdrewApproval

pStopWork

pTermination

read

read

read

write

write

write

write

write

read

mcdc

pfizer

Rule1

worldcourier

Rule2

Rule3

Rule4

Rule5

Rule6

Rule7

Rule8

Rule9

oRequestVaccineDosage

oAgreedOnRequest

oDeliver

oAssign

oPay

oWithdrewApproval

pStopWork

pTermination

read

read

read

write

write

write

write

write

read

mcdc

pfizer

Rule1

worldcourier

Rule2

Rule3

Rule4

Rule5

Rule6

Rule7

Rule8

Rule9

Access policy

Roles (rows) × resources (columns). Policy controller: regulator.

role \ resourcevaccineDosevaccineDose.FDAapprovaldeliveredtemperature.valuehumidity.valueshock.valuelightExposure.valuesealOpen.valuewithdrewApproval
mcdc
✓ read
✓ read
worldcourier
✓ read
pfizer
✗ write
✗ write
✗ write
✗ write
✗ write
✓ read

Obligations

ObligationoRequestVaccineDosageline 72
Who owes
mcdc (Government) to pfizer (Manufacturer)
Created
at the start of the contract (no trigger)
Binding
immediately (no condition)
Must bring about
  • remain.value is less than minQuantity
  • obligation oAgreedOnRequest has been fulfilled
  • obligation oDeliver has been fulfilled
  • obligation oAssign has been fulfilled
  • mcdc declares the agreement terminated (mcdcTerminateAgreement)
  • pfizer declares the agreement terminated (pfizerTerminateAgreement)
Deadline
none stated
Otherwise
the obligation is violated
Access administered by
not specified
Referred to by
pTermination
Access rules
none touch this obligation

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.

It refers to oAgreedOnRequest, oDeliver, and oAssign. It is referred to by pTermination.

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

ObligationoAgreedOnRequestline 83
Who owes
mcdc (Government) to pfizer (Manufacturer)
Created
each time mcdc submits a request (requested)
Binding
once mcdc agrees (agreedFromG)
Must bring about
  • pfizer informs the negotiated lead time (leadtimeINform) strictly before agreedFromG
  • leadtimeINform, requested, and agreedFromG all refer to the same reqID
  • requested.dosage is between minQuantity and remain.value
Deadline
none stated
Otherwise
the obligation is violated
Access administered by
not specified
Refers to
no other norm
Access rules
none touch this obligation

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.

It is referred to by oRequestVaccineDosage and oDeliver.

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

ObligationoDeliverline 93
Who owes
pfizer (Manufacturer) to mcdc (Government)
Created
each time mcdc submits a request (requested)
Binding
once
Must bring about
  • 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
Deadline
none stated
Otherwise
the obligation is violated
Access administered by
regulator
Referred to by
oRequestVaccineDosage, oAssign, and oPay
Access rules
  • 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
ObligationoAssignline 112
Who owes
mcdc (Government) to pfizer (Manufacturer)
Created
each time mcdc submits a request (requested)
Binding
once
  • worldcourier delivers (delivered)
  • delivered and requested refer to the same reqID
Must bring about
  • when obligation oDeliver has been fulfilled, remain.value is reduced by delivered.dosage and paidAmount.value is set to delivered.dosage × vaccineDose.price
  • delivered and requested refer to the same reqID
Deadline
none stated
Otherwise
the obligation is violated
Access administered by
not specified
Refers to
oDeliver
Referred to by
oRequestVaccineDosage
Access rules
  • 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.

Surviving obligationoPayline 121
Who owes
mcdc (Government) to pfizer (Manufacturer)
Created
each time mcdc submits a request (requested)
Binding
once
  • mcdc records an invoice (invoiced)
  • vaccineDose.FDAapproval holds
  • invoiced, requested, and delivered all refer to the same reqID
  • obligation oDeliver has been fulfilled
  • worldcourier delivers (delivered) strictly before invoiced
Must bring about
  • mcdc pays (paid) strictly before 30 days after invoiced.date
  • invoiced, requested, and paid all refer to the same reqID
  • paid.amount equals paidAmount.value
Deadline
paid strictly before 30 days after invoiced.date
Otherwise
the obligation is violated
Survives
yes: still owed after the contract ends
Access administered by
not specified
Refers to
oDeliver
Referred to by
no other norm
Access rules
  • 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

Surviving obligationoWithdrewApprovalline 135
Who owes
pfizer (Manufacturer) to mcdc (Government)
Created
at the start of the contract (no trigger)
Binding
once fda withdraws approval (withdrewApproval)
Must bring about
vaccineDose.FDAapproval is set to false
Deadline
none stated
Otherwise
the obligation is violated
Survives
yes: still owed after the contract ends
Access administered by
not specified
Refers to
no other norm
Referred to by
no other norm
Access rules
  • 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

Powers

PowerpStopWorkline 142
Who holds it
mcdc (Government), against pfizer (Manufacturer)
Arises
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

PowerpTerminationline 148
Who holds it
pfizer (Manufacturer), against mcdc (Government)
Arises
when obligation oRequestVaccineDosage has been fulfilled
Exercisable
at will (no further condition)
Effect
The contract is terminated
Access administered by
not specified
Referred to by
no other norm
Access rules
none touch this power

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.

It refers to oRequestVaccineDosage.

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.

1Domain covidVaccineProcurementD2  Manufacturer isA Role with name: String, org: String, dept: String;3  Government isA Role with name: String, org: String, dept: String;4  Regulator isA Role thirdParty with name: String, org: String, dept: String;5  WorldCourier isA Role thirdParty with name: String, org: String, dept: String;6  FDA isA Role thirdParty with name: String, org: String, dept: String;7  Invoiced isA Event with Env reqID : String, Env noOfDoses : Number, Env date : Date,  performer: Government, controller: Government;8  Paid isA Event with Env reqID : String, Env amount : Number, performer: Government, controller: Government;9  Requested isA Event with Env reqID : String, Env dosage : Number, Env date : Date, performer: Government, controller: Government;10  LeadtimeInformedNegotiated isA Event with Env reqID : String, Env date : Date, performer: Manufacturer, controller: Manufacturer;11  NotifiedOfDelivery isA Event with Env reqID : String, Env delD : Date, performer: Manufacturer, controller: Manufacturer;12  Location isAn Enumeration(Ottawa, Toronto, Montrial, Vancover);13  Confirmed isA Event with Env reqID : String, Env shipToLocation: Location, performer: Government, controller: Government;14  Delivered isA Event with Env reqID : String, Env dosage : Number, Env delAddr : Location, Env date: Date, performer: WorldCourier, controller: Manufacturer;15  VaccineDose isA Asset with  price : Number, FDAapproval : Boolean, owner: Manufacturer;16  StopWork isA Event with performer: Government, controller: Government;17  ThirdPartyStopWork isA Event with performer: Regulator, controller: Regulator;18  Agreed isA Event with Env reqID: String, performer: Government, controller: Government;19  Risk isA Event with Env reqID: String, Env extendedDel: Date, performer: Manufacturer, controller: Manufacturer;20  Remain isA Asset with value:Number, owner: Government;21  PaidAmount isA Asset with value:Number, owner: Government;22  WithdrewApproval isA Event with performer: FDA, controller: FDA;23  TerminateAgreementG isA Event with performer: Government, controller: Government;24  TerminateAgreementM isA Event with performer: Manufacturer, controller: Manufacturer;25  Alert isA DataTransfer with Env value: Number, Env sensorTimestamp:String, condition: String, window: String, count: String, Env reqID : String, controller:Manufacturer, performer:Regulator;26 27endDomain 28  29TimeGranularity is days30Contract VaccineProcurementC (pfizerP :Manufacturer, mcdcP:Government, regulatorP: Regulator, fdaP: FDA, worldcourierP: WorldCourier,31approval : Boolean, unitPrice : Number, minQuantity : Number, maxQuantity:Number)32 33Declarations34  regulator: Regulator with name:= regulatorP.name, org:= regulatorP.org, dept:= regulatorP.dept;35  pfizer: Manufacturer with name:= pfizerP.name, org:= pfizerP.org, dept:= pfizerP.dept;36  mcdc: Government with name:= mcdcP.name, org:= mcdcP.org, dept:= mcdcP.dept;37  fda: FDA with name:= fdaP.name, org:= fdaP.org, dept:= fdaP.dept;38  worldcourier: WorldCourier with name:= worldcourierP.name, org:= worldcourierP.org, dept:= worldcourierP.dept;39 40  requested : Requested  with performer:= mcdc, controller:= mcdc;41  leadtimeINform : LeadtimeInformedNegotiated  with performer:= pfizer, controller:= pfizer;42  notifiedOD : NotifiedOfDelivery  with performer:= pfizer, controller:= pfizer;43  delivered : Delivered  with performer:= worldcourier, controller:= pfizer;44  invoiced : Invoiced with performer:= mcdc, controller:= mcdc;45  paid : Paid with performer:= mcdc, controller:= mcdc;46  confirmed: Confirmed with performer:= mcdc, controller:= mcdc;47  lawStopWork: StopWork with performer:= mcdc, controller:= mcdc;48  regulationStopWork:ThirdPartyStopWork with performer:= regulator, controller:= regulator;49  judicialStopWork:ThirdPartyStopWork with performer:= regulator, controller:= regulator;50  adminStopWork: ThirdPartyStopWork with performer:= regulator, controller:= regulator;51  govStopWork: StopWork with performer:= mcdc, controller:= mcdc;52  vaccineDose : VaccineDose with  price := unitPrice, FDAapproval := approval, owner:=pfizer;53  agreedFromG: Agreed with performer:= mcdc, controller:= mcdc;54  outsideRisk: Risk with performer:= pfizer, controller:= pfizer;55  remain: Remain with value:= maxQuantity, owner:=mcdc;56  paidAmount:PaidAmount with value:=0, owner:=mcdc;57  withdrewApproval: WithdrewApproval  with performer:= fda, controller:= fda;58  mcdcTerminateAgreement: TerminateAgreementG with performer:= mcdc, controller:= mcdc;59  pfizerTerminateAgreement: TerminateAgreementM with performer:= pfizer, controller:= pfizer;60  // sensors61  temperature: Alert with condition := "value > -80", window := "10", count := "5", controller := pfizer, performer := regulator;62  humidity : Alert with condition := "value > 70", window := "15", count := "3", controller := pfizer, performer := regulator;63  shock : Alert with condition := "value > 5",  window := "", count := "", controller := pfizer, performer := regulator;64  lightExposure : Alert with condition := "value > 0",  window := "", count := "", controller := pfizer, performer := regulator;65  sealOpen : Alert with condition := "value > 0", window := "",  count := "", controller := pfizer, performer := regulator;66 67Preconditions68  vaccineDose.FDAapproval==true;69 70Obligations71// 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 agreement72  oRequestVaccineDosage: O(mcdc, pfizer,73    true,74    (remain.value < minQuantity)75      and Happens(Fulfilled(obligations.oAgreedOnRequest))76      and Happens(Fulfilled(obligations.oDeliver))77      and Happens(Fulfilled(obligations.oAssign))78      and Happens(mcdcTerminateAgreement)79      and Happens(pfizerTerminateAgreement)80  ); // 3.281 82 // A Request must satisfy all the conditions required in a particular order83  oAgreedOnRequest: Happens(requested) -> O(mcdc, pfizer,84    Happens(agreedFromG),85    ShappensBefore(leadtimeINform, agreedFromG)86      and leadtimeINform.reqID == requested.reqID87      and agreedFromG.reqID == requested.reqID88      and (requested.dosage >= minQuantity and requested.dosage <= remain.value)89  );90 91 // A delivery obligation is achieved if the delivering operation satisfies all the conditions required in a particular order92 // and (delivered.temperature <= temperature) // and Happens(Fulfilled(obligations.oMonitorColdChain))93  oDeliver: Happens(requested) -> O(pfizer, mcdc,94    Happens(Fulfilled(obligations.oAgreedOnRequest))95      and Happens(confirmed),96    ShappensBefore(notifiedOD, confirmed)97      and Happens(delivered)98      and delivered.delAddr == confirmed.shipToLocation99      and vaccineDose.FDAapproval == true100      and delivered.reqID == requested.reqID101      and notifiedOD.reqID == requested.reqID102      and confirmed.reqID == requested.reqID103      and ((delivered.date == notifiedOD.delD) or (Happens(outsideRisk) and delivered.date == outsideRisk.extendedDel and requested.reqID == outsideRisk.reqID))104      and (not Happens(temperature) or temperature.reqID != requested.reqID)105      and (not Happens(sealOpen) or sealOpen.reqID != requested.reqID)106      and (not Happens(humidity) or humidity.reqID != requested.reqID)107      and (not Happens(shock) or shock.reqID != requested.reqID)108      and (not Happens(lightExposure) or lightExposure.reqID != requested.reqID)109  ) with Controller regulator;110 111  // 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 											112  oAssign: Happens(requested) -> O(mcdc, pfizer,113    Happens(delivered)114      and delivered.reqID == requested.reqID,115    HappensAssign(Fulfilled(obligations.oDeliver), remain.value := remain.value - delivered.dosage; paidAmount.value := delivered.dosage * vaccineDose.price)116      and delivered.reqID == requested.reqID117  );118 119Surviving Obligations120// Checking the agreed terms necessary to activate and complete the payment process121  oPay: Happens(requested) -> Obligation(mcdc, pfizer,122    Happens(invoiced)123      and vaccineDose.FDAapproval == true124      and invoiced.reqID == requested.reqID125      and Happens(Fulfilled(obligations.oDeliver))126      and ShappensBefore(delivered, invoiced)127      and delivered.reqID == requested.reqID,128    ShappensBefore(paid, Date.add(invoiced.date, 30, days))129      and invoiced.reqID == requested.reqID130      and invoiced.reqID == paid.reqID131      and paid.amount == paidAmount.value132  )	;133 134// FDA approval monitoring where mcdc must pay for vaccine doses already approved by FDA					135  oWithdrewApproval: O(pfizer, mcdc,136    Happens(withdrewApproval),137    Assign(vaccineDose.FDAapproval := false)138  );139 140Powers141// mcdc has the power to stop the work if one of the following four events occurs142  pStopWork: Happens(lawStopWork) or Happens(adminStopWork) or Happens(regulationStopWork) or Happens(judicialStopWork) -> P(mcdc, pfizer,143    Happens(govStopWork),144    Terminated(self)145  );146 147// Terminate the contract at the end of the performance148  pTermination: Happens(Fulfilled(obligations.oRequestVaccineDosage)) -> P(pfizer, mcdc,149    true,150    Terminated(self)151  );152 153ACPolicy with Controller regulator154  Rule1: Grant read To mcdc On vaccineDose by pfizer; // give read permission to government to read information vaccineDose155  Rule2: Grant read To worldcourier On vaccineDose.FDAapproval by pfizer;156  Rule3: Grant read To mcdc On delivered by pfizer;157  Rule4: Revoke write To pfizer On temperature.value by regulator; // we took the right of controller to write (constraint)158  Rule5: Revoke write To pfizer On humidity.value by regulator;159  Rule6: Revoke write To pfizer On shock.value by regulator;160  Rule7: Revoke write To pfizer On lightExposure.value by regulator;161  Rule8: Revoke write To pfizer On sealOpen.value by regulator;162  Rule9: Grant read To pfizer On withdrewApproval by fda; // permission by FDA to mcde to see the state163endContract164