---
title: Object configuration
slug: commerce-connect-15/docs/object-configuration
createdAt: 2026-07-30T20:34:44.000Z
---

Business Foundation objects provide a lightweight object relational mapping (ORM) where you can add custom fields based on your business requirements. The [Customer](docId:4Kzj3SIgPjsxDFu3Dmoyq) subsystem uses business foundation objects for their storage mechanism.

Classes in this topic are in the following namespaces:

- `Mediachase.BusinessFoundation.Data`
- `Mediachase.BusinessFoundation.Data.Meta.Management`
- `Mediachase.BusinessFoundation.Data.Modules`

:::hint{type="info"}
**Note**
You should not modify the default business objects unless you have a full understanding of how it works.
:::

## Create objects

```csharp
DataContext.Current = new DataContext(ServiceLocator.Current.GetInstance<IConnectionStringHandler>().Commerce.ConnectionString);
ModuleManager.InitializeActiveModules();
using(var scope = DataContext.Current.MetaModel.BeginEdit(MetaClassManagerEditScope.SystemOwner, AccessLevel.System)) {
  var manager = DataContext.Current.MetaModel;
  var changeTrackingManifest = ChangeTrackingManager.CreateModuleManifest();
  var recentReferenceManifest = RecentReferenceManager.CreateModuleManifest();
  var budgetClass = manager.CreateMetaClass("Budget", "Budget", "Budgets", "cls_Budget", PrimaryKeyIdValueType.Integer);
  ModuleManager.Activate(budgetClass, changeTrackingManifest);
  using(var builder = new MetaFieldBuilder(budgetClass)) {
    builder.CreateDateTime("StartDate", "StartDate", true, false);
    builder.CreateDateTime("EndDate", "EndDate", true, false);
    builder.CreateCurrency("Amount", "Amount", true, 0, true);
    builder.CreateText("Currency", "Currency", true, 50, false);
    builder.CreateText("Status", "Status", true, 50, false);
    builder.CreateCurrency("SpentBudget", "SpentBudget", true, 0, true);
    builder.CreateText("PurchaserName", "PurchaserName", true, 50, false);
    builder.CreateCurrency("LockOrganizationAmount", "LockOrganizationAmount", true, 0, true);
    var contactReference = builder.CreateReference("Contact", "CreditCard_mf_Contact", true, "Contact", false);
    var orgReference = builder.CreateReference("Organization", "CreditCard_mf_Organization", true, "Organization", false);
    builder.SaveChanges();
  }

  budgetClass.AddPermissions();
  scope.SaveChanges();
}
```

## Edit objects

```csharp
DataContext.Current = new DataContext(ServiceLocator.Current.GetInstance<IConnectionStringHandler>().Commerce.ConnectionString);
ModuleManager.InitializeActiveModules();
using(var scope = DataContext.Current.MetaModel.BeginEdit(MetaClassManagerEditScope.SystemOwner, AccessLevel.System)) {
  var manager = DataContext.Current.MetaModel;
  var contactMetaClass = manager.MetaClasses[ContactEntity.ClassName];
  var changeTrackingManifest = ChangeTrackingManager.CreateModuleManifest();
  var recentReferenceManifest = RecentReferenceManager.CreateModuleManifest();
  using(var builder = new MetaFieldBuilder(contactMetaClass)) {
    builder.CreateText("UserRole", "{Customer:UserRole}", true, 50, false);
    builder.CreateText("UserLocation", "{Customer:UserLocation}", true, 50, false);
    builder.CreateInteger("Points", "{Customer:Points}", true, 0);
    builder.CreateInteger("NumberOfOrders", "{Customer:NumberOfOrders}", true, 0);
    builder.CreateInteger("NumberOfReviews", "{Customer:NumberOfReviews}", true, 0);
    builder.CreateText("Tier", "{Customer:Tier}", true, 100, false);
    builder.CreateText("ElevatedRole", "{Customer:ElevatedRole}", true, 100, false);
    builder.CreateHtml("Bookmarks", "{Customer:Bookmarks}", true);
    builder.SaveChanges();
  }
  contactMetaClass.DeleteMetaField("MiddleName");
  scope.SaveChanges();
}
```

## Delete objects

```csharp
DataContext.Current = new DataContext(ServiceLocator.Current.GetInstance<IConnectionStringHandler>().Commerce.ConnectionString);
    ModuleManager.InitializeActiveModules();
    using (var scope = DataContext.Current.MetaModel.BeginEdit(MetaClassManagerEditScope.SystemOwner, AccessLevel.System))
    {
        var manager = DataContext.Current.MetaModel;
        manager.DeleteMetaClass("CreditCard");
        scope.SaveChanges();
    }
```
