Dev GuideAPI Reference
Dev GuideAPI ReferenceUser GuideGitHubNuGetDev CommunityOptimizely AcademySubmit a ticketLog In
Dev Guide

Customers (dev)

Describes the Customer Management system in Optimizely Commerce Connect.

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.

Diagram showing the Customer Management system and relationships between Business Foundation objects, including contacts and organizations
  • 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.
📘

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.

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.

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);
  }
}