---
id: object/table/8052
type: object
title: Table 8052 "Customer Subscription Contract"
summary: Table 8052 "Customer Subscription Contract" in Subscription Billing (Microsoft.SubscriptionBilling). 62 fields, 35 public procedures, 50 events. Introduced in BC29, still in BC30, changed in BC30.
tier: official
language: en
tags:
  - table
  - subscription billing
versions:
  introduced: "29"
  last_changed: "30"
  deprecated: null
review:
  state: derived
  by: null
  at: null
  flags: []
generated:
  at: "2026-10-11T00:31:51.816Z"
  pipeline: 0.2.0
  prompts: {}
  input_hash: 58a4f142c90c438a77982fe4162a572f22b16fdaaa80f66e148db4c8078b7b8f
evidence:
  - kind: code
    url: https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Apps/W1/Subscription%20Billing/app/Customer%20Contracts/Tables/CustomerSubscriptionContract.Table.al
    title: src/Apps/W1/Subscription Billing/app/Customer Contracts/Tables/CustomerSubscriptionContract.Table.al (releases/29.x)
    date: null
    commit: ea08af5ef2d6a9b5c5af4a029288abbe2c883220
    t: null
    quote: null
links:
  learn:
    - https://learn.microsoft.com/dynamics365/business-central/SRB/posting-documents
    - https://learn.microsoft.com/dynamics365/business-central/SRB/working-with-contracts/contract-renewal
    - https://learn.microsoft.com/dynamics365/business-central/SRB/working-with-contracts/contracts-services-mgmt
    - https://learn.microsoft.com/dynamics365/business-central/SRB/working-with-contracts/customer-contracts
    - https://learn.microsoft.com/dynamics365/business-central/UBB/processing-usage-data/extend-contract
    - https://learn.microsoft.com/dynamics365/business-central/SRB/working-with-contracts/manual-contract-lines
  objects: []
  features: []
  topics:
    - topic/business-central/business-functionality/sales/subscription-billing
    - topic/business-central/business-functionality/sales/subscription-billing/bill-subscriptions-based-on-usage
    - topic/business-central/business-functionality/sales/subscription-billing/contracts
  localizations: []
  videos: []
  posts: []
  guidelines: []
  changes:
    - change/bcapps/12053
    - change/bcapps/10064
    - change/bcapps/9712
    - change/bcapps/8115
object_type: table
object_id: 8052
name: Customer Subscription Contract
namespace: Microsoft.SubscriptionBilling
app: Subscription Billing
extends: null
first_version: "29"
last_version: "30"
present_in:
  - "29"
  - "30"
changed_in:
  - "30"
source_major: "29"
obsolete: null
countries: []
ms_search_form_ids: []
counts:
  fields: 62
  procedures: 135
  events: 50
  subscribers: 0
relations:
  out: 26
  referenced_by: 19
  pages: 3
  extended_by: 0
  event_subscribers: 0
  calls: 0
  called_by: 0
  implements: 0
---

# Table 8052 "Customer Subscription Contract"

> Table 8052 "Customer Subscription Contract" in Subscription Billing (Microsoft.SubscriptionBilling). 62 fields, 35 public procedures, 50 events. Introduced in BC29, still in BC30, changed in BC30.

Subscription Billing · Microsoft.SubscriptionBilling · BC29-30 · [source at ea08af5e](https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Apps/W1/Subscription%20Billing/app/Customer%20Contracts/Tables/CustomerSubscriptionContract.Table.al) · facts from BC29

Learn documents this table through its pages: [Page 8053 "Customer Contracts"](../page/8053.md) (5 Learn pages), [Page 8052 "Customer Contract"](../page/8052.md) (4).

## Properties

| Property | Value |
|---|---|
| Caption | Customer Subscription Contract |
| DataClassification | CustomerContent |
| LookupPageId | Customer Contracts |
| DrillDownPageId | Customer Contracts |

## Fields

Explanation: the field's ToolTip in the code; without one, the ToolTip of a page control bound to the field (marked via the page); without that, its Caption (marked caption) when that differs from the name.

