---
title: Customers (dev)
slug: commerce-connect-15/docs/customers-dev
docTags: 
createdAt: 2026-07-30T20:34:44.000Z
---

This is a central component that lets you work with organizations and contacts. From Customer Management, you can also create purchase orders for a customer account.

The following image illustrates Customer Management and the relationship among the various objects, and different types of relationships between Business Foundation (BF) objects. See [Meta-class references](docId\:TtFOao5_nLGYbtJ4-Udx6).

![Diagram showing the Customer Management system and relationships between Business Foundation objects, including contacts and organizations](https://api.archbee.com/api/optimize/BrbvVORKJ5iIeSMZye5kI/ohSHFR_WjaSKDSYJbievC-20260723-164625.jpg "customeroverview.jpg")

- **Contact** – Individual with a set of personalized information (name, address, email, and so on). A contact can be a customer or a user with **Commerce Manager** permissions to manage one or more systems.
- **Organization** – Group or sub-group of contacts.

:::hint{type="info"}
**Note**
Commerce Admin user role management is managed from **Permissions for functions** in the Optimizely Content Management System (CMS) **Settings** view.
:::

Classes in this topic are available in the following namespaces:

- `Mediachase.BusinessFoundation.Data.Business`
- `Mediachase.Commerce.Customers`
- `Mediachase.Commerce.Security`

## Customer groups

Customer groups target multiple `Customer` and `Organization` objects for pricing and promotions. Both the `Customer` and the `Organization` expose their own `CustomerGroup` information, and the `Customer` has a derived property, called `EffectiveCustomerGroup`, that combines the two with the priority on the `Organization` value. See [Customer groups](docId\:bhHKdp5T8hUQsXwQ7DQj1).

`EffectiveCustomerGroup` is used in pricing and promotions instead of the regular `CustomerGroup`. The `EffectiveCustomerGroup` returns the `CustomerGroup` of the parent `Organization`, if the `CustomerContact` belongs to a parent `Organization` that belongs to a `CustomerGroup`. Otherwise, `EffectiveCustomerGroup` returns its own group.

## Child organizations

Use `EntityObject`, a core BF object, to access an organization's child organizations. The `EntityObject` is an important base class for `CustomerContact`, `Organization`, and any custom business objects you create. `EntityObject` has only a `PrimaryKeyId` property to retrieve the full organization object from the `CustomerContext` singleton.

```csharp
List<Organization> PartnerOrganizations = new List<Organization>();
foreach(object child in PartnerOrganization.GetChildren()) {
  EntityObject obj = child as EntityObject;
  Organization org = CustomerContext.Current.GetOrganizationById(obj.PrimaryKeyId.Value);

  if (org != null) {
    PartnerOrganizations.Add(org);
  }
}
```
