Skip to content

Have a contract signed

When a contract arrives, the card Send for signature sends it in order to the requesting person as “Auftraggeber” and to the contract partner as “Auftragnehmer”, with a simple electronic signature (SES) and 14 days to sign, with no script. The partner’s first name, last name and email address are in three fields the workflow declares on the contract; right after the upload they are usually empty. Then the workflow waits before it sends anything: the requesting person gets the task “Vertragspartner erfassen”, enters the three fields on the contract and marks the task as done; that works only once every field has a value. After two working days Acriva reminds them once, and the workflow waits until the task is done or someone cancels it. When the details are already on the contract, the workflow sends at once; when the AI capture read them, the requesting person checks them before the request goes out. Acriva finds the signature fields itself; when it finds no certain place, the requesting person places the fields in the task Signature field review. When both have signed, Acriva stores the signed PDF with the Signature log as a new version. When someone declines, the requesting person clears it up in a task; when the time runs out, they are notified. When the email address isn’t valid, the card takes the exit “skipped” and the history names the “Auftragnehmer”. The workflow needs a person who uploaded the contract: without a requester, such as for a contract from an email inbox, the task finds nobody and the workflow ends with an error. Needs the add-on E-signature.

The workflow starts for every document of the type contract. Its file workflow.yaml:

$schema: 'https://docs.acriva.de/schemas/workflow.schema.json'
format: 1
schemaVersion: 8
sdk: '1.0.0'
key: sign-contract
name: Vertrag signieren lassen
template: custom
trigger:
documentType: contract
fields:
- key: partnerFirstName
kind: text
labelDe: Vorname Vertragspartner
labelEn: Partner's first name
documentTypes:
- contract
- key: partnerLastName
kind: text
labelDe: Nachname Vertragspartner
labelEn: Partner's last name
documentTypes:
- contract
- key: partnerEmail
kind: text
labelDe: E-Mail Vertragspartner
labelEn: Partner's email
documentTypes:
- contract
start: partnerKnown
steps:
- kind: condition
name: partnerKnown
label: Vertragspartner vollständig?
branches:
- when:
kind: or
conditions:
- kind: compare
field: partnerFirstName
operator: isEmpty
constants: []
- kind: compare
field: partnerLastName
operator: isEmpty
constants: []
- kind: compare
field: partnerEmail
operator: isEmpty
constants: []
next: capturePartner
default: sign
- kind: humanTask
name: capturePartner
label: Vertragspartner erfassen
taskKind: capture
assignees: []
fallback:
kind: requester
options:
remindAfterWorkingDays: 2
excludeRequester: false
excludeActorsOfSteps: []
pickFile: false
next: sign
requiredFields:
fields:
- partnerFirstName
- partnerLastName
- partnerEmail
requireComment: false
- kind: signature
name: sign
label: Vertrag signieren lassen
signers:
- kind: requester
label: Auftraggeber
- kind: external
label: Auftragnehmer
firstNameField: partnerFirstName
lastNameField: partnerLastName
emailField: partnerEmail
ordered: true
level: ses
expiryDays: 14
fieldMode: detect
reviewer:
kind: requester
allowConfidential: false
language: de
next: signed
onDeclined: clarify
onExpired: expired
onSkipped: skipped
- kind: humanTask
name: clarify
label: Ablehnung klären
taskKind: review
assignees: []
fallback:
kind: requester
options:
excludeRequester: false
excludeActorsOfSteps: []
pickFile: false
next: declined
onRejected: declined
- kind: notification
name: expired
label: Anfordernde Person informieren
recipients:
- kind: requester
notice: forInformation
next: expiredEnd
- kind: end
name: signed
label: Signiert
outcome: completed
- kind: end
name: declined
label: Abgelehnt
outcome: completed
- kind: end
name: expiredEnd
label: Abgelaufen
outcome: completed
- kind: end
name: skipped
label: Übersprungen
outcome: completed