| No. | Name | Type | Explanation | Notes |
|---|---|---|---|---|
| 2 | Sell-to Customer No. | Code[20] | Specifies the number of the customer who will receive the contract components and be billed by default. <small>via [Page 8052 "Customer Contract"](../page/8052.md)</small> | TableRelation [Table 18 "Customer"](../table/18.md) |
| 3 | No. | Code[20] | Specifies the number of the involved entry or record, according to the specified number series. <small>via [Page 8052 "Customer Contract"](../page/8052.md)</small> |  |
| 4 | Bill-to Customer No. | Code[20] | Specifies the number of the customer that you send or sent the invoice or credit memo to. <small>via [Page 8053 "Customer Contracts"](../page/8053.md)</small> | TableRelation [Table 18 "Customer"](../table/18.md); NotBlank; DataClassification EndUserIdentifiableInformation |
| 5 | Bill-to Name | Text[100] | Specifies the customer to whom you will send the contract invoice, when different from the contractor. <small>via [Page 8052 "Customer Contract"](../page/8052.md)</small> | TableRelation Customer.Name; DataClassification EndUserIdentifiableInformation |
| 6 | Bill-to Name 2 | Text[50] | — | DataClassification EndUserIdentifiableInformation |
| 7 | Bill-to Address | Text[100] | Specifies the address of the customer that you will send the invoice to. <small>via [Page 8052 "Customer Contract"](../page/8052.md)</small> | DataClassification EndUserIdentifiableInformation |
| 8 | Bill-to Address 2 | Text[50] | Specifies additional address information. <small>via [Page 8052 "Customer Contract"](../page/8052.md)</small> | DataClassification EndUserIdentifiableInformation |
| 9 | Bill-to City | Text[30] | Specifies the city of the customer on the contract invoice. <small>via [Page 8052 "Customer Contract"](../page/8052.md)</small> | TableRelation [Table 225 "Post Code"](../table/225.md) (if ("Bill-to Country/Region Code" = const('')) "Post Code".City else if ("Bill-to Country/Region Code" = filter(<> '')) "Post Code".City where("Country/Region Code" = field("Bill-to Country/Region Code"))); DataClassification EndUserIdentifiableInformation |
| 10 | Bill-to Contact | Text[100] | Specifies the name of the person you should contact at the customer who you are sending the invoice to. <small>via [Page 8052 "Customer Contract"](../page/8052.md)</small> | DataClassification EndUserIdentifiableInformation |
| 11 | Your Reference | Text[35] | Specifies the customer's reference. The content will be printed on contract invoice. <small>via [Page 8052 "Customer Contract"](../page/8052.md)</small> |  |
| 12 | Ship-to Code | Code[10] | Specifies the code for another shipment address than the customer's own address, which is entered by default. <small>via [Page 8052 "Customer Contract"](../page/8052.md)</small> | TableRelation [Table 222 "Ship-to Address"](../table/222.md) ("Ship-to Address".Code where("Customer No." = field("Sell-to Customer No."))) |
| 13 | Ship-to Name | Text[100] | Specifies the name of the one who receives or uses the Subscription Contract Lines. <small>via [Page 8052 "Customer Contract"](../page/8052.md)</small> | DataClassification EndUserIdentifiableInformation |
| 14 | Ship-to Name 2 | Text[50] | — | DataClassification EndUserIdentifiableInformation |
| 15 | Ship-to Address | Text[100] | Specifies the address of the one who receives or uses the Subscription Contract Lines. <small>via [Page 8052 "Customer Contract"](../page/8052.md)</small> | DataClassification EndUserIdentifiableInformation |
| 16 | Ship-to Address 2 | Text[50] | Specifies additional address information. <small>via [Page 8052 "Customer Contract"](../page/8052.md)</small> | DataClassification EndUserIdentifiableInformation |
| 17 | Ship-to City | Text[30] | Specifies the city of the customer on the contract. <small>via [Page 8052 "Customer Contract"](../page/8052.md)</small> | TableRelation [Table 225 "Post Code"](../table/225.md) (if ("Ship-to Country/Region Code" = const('')) "Post Code".City else if ("Ship-to Country/Region Code" = filter(<> '')) "Post Code".City where("Country/Region Code" = field("Ship-to Country/Region Code"))); DataClassification EndUserIdentifiableInformation |
| 18 | Ship-to Contact | Text[100] | Specifies the name of the contact person at the address where Subscription Contract Lines are received or used. <small>via [Page 8052 "Customer Contract"](../page/8052.md)</small> | DataClassification EndUserIdentifiableInformation |
| 23 | Payment Terms Code | Code[10] | Specifies a formula that calculates the payment due date, payment discount date, and payment discount amount. <small>via [Page 8052 "Customer Contract"](../page/8052.md)</small> | TableRelation [Table 3 "Payment Terms"](../table/3.md) (Payment Terms) |
| 29 | Shortcut Dimension 1 Code | Code[20] | Specifies the code for Shortcut Dimension 1, which is one of two global dimension codes that you set up in the General Ledger Setup window. <small>via [Page 8052 "Customer Contract"](../page/8052.md)</small> | TableRelation [Table 349 "Dimension Value"](../table/349.md) ("Dimension Value".Code where("Global Dimension No." = const(1), Blocked = const(false))) |
| 30 | Shortcut Dimension 2 Code | Code[20] | Specifies the code for Shortcut Dimension 2, which is one of two global dimension codes that you set up in the General Ledger Setup window. <small>via [Page 8052 "Customer Contract"](../page/8052.md)</small> | TableRelation [Table 349 "Dimension Value"](../table/349.md) ("Dimension Value".Code where("Global Dimension No." = const(2), Blocked = const(false))) |
| 32 | Currency Code | Code[10] | Specifies the currency of amounts on the contract invoice. <small>via [Page 8052 "Customer Contract"](../page/8052.md)</small> | TableRelation [Table 4 "Currency"](../table/4.md) |
| 33 | DefaultExcludeFromPriceUpdate | Boolean | Specifies whether new contract lines will be set to be allowed in price updates by default, when they are assigned to the contract. <small>via [Page 8052 "Customer Contract"](../page/8052.md)</small> |  |
| 34 | Customer Price Group | Code[10] | — | TableRelation [Table 6 "Customer Price Group"](../table/6.md) (Customer Price Group) |
| 43 | Salesperson Code | Code[20] | Specifies the name of the salesperson who is assigned to the customer. <small>via [Page 8052 "Customer Contract"](../page/8052.md)</small> | TableRelation [Table 13 "Salesperson/Purchaser"](../table/13.md) (Salesperson/Purchaser) |
| 79 | Sell-to Customer Name | Text[100] | Specifies the name of the customer who will receive the contract components and be billed by default. <small>via [Page 8052 "Customer Contract"](../page/8052.md)</small> | TableRelation Customer.Name; DataClassification EndUserIdentifiableInformation |
| 80 | Sell-to Customer Name 2 | Text[50] | — | DataClassification EndUserIdentifiableInformation |
| 81 | Sell-to Address | Text[100] | Specifies the address where the customer is located. <small>via [Page 8052 "Customer Contract"](../page/8052.md)</small> | DataClassification EndUserIdentifiableInformation |
| 82 | Sell-to Address 2 | Text[50] | Specifies additional address information. <small>via [Page 8052 "Customer Contract"](../page/8052.md)</small> | DataClassification EndUserIdentifiableInformation |
| 83 | Sell-to City | Text[30] | Specifies the city of the customer on the Customer Subscription Contract. <small>via [Page 8052 "Customer Contract"](../page/8052.md)</small> | TableRelation [Table 225 "Post Code"](../table/225.md) (if ("Sell-to Country/Region Code" = const('')) "Post Code".City else if ("Sell-to Country/Region Code" = filter(<> '')) "Post Code".City where("Country/Region Code" = field("Sell-to Country/Region Code"))); DataClassification EndUserIdentifiableInformation |
| 84 | Sell-to Contact | Text[100] | Specifies the name of the person to contact at the customer. <small>via [Page 8052 "Customer Contract"](../page/8052.md)</small> | DataClassification EndUserIdentifiableInformation |
| 85 | Bill-to Post Code | Code[20] | Specifies the postal code. <small>via [Page 8052 "Customer Contract"](../page/8052.md)</small> | TableRelation [Table 225 "Post Code"](../table/225.md) (Post Code); DataClassification EndUserIdentifiableInformation |
| 86 | Bill-to County | Text[30] | Specifies the state, province or county of the address. <small>via [Page 8052 "Customer Contract"](../page/8052.md)</small> | DataClassification EndUserIdentifiableInformation |
| 87 | Bill-to Country/Region Code | Code[10] | Specifies the country or region of the address. <small>via [Page 8052 "Customer Contract"](../page/8052.md)</small> | TableRelation [Table 9 "Country/Region"](../table/9.md) (Country/Region); DataClassification EndUserIdentifiableInformation |
| 88 | Sell-to Post Code | Code[20] | Specifies the postal code. <small>via [Page 8052 "Customer Contract"](../page/8052.md)</small> | TableRelation [Table 225 "Post Code"](../table/225.md) (if ("Sell-to Country/Region Code" = const('')) "Post Code" else if ("Sell-to Country/Region Code" = filter(<> '')) "Post Code" where("Country/Region Code" = field("Sell-to Country/Region Code"))); DataClassification EndUserIdentifiableInformation |
| 89 | Sell-to County | Text[30] | Specifies the state, province or county of the address. <small>via [Page 8052 "Customer Contract"](../page/8052.md)</small> | DataClassification EndUserIdentifiableInformation |
| 90 | Sell-to Country/Region Code | Code[10] | Specifies the country or region of the address. <small>via [Page 8052 "Customer Contract"](../page/8052.md)</small> | TableRelation [Table 9 "Country/Region"](../table/9.md) (Country/Region); DataClassification EndUserIdentifiableInformation |
| 91 | Ship-to Post Code | Code[20] | Specifies the postal code. <small>via [Page 8052 "Customer Contract"](../page/8052.md)</small> | TableRelation [Table 225 "Post Code"](../table/225.md) (if ("Ship-to Country/Region Code" = const('')) "Post Code" else if ("Ship-to Country/Region Code" = filter(<> '')) "Post Code" where("Country/Region Code" = field("Ship-to Country/Region Code"))); DataClassification EndUserIdentifiableInformation |
| 92 | Ship-to County | Text[30] | Specifies the state, province or county of the address. <small>via [Page 8052 "Customer Contract"](../page/8052.md)</small> | DataClassification EndUserIdentifiableInformation |
| 93 | Ship-to Country/Region Code | Code[10] | Specifies the customer's country/region. <small>via [Page 8052 "Customer Contract"](../page/8052.md)</small> | TableRelation [Table 9 "Country/Region"](../table/9.md) (Country/Region); DataClassification EndUserIdentifiableInformation |
| 104 | Payment Method Code | Code[10] | Specifies how to make payment, such as with bank transfer, cash, or check. <small>via [Page 8052 "Customer Contract"](../page/8052.md)</small> | TableRelation [Table 289 "Payment Method"](../table/289.md) (Payment Method) |
| 107 | No. Series | Code[20] | — | TableRelation No. Series; not editable |
| 171 | Sell-to Phone No. | Text[30] | Specifies the telephone number of the contact person that the sales document will be sent to. <small>via [Page 8052 "Customer Contract"](../page/8052.md)</small> |  |
| 172 | Sell-to E-Mail | Text[80] | Specifies the email address of the contact person that the sales document will be sent to. <small>via [Page 8052 "Customer Contract"](../page/8052.md)</small> |  |
| 200 | Description | Blob | — |  |
| 480 | Dimension Set ID | Integer | — | TableRelation [Table 480 "Dimension Set Entry"](../table/480.md) (Dimension Set Entry); not editable |
| 5052 | Sell-to Contact No. | Code[20] | Specifies the number of the contact that receives the contract components. <small>via [Page 8052 "Customer Contract"](../page/8052.md)</small> | TableRelation [Table 5050 "Contact"](../table/5050.md) |
| 5053 | Bill-to Contact No. | Code[20] | Specifies the number of the contact the invoice will be sent to. <small>via [Page 8052 "Customer Contract"](../page/8052.md)</small> | TableRelation [Table 5050 "Contact"](../table/5050.md) |
| 8050 | Create Contract Deferrals | Boolean | Specifies whether to generate contract deferrals for the contract in general. The field affects only Subscription lines assigned to the contract for which the field "Create Contract Deferrals" is set to Contract-dependent. <small>via [Page 8052 "Customer Contract"](../page/8052.md)</small> |  |
| 8051 | Without Contract Deferrals | Boolean | Specifies whether deferrals should be generated for the contract. If the field is activated, no deferrals are generated and the invoices are posted directly to profit or loss. <small>via [Page 8052 "Customer Contract"](../page/8052.md)</small> | obsolete Pending 27.0; #if not CLEANSCHEMA30 |
| 8052 | Detail Overview | Enum "Contract Detail Overview" | Specifies whether the billing details for this contract are automatically output with invoices and credit memos. <small>via [Page 8052 "Customer Contract"](../page/8052.md)</small> | enum [Enum 8060 "Contract Detail Overview"](../enum/8060.md) |
| 8053 | Billing Rhythm Filter | DateFormula | — | FlowFilter |
| 8054 | Dimension from Job No. | Code[20] | Specifies the Project number from which the dimensions for the contract are transferred. <small>via [Page 8052 "Customer Contract"](../page/8052.md)</small> | TableRelation Job."No." where("Bill-to Customer No." = field("Bill-to Customer No.")) |
| 8055 | Billing Base Date | Date | Specifies the billing base date for the contract. If a date is specified here, the billing of all Subscription Lines will be harmonized based on this date. <small>via [Page 8052 "Customer Contract"](../page/8052.md)</small> |  |
| 8056 | Default Billing Rhythm | DateFormula | Specifies the billing rhythm of the contract. If a date formula is specified here, the billing of all Subscription Lines will be harmonized based on this billing rhythm. <small>via [Page 8052 "Customer Contract"](../page/8052.md)</small> |  |
| 8057 | Next Billing From | Date | Specifies the start date of the next billing period. The next billing of all Subscription Lines will be harmonized to this date. <small>via [Page 8052 "Customer Contract"](../page/8052.md)</small> | not editable |
| 8058 | Next Billing To | Date | Specifies the end date of the next billing period. The next billing of all Subscription Line will be harmonized to this date. <small>via [Page 8052 "Customer Contract"](../page/8052.md)</small> | not editable |
| 8059 | Contractor Name in coll. Inv. | Boolean | Specifies that the name of the contractor (Sell-to Customer) is transferred to collective invoices. <small>via [Page 8052 "Customer Contract"](../page/8052.md)</small> |  |
| 8060 | Recipient Name in coll. Inv. | Boolean | Specifies that the recipient name (Ship-to Address) is transferred to collective invoices. <small>via [Page 8052 "Customer Contract"](../page/8052.md)</small> |  |
| 9000 | Assigned User ID | Code[50] | Specifies the ID of the user who is responsible for the document. <small>via [Page 8052 "Customer Contract"](../page/8052.md)</small> | TableRelation [Table 91 "User Setup"](../table/91.md) ("User Setup"."User ID"); DataClassification EndUserIdentifiableInformation |
| 9500 | Active | Boolean | Specifies whether the contract is active. <small>via [Page 8052 "Customer Contract"](../page/8052.md)</small> |  |
| 9501 | Contract Type | Code[10] | Specifies the classification of the contract. <small>via [Page 8052 "Customer Contract"](../page/8052.md)</small> | TableRelation [Table 8053 "Subscription Contract Type"](../table/8053.md) (Subscription Contract Type) |
| 9502 | Description Preview | Text[100] | — |  |

