# Contract Management
This section will guide you through the core principles on how business relationships, we call them Contracts
, are structured, how they can be established and how they're used.
# Object Graph
┌────────────────────┐
┌───▶│ Contract │◀───┐
│ └────────────────────┘ │
│ ▲ │
│ │ │
│ ┌────────────────────┐ │
│ │ Contract Request │◀───┼──────────┐
│ └────────────────────┘ │ │
│ ▲ │ │
│ ┌────────────┴───────────┐ │ │
│ │ │ │ │
┌───────┴─────────────┐ ┌─────────────┴───────┐ │
│ Zaikio/Organization │ │ Zaikio/Organization │ │
│ (Supplier) │ │ (Consumer) │ │
└─────────────────────┘ └─────────────────────┘ │
▲ │
│ │
┌─────────────────────┐ │
│ Zaikio/People │ │
│ (Requesting Person) │──┘
└─────────────────────┘
# General Concept
Within Procurement Buyers and Sellers need to establish a business relationship in order to being able to do business with each other. In order to do so they need to establish a Contract
. Without a confirmed Contract
consumers will not be able to see and browse a supplier's catalog or to place an order.
In order to establish one, a Consumer needs to request a Contract
via a ContractRequest
which then needs to be accepted by the Supplier.
# Suppliers - How to handle contract requests
Once a consumer has requested a contract the Procurement application will fire a procurement_supplier.new_contract_request
event and you can act upon the respective Contract Request, either via the User Interface or via the Contract Requests API (opens new window).
Please be aware that we won't send this event in case you're using the contract request auto acceptance feature.
# Accepting or declining contract requests
When you cannot accept a request right away (for example because multiple departments are involved) then we suggest to update the request's timestamps when the request was vetted, a required mapping was done. That allows the consumers to understand the process of their requests.
In order to accept or decline contract request you need to make a PATCH request to the Contract Requests endpoint (opens new window).