The CPP/OMS company hierarchy has become more and more complex over the years and isn’t particularly well understood. It is becoming increasingly important to get right and this post aims to help clarify how companies should be setup.
A “company” can be used to represent four separate concepts:
- A trading entity such as a supplier1 or a retailer23
- A dropshipping relationship or connection between a supplier and a retailer
- An administrative collection of related retailers
- A fulfilment centre for production (this article does not cover fulfilment centres)
1 Suppliers are further classified as either B2B or B2C.
2 A retailer could also be self supplying (self fulfilment).
3 Generally, there should be a separate retailer company for each website or point of sale, though it is possible for a single retailer company to be used across multiple websites in certain circumstances (i.e. 100 white label sites hosted on a single Magento instance).
Primary and Secondary
In the context of a user, the user’s primary company is the company to which they are assigned via the dropdown in CPPv1. The user’s secondary companies are the companies which the user has been associated with via the multi select tick boxes in CPPv1.
In the context of an order that has both a primary and secondary set, the primary must always be a retailer and the secondary must always be a dropship.
In the context of an order that only has a primary, the primary must be either a retailer or a dropship.
- Retailer and supplier companies have a parent administrative company.
- Dropshippers must have both a parent supplier and a parent retailer
+----------------+ +----------------+ |Administrative A| |Administrative E| +--------+-------+ +---------+------+ | | | | | | | | | | +--------+--------+ | | | | | | | | | | | | | +-----+----+ +-----+----+ +----+-----+ |Retailer B| |Retailer C+------>Dropshipper C-F+------>Supplier F| +-----+----+ +----------+ +----------+ | | | v Dropshipper B-D + | | | | | +----------+ +---->Supplier D| +----------+
Normally, most companies would have Custom Gateway set as the administrative company. This is most appropriate when the trading entity in question has a fairly simple relationship with the system.
For example, a standalone retailer such as Getting Personal or a supplier such as Colorado Timberline.
However as soon as that relationship is more complicated (usually if the client creates their own companies), then administrative companies should be used instead.
For example, Evode are a partner company for who The Entertainer are a retailer client.
Therefore, Evode should be an administrative company and The Entertainer should be a retailer with Evode set as the administrative company.
Being an administrative company also has implications for how commissions are collected by Custom Gateway. Commission invoices are grouped by administrative company, unless the administrative company is Custom Gateway itself, in which case retailers and suppliers are invoiced separately.
Another example is K2 Greetings. They are an administrative company because they create companies for the own retail customers and because we charge K2 commisions and not their own retail customers directly.
User Secondary Company Rules
CPP/OMS users are assigned a primary company but can also have access to any number of secondary companies.
Generally the user’s secondary companies would all be dropshippers with the user’s primary being either a retailer or a supplier.
However it is also possible for the user’s primary company to be a non Custom Gateway administrative company, in which case the user’s secondaries could be a mix of retailers, suppliers and dropshippers.
There are some rules in place to help stop users having inappropriate secondary access to companies:
- Users cannot have secondary access to administrative companies
- When the user’s primary company is not administrative, the user cannot have secondary access to non-dropship companies that have a different administrative company than the user’s primary company
- When the user’s primary company is administrative, the user cannot have secondary access to non-dropship companies that don’t have the user’s primary company set as its administrative parent
- Users who have a supplier as a primary company can only have access to dropship companies that match their primary company
- Users who have a retailer as a primary company can only have access to dropship companies that match their primary company
The rules may be easier to understand in the form of a table:
|Rule||Primary Type||Secondary Type||Can User Have Access?|
|2||not Administrative||not Dropship||Only when the user’s primary and the secondary’s admin companies match|
|3||Administrative||not Dropship||Only when the secondary’s admin company is the user’s primary company|
|4||Supplier||Dropship||Only when the dropship’s supplier parent is the user’s primary company|
|5||Retailer||Dropship||Only when the dropship’s retailer parent is the user’s primary company|
The company hierarchy is also used to enforce when orders can be manually edited in OMS.
There are two scenarios, usually depending on how the order was created.
Order has both a primary and secondary company
|Secondary Company Type||Order Status||Can User Edit Order?|
||Only if the user has explicit1 access to the secondary company’s supplier|
|not Dropship||any||Yes, though this is technically invalid. The secondary company should be a dropship.|
1 This rules out staff members who have implicit access to all companies.
Order only has a primary company
Any user with access to the order’s primary company has full edit access.
The company structure is also important for determining how multi supplier orders are split.
For example, a retailer integration setup against a retailer company will only be allowed to use products that are supplied by suppliers with which the retailer has a dropship relationship.