## Keys

- PK: No. (clustered)

## Events published

- `OnAfterIsShipToAddressEqualToSellToAddress(SellToCustomerSubscriptionContract: Record "Customer Subscription Contract"; ShipToCustomerSubscriptionContract: Record "Customer Subscription Contract"; var Result: Boolean)` (integration)
- `OnAfterIsShipToAddressEqualToSubscriptionHeaderShipToAddress(CustomerSubscriptionContract: Record "Customer Subscription Contract"; SubscriptionHeader: Record "Subscription Header"; var Result: Boolean)` (integration)
- `OnAfterGetSubscriptionContractSetup(CustomerSubscriptionContract: Record "Customer Subscription Contract"; var SubscriptionContractSetup: Record "Subscription Contract Setup"; CalledByFieldNo: Integer)` (integration)
- `OnAfterValidateShortcutDimCode(var CustomerSubscriptionContract: Record "Customer Subscription Contract"; xCustomerSubscriptionContract: Record "Customer Subscription Contract"; FieldNumber: Integer; var ShortcutDimCode: Code[20])` (integration)
- `OnAfterSetFieldsBilltoCustomer(var CustomerSubscriptionContract: Record "Customer Subscription Contract"; Customer: Record Customer)` (integration)
- `OnAfterCopySellToAddressToShipToAddress(var CustomerSubscriptionContract: Record "Customer Subscription Contract")` (integration)
- `OnAfterCopySellToAddressToBillToAddress(var CustomerSubscriptionContract: Record "Customer Subscription Contract")` (integration)
- `OnAfterCopyShipToCustomerAddressFieldsFromCustomer(var CustomerSubscriptionContract: Record "Customer Subscription Contract"; SellToCustomer: Record Customer)` (integration)
- `OnAfterCopyShipToCustomerAddressFieldsFromShipToAddr(var CustomerSubscriptionContract: Record "Customer Subscription Contract"; ShipToAddress: Record "Ship-to Address")` (integration)
- `OnAfterCopySellToCustomerAddressFieldsFromCustomer(var CustomerSubscriptionContract: Record "Customer Subscription Contract"; SellToCustomer: Record Customer; CurrentFieldNo: Integer)` (integration)
- `OnBeforeAssistEdit(var CustomerSubscriptionContract: Record "Customer Subscription Contract"; OldCustomerSubscriptionContract: Record "Customer Subscription Contract"; var IsHandled: Boolean)` (integration)
- `OnBeforeConfirmBillToContactNoChange(var CustomerSubscriptionContract: Record "Customer Subscription Contract"; xCustomerSubscriptionContract: Record "Customer Subscription Contract"; CurrentFieldNo: Integer; var Confirmed: Boolean; var IsHandled: Boolean)` (integration)
- `OnBeforeConfirmSellToContactNoChange(var CustomerSubscriptionContract: Record "Customer Subscription Contract"; xCustomerSubscriptionContract: Record "Customer Subscription Contract"; CurrentFieldNo: Integer; var Confirmed: Boolean; var IsHandled: Boolean)` (integration)
- `OnBeforeInitInsert(var CustomerSubscriptionContract: Record "Customer Subscription Contract"; xCustomerSubscriptionContract: Record "Customer Subscription Contract"; var IsHandled: Boolean)` (integration)
- `OnBeforeCopyShipToCustomerAddressFieldsFromCustomer(var CustomerSubscriptionContract: Record "Customer Subscription Contract"; Customer: Record Customer; var IsHandled: Boolean)` (integration)
- `OnBeforeCopyShipToCustomerAddressFieldsFromShipToAddr(var CustomerSubscriptionContract: Record "Customer Subscription Contract"; ShipToAddress: Record "Ship-to Address"; var IsHandled: Boolean)` (integration)
- `OnBeforeCreateDim(var CustomerSubscriptionContract: Record "Customer Subscription Contract"; var IsHandled: Boolean)` (integration)
- `OnBeforeLookupBillToPostCode(var CustomerSubscriptionContract: Record "Customer Subscription Contract"; var PostCodeRec: Record "Post Code")` (integration)
- `OnBeforeLookupSellToPostCode(var CustomerSubscriptionContract: Record "Customer Subscription Contract"; var PostCodeRec: Record "Post Code")` (integration)
- `OnBeforeLookupShipToPostCode(var CustomerSubscriptionContract: Record "Customer Subscription Contract"; var PostCodeRec: Record "Post Code")` (integration)
- `OnBeforeValidateBillToPostCode(var CustomerSubscriptionContract: Record "Customer Subscription Contract"; var PostCodeRec: Record "Post Code")` (integration)
- `OnBeforeValidateSellToPostCode(var CustomerSubscriptionContract: Record "Customer Subscription Contract"; var PostCodeRec: Record "Post Code")` (integration)
- `OnBeforeValidateShipToPostCode(var CustomerSubscriptionContract: Record "Customer Subscription Contract"; var PostCodeRec: Record "Post Code")` (integration)
- `OnBeforeUpdateSellToCust(var CustomerSubscriptionContract: Record "Customer Subscription Contract"; var Contact: Record Contact; var Customer: Record Customer; ContactNo: Code[20])` (integration)
- `OnCreateDimOnBeforeModify(var CustomerSubscriptionContract: Record "Customer Subscription Contract"; xCustomerSubscriptionContract: Record "Customer Subscription Contract"; CurrentFieldNo: Integer)` (integration)
- `OnInitFromContactOnAfterInitNoSeries(var CustomerSubscriptionContract: Record "Customer Subscription Contract"; var xCustomerSubscriptionContract: Record "Customer Subscription Contract")` (integration)
- `OnValidateSellToCustomerNoAfterInit(var CustomerSubscriptionContract: Record "Customer Subscription Contract"; var xCustomerSubscriptionContract: Record "Customer Subscription Contract")` (integration)
- `OnAfterUpdateBillToCont(var CustomerSubscriptionContract: Record "Customer Subscription Contract"; Customer: Record Customer; Contact: Record Contact)` (integration)
- `OnAfterUpdateBillToCust(var CustomerSubscriptionContract: Record "Customer Subscription Contract"; Contact: Record Contact)` (integration)
- `OnAfterUpdateSellToCont(var CustomerSubscriptionContract: Record "Customer Subscription Contract"; Customer: Record Customer; Contact: Record Contact)` (integration)
- `OnAfterUpdateSellToCust(var CustomerSubscriptionContract: Record "Customer Subscription Contract"; Contact: Record Contact)` (integration)
- `OnBeforeValidateBillToCustomerName(var CustomerSubscriptionContract: Record "Customer Subscription Contract"; var Customer: Record Customer)` (integration)
- `OnBeforeValidateSellToCustomerName(var CustomerSubscriptionContract: Record "Customer Subscription Contract"; var Customer: Record Customer)` (integration)
- `OnBeforeValidateShortcutDimCode(var CustomerSubscriptionContract: Record "Customer Subscription Contract"; xCustomerSubscriptionContract: Record "Customer Subscription Contract"; FieldNumber: Integer; var ShortcutDimCode: Code[20])` (integration)
- `OnUpdateBillToCustOnBeforeContactIsNotRelatedToAnyCustomerErr(var CustomerSubscriptionContract: Record "Customer Subscription Contract"; Contact: Record Contact; var ContactBusinessRelation: Record "Contact Business Relation"; var IsHandled: Boolean)` (integration)
- `OnUpdateBillToCustOnBeforeFindContactBusinessRelation(Contact: Record Contact; var ContBusinessRelation: Record "Contact Business Relation"; var ContactBusinessRelationFound: Boolean; var IsHandled: Boolean)` (integration)
- `OnUpdateSellToCustOnBeforeContactIsNotRelatedToAnyCustomerErr(var CustomerSubscriptionContract: Record "Customer Subscription Contract"; Contact: Record Contact; var ContactBusinessRelation: Record "Contact Business Relation"; var IsHandled: Boolean)` (integration)
- `OnUpdateSellToCustOnBeforeFindContactBusinessRelation(Cont: Record Contact; var ContBusinessRelation: Record "Contact Business Relation"; var ContactBusinessRelationFound: Boolean; var IsHandled: Boolean)` (integration)
- `OnValidateBillToCustomerNoOnAfterConfirmed(var CustomerSubscriptionContract: Record "Customer Subscription Contract")` (integration)
- `OnBeforeUpdateBillToCust(var CustomerSubscriptionContract: Record "Customer Subscription Contract"; ContactNo: Code[20]; var IsHandled: Boolean)` (integration)
- `OnBeforeCheckContactRelatedToCustomerCompany(CustomerSubscriptionContract: Record "Customer Subscription Contract"; CurrFieldNo: Integer; var IsHandled: Boolean)` (integration)
- `OnBeforeCreateCustomerContractLineFromSubscriptionLine(var SubscriptionLine: Record "Subscription Line"; ContractNo: Code[20]; var CustSubContractLine: Record "Cust. Sub. Contract Line")` (integration)
- `OnAfterCreateCustomerContractLineFromSubscriptionLine(SubscriptionLine: Record "Subscription Line"; var CustSubContractLine: Record "Cust. Sub. Contract Line")` (integration)
- `OnBeforeModifySubscriptionLineOnCreateCustomerContractLineFromSubscriptionLine(var SubscriptionLine: Record "Subscription Line"; CustSubContractLine: Record "Cust. Sub. Contract Line")` (integration)
- `OnAfterCreateDimDimSource(CustomerSubscriptionContract: Record "Customer Subscription Contract"; CurrFieldNo: Integer; var DefaultDimSource: List of [Dictionary of [Integer, Code[20]]])` (integration)
- `OnAfterUpdateHarmonizedBillingFields(var CustomerSubscriptionContract: Record "Customer Subscription Contract")` (integration)
- `OnBeforeUpdateAllLineDim(var CustomerContract: Record "Customer Subscription Contract"; NewParentDimSetID: Integer; OldParentDimSetID: Integer; var IsHandled: Boolean; xCustomerContract: Record "Customer Subscription Contract")` (integration)
- `OnBeforeConfirmUpdateAllLineDim(var CustomerContract: Record "Customer Subscription Contract"; xCustomerContract: Record "Customer Subscription Contract"; var Confirmed: Boolean; var IsHandled: Boolean)` (integration)
- `OnBeforeCreateCustomerContractLineFromTempSubscriptionLine(var TempSubscriptionLine: Record "Subscription Line" temporary; CustomerSubscriptionContract: Record "Customer Subscription Contract"; var IsHandled: Boolean)` (integration)
- `OnBeforeUpdateServicesDates(CustomerSubscriptionContract: Record "Customer Subscription Contract"; var CustSubContractLine: Record "Cust. Sub. Contract Line")` (integration)

