Contract and ContractProducts

posted Mar 21, 2012, 6:22 AM by Eric Patrick


For hub installation, we need to represent relationships between Quandis clients ("Service Providers"), their clients ("Clients"), and their vendors ("Vendors"). For example:
  • When a Chase employee logs into the Valuation hub, she should be presented with a dropdown list of only those Service Providers that Chase has a relationship with
  • When a Chase employee orders a Valuation from Service Provider A, she should be presented with only those Valuation products covered by their contract
  • When a workflow solicits agents, only those agents that have a relationship with a service provider should be eligible for solicitation
Ultimately, these relationships are defined in the business world by legal contracts. Thus, QBO 3 introduces the Contract and ContractProduct tables to help map these real-world relationships.


A Contract row represents a relationship between two entities
  • Contract: name of the contract
  • ClientID: the Organization that is paying to have a product or service provided under the contract
  • VendorID: the Organization that is being paid to have a product or service provided under the contract
  • Effective: date the contract is effective
  • Expires: date the contract expires


Represents a product or service covered by a Contract.

The ContractProduct table is a child of the Contract table, and defines what products are covered by a Contract. For example, Service Provider A may offer these products:
  • BPO - Interior
  • BPO - Exterior
  • Appraisal
However, when negotiating their contract with Chase, they may be unable to reach agreement on a price for Appraisals. Thus, Chase will be allowed to order BPO - Interior and BPO- Exterior, but not Appraisal.  This is mapped by creating two ContractProduct rows, one each for BPO - Interior and BPO - Exterior.

  • ContactID: the Contract to which a ContractProduct applies
  • ProcessTemplateID: the Process Template (product or service) that can be ordered under the contract

Technical notes

These classes are part of the QBO 3 qbo.Process and qbo.ProcessWeb projects, but the data components (tables and foreign keys) are in source control under the QBO 2.0 qbo.Database.Process project.