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
Section titled “The workflow”The workflow starts for every document of the type contract. Its file workflow.yaml:
$schema: 'https://docs.acriva.de/schemas/workflow.schema.json'format: 1schemaVersion: 8sdk: '1.0.0'key: sign-contractname: Vertrag signieren lassentemplate: customtrigger: documentType: contractfields: - 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: - contractstart: partnerKnownsteps: - 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