## Procedures

- `IsContractTypeSetAsHarmonizedBilling(): Boolean` (internal)
- `AssistEdit(OldCustomerContract: Record "Customer Subscription Contract"): Boolean` (internal)
- `CustomerContractLinesExists(): Boolean` (internal)
- `NotReleasedCustomerContractDeferralsExists(): Boolean` (internal)
- `SetHideValidationDialog(NewHideValidationDialog: Boolean)`
- `ValidateShortcutDimCode(FieldNumber: Integer; var ShortcutDimCode: Code[20])`
- `ShowDocDim()` (internal)
- `SetSellToCustomerFromFilter()` (internal)
- `CopySellToCustomerFilter()` (internal)
- `ShipToAddressEqualsSellToAddress(): Boolean` (internal)
- `IsShipToAddressEqualToServiceObjectShipToAddress(var ServiceObject: Record "Subscription Header"): Boolean` (internal)
- `CopySellToAddressToShipToAddress()` (internal)
- `CopySellToAddressToBillToAddress()` (internal)
- `SetDescription(NewDescription: Text)` (internal)
- `GetDescription(): Text` (internal)
- `SelltoCustomerNoOnAfterValidate(var CustomerContract: Record "Customer Subscription Contract"; var xCustomerContract: Record "Customer Subscription Contract")` (internal)
- `RecallModifyAddressNotification(NotificationID: Guid)` (internal)
- `GetModifyCustomerAddressNotificationId(): Guid` (internal)
- `GetModifyBillToCustomerAddressNotificationId(): Guid` (internal)
- `GetNotificationIdDiscountIsNotTransferredFromSalesLine(): Guid` (internal)
- `DontNotifyCurrentUserAgain(NotificationID: Guid)` (internal)
- `CheckContactRelatedToCustomerCompany(ContactNo: Code[20]; CustomerNo: Code[20]; CurrentFieldNo: Integer)` (internal)
- `LookupSellToCustomerName(): Boolean` (internal)
- `CreateCustomerContractLinesFromServiceCommitments(var TempServiceCommitment: Record "Subscription Line" temporary)`: Creates customer subscription contract line from subscription line which are not already assigned to a customer subscription contract line.
- `CreateCustomerContractLineFromServiceCommitment(TempServiceCommitment: Record "Subscription Line" temporary; ContractNo: Code[20])`
- `CreateCustomerContractLineFromServiceCommitment(var ServiceCommitment: Record "Subscription Line"; ContractNo: Code[20]; var CustomerContractLine: Record "Cust. Sub. Contract Line")`
- `UpdateHarmonizedBillingFields(ServiceCommitment: Record "Subscription Line")` (internal)
- `ResetHarmonizedBillingFields()` (internal)
- `UpdateServicesDates()` (internal)
- `UpdateAndRecalculateServiceCommitmentCurrencyData()` (internal)
- `ResetCustomerServiceCommitmentCurrencyFromLCY()` (internal)
- `CreateBillingProposal()` (internal)
- `UpdateDimensionsInDeferrals()` (internal)
- `RecalculateHarmonizedBillingFieldsBasedOnNextBillingDate(DeletedCustContractLineNo: Integer)` (internal)
- `FindEarliestServiceCommitment(var ServiceCommitment: Record "Subscription Line"; DeletedCustContractLineNo: Integer): Boolean` (internal)

Plus 50 local procedures.

## Triggers

OnInsert, OnRename, OnDelete

## Relations

- drill-down page [Page 8053 "Customer Contracts"](../page/8053.md)
- lookup page [Page 8053 "Customer Contracts"](../page/8053.md)
- Salesperson Code: TableRelation [Table 13 "Salesperson/Purchaser"](../table/13.md)
- Bill-to Customer No.: TableRelation [Table 18 "Customer"](../table/18.md)
- Sell-to Customer No.: TableRelation [Table 18 "Customer"](../table/18.md)
- Ship-to Code: TableRelation [Table 222 "Ship-to Address"](../table/222.md)
- Bill-to City: TableRelation [Table 225 "Post Code"](../table/225.md) (conditional)
- Bill-to Post Code: TableRelation [Table 225 "Post Code"](../table/225.md)
- Sell-to City: TableRelation [Table 225 "Post Code"](../table/225.md) (conditional)
- Sell-to Post Code: TableRelation [Table 225 "Post Code"](../table/225.md) (conditional)
- Ship-to City: TableRelation [Table 225 "Post Code"](../table/225.md) (conditional)
- Ship-to Post Code: TableRelation [Table 225 "Post Code"](../table/225.md) (conditional)
- Payment Method Code: TableRelation [Table 289 "Payment Method"](../table/289.md)
- Payment Terms Code: TableRelation [Table 3 "Payment Terms"](../table/3.md)
- Shortcut Dimension 1 Code: TableRelation [Table 349 "Dimension Value"](../table/349.md)
- Shortcut Dimension 2 Code: TableRelation [Table 349 "Dimension Value"](../table/349.md)
- Currency Code: TableRelation [Table 4 "Currency"](../table/4.md)
- Dimension Set ID: TableRelation [Table 480 "Dimension Set Entry"](../table/480.md)
- Bill-to Contact No.: TableRelation [Table 5050 "Contact"](../table/5050.md)
- Sell-to Contact No.: TableRelation [Table 5050 "Contact"](../table/5050.md)
- Customer Price Group: TableRelation [Table 6 "Customer Price Group"](../table/6.md)
- Contract Type: TableRelation [Table 8053 "Subscription Contract Type"](../table/8053.md)
- Bill-to Country/Region Code: TableRelation [Table 9 "Country/Region"](../table/9.md)
- Sell-to Country/Region Code: TableRelation [Table 9 "Country/Region"](../table/9.md)
- Ship-to Country/Region Code: TableRelation [Table 9 "Country/Region"](../table/9.md)
- Assigned User ID: TableRelation [Table 91 "User Setup"](../table/91.md)

## Referenced by

19 fields in 18 objects relate to this table (TableRelation or CalcFormula).

- [Table 8001 "Sub. Contract Renewal Line"](../table/8001.md): Linked to Sub. Contract No., Subscription Contract No.
- [Table 8002 "Planned Subscription Line"](../table/8002.md): Subscription Contract No.
- [Table 8006 "Usage Data Billing"](../table/8006.md): Subscription Contract No.
- [Table 8007 "Overdue Subscription Line"](../table/8007.md): Subscription Contract No.
- [Table 8009 "Imported Subscription Line"](../table/8009.md): Subscription Contract No.
- [Table 8019 "Sub. Contr. Analysis Entry"](../table/8019.md): Subscription Contract No.
- [Table 8022 "Contract Billing Err. Log"](../table/8022.md): Subscription Contract No.
- [Table 8059 "Subscription Line"](../table/8059.md): Subscription Contract No.
- [Table 8061 "Billing Line"](../table/8061.md): Subscription Contract No.
- [Table 8062 "Cust. Sub. Contract Line"](../table/8062.md): Subscription Contract No.
- [Table 8064 "Billing Line Archive"](../table/8064.md): Subscription Contract No.
- [Table 8066 "Cust. Sub. Contract Deferral"](../table/8066.md): Subscription Contract No.
- [Table 8073 "Subscription Line Archive"](../table/8073.md): Subscription Contract No.
- [Table extension 8000 "Contracts Contact"](../tableextension/8000.md): Cust. Subscription Contracts
- [Table extension 8001 "Contracts Customer"](../tableextension/8001.md): Cust. Subscription Contracts
- [Table extension 8056 "Sales Invoice Line"](../tableextension/8056.md): Subscription Contract No.
- [Table extension 8058 "Sales Cr. Memo Line"](../tableextension/8058.md): Subscription Contract No.
- [Table extension 8067 "G/L Entry"](../tableextension/8067.md): Subscription Contract No.

## Pages and codeunits on this table

- [Page 8024 "Customer Contracts API"](../page/8024.md) (source table)
- [Page 8052 "Customer Contract"](../page/8052.md) (source table)
- [Page 8053 "Customer Contracts"](../page/8053.md) (source table)

## Recent changes

- 2026-09-30 [#12053 Remove-Sustainability-CLEAN27-tags-for-Wave2-2026](../../changes/bcapps/12053.md) (main, BC30, obsoletion)
- 2026-09-22 [#10064 Add support for “External Document No.” in Subscription Contracts Fixes #8818](../../changes/bcapps/10064.md) (main, BC30, feature)
- 2026-07-27 [#9712 [master] - Changing the contact of a Customer Subscription Contract doesn't update the email of the contract.](../../changes/bcapps/9712.md) (main, BC30, fix)
- 2026-07-14 [#8115 Subscription Billing: respect Default Dimension Priorities on Subscription Lines](../../changes/bcapps/8115.md) (main, BC30, fix)

## Across versions

- Present in: BC29-30
- Changed (declaration) in: BC30

## Deprecations

- field Without Contract Deferrals: Pending 27.0 (#if not CLEANSCHEMA30), "Removed in favor of Create Contract Deferrals."

Source: AL metadata extracted from the code (names, ids, signatures, properties); no code bodies (D10).

## Ask your agent

Procedure bodies are not stored here (D10). For a procedure body or the calls of one procedure, ask bc-code-atlas (external, by Stefan Maron, MIT; default corpus w1-28), which the bc-observatory plugin connects: `bcatlas_resolve_node(object_type: "table", object_name: "Customer Subscription Contract")`, then `bcatlas_get_procedure_body` or `bcatlas_get_neighbors` on the returned id.
