---
id: object/table/8019
type: object
title: Table 8019 "Sub. Contr. Analysis Entry"
summary: Table 8019 "Sub. Contr. Analysis Entry" in Subscription Billing. 48 fields, 3 public procedures, 1 events. Introduced in BC29, still in BC30.
tier: official
language: en
tags:
  - table
  - subscription billing
versions:
  introduced: "29"
  last_changed: null
  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: 6e02829ff016e4e5be9fcd87833cf4997dde7e2027ebbe10023abd1894fe9ef7
evidence:
  - kind: code
    url: https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Apps/W1/Subscription%20Billing/app/ContractAnalysis/SubContrAnalysisEntry.Table.al
    title: src/Apps/W1/Subscription Billing/app/ContractAnalysis/SubContrAnalysisEntry.Table.al (releases/29.x)
    date: null
    commit: ea08af5ef2d6a9b5c5af4a029288abbe2c883220
    t: null
    quote: null
links:
  learn: []
  objects: []
  features: []
  topics: []
  localizations: []
  videos: []
  posts: []
  guidelines: []
  changes:
    - change/bcapps/10675
object_type: table
object_id: 8019
name: Sub. Contr. Analysis Entry
caption: Subscription Contract Analysis Entry
namespace: null
app: Subscription Billing
extends: null
first_version: "29"
last_version: "30"
present_in:
  - "29"
  - "30"
changed_in: []
source_major: "29"
obsolete: null
countries: []
ms_search_form_ids: []
counts:
  fields: 48
  procedures: 5
  events: 1
  subscribers: 0
relations:
  out: 13
  referenced_by: 0
  pages: 2
  extended_by: 0
  event_subscribers: 0
  calls: 0
  called_by: 0
  implements: 0
---

# Table 8019 "Sub. Contr. Analysis Entry"

> Table 8019 "Sub. Contr. Analysis Entry" in Subscription Billing. 48 fields, 3 public procedures, 1 events. Introduced in BC29, still in BC30.

Subscription Billing · captioned "Subscription Contract Analysis Entry" · BC29-30 · [source at ea08af5e](https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Apps/W1/Subscription%20Billing/app/ContractAnalysis/SubContrAnalysisEntry.Table.al) · facts from BC29

## Properties

| Property | Value |
|---|---|
| Caption | Subscription Contract Analysis Entry |
| DataClassification | CustomerContent |
| LookupPageId | Contract Analysis Entries |
| DrillDownPageId | Contract Analysis Entries |

## 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 |
|---|---|---|---|---|
| 1 | Entry No. | Integer | Specifies the number of the entry assigned to it from the specified number series when it was created. <small>via [Page 8090 "Contract Analysis Entries"](../page/8090.md)</small> | not editable; AutoIncrement |
| 2 | Subscription Header No. | Code[20] | Specifies the contract to which the Subscription Line is to be assigned. <small>via [Page 8090 "Contract Analysis Entries"](../page/8090.md)</small> | TableRelation [Table 8057 "Subscription Header"](../table/8057.md) (Subscription Header) |
| 3 | Subscription Package Code | Code[20] | Specifies the code of the Subscription Package. If a Vendor Subscription Contract line has the same Subscription No. and Package Code as a Customer Subscription Contract line, the Customer Subscription Contract dimension value is copied to the Vendor Subscription Contract line. <small>via [Page 8090 "Contract Analysis Entries"](../page/8090.md)</small> | TableRelation [Table 8055 "Subscription Package"](../table/8055.md) (Subscription Package); not editable; NotBlank |
| 4 | Template | Code[20] | Specifies the code of the Subscription Package Line Template. <small>via [Page 8090 "Contract Analysis Entries"](../page/8090.md)</small> | TableRelation [Table 8054 "Sub. Package Line Template"](../table/8054.md) (Sub. Package Line Template); not editable; NotBlank |
| 5 | Description | Text[100] | Specifies the description of the Subscription Line. <small>via [Page 8090 "Contract Analysis Entries"](../page/8090.md)</small> |  |
| 6 | Subscription Line Start Date | Date | Specifies the date from which the Subscription Line is valid and will be invoiced. <small>via [Page 8090 "Contract Analysis Entries"](../page/8090.md)</small> |  |
| 7 | Subscription Line End Date | Date | Specifies the date up to which the Subscription Line is valid. <small>via [Page 8090 "Contract Analysis Entries"](../page/8090.md)</small> |  |
| 8 | Next Billing Date | Date | Specifies the date of the next billing possible. <small>via [Page 8090 "Contract Analysis Entries"](../page/8090.md)</small> | not editable |
| 9 | Calculation Base Amount | Decimal | Specifies the base amount from which the price will be calculated. <small>via [Page 8090 "Contract Analysis Entries"](../page/8090.md)</small> |  |
| 10 | Calculation Base % | Decimal | Specifies the percent at which the price of the Subscription Line will be calculated. 100% means that the price corresponds to the Base Price. <small>via [Page 8090 "Contract Analysis Entries"](../page/8090.md)</small> |  |
| 11 | Price | Decimal | Specifies the price of the Subscription Line with quantity of 1 in the billing period. The price is calculated from Base Price and Base Price %. <small>via [Page 8090 "Contract Analysis Entries"](../page/8090.md)</small> | not editable |
| 12 | Discount % | Decimal | Specifies the percent of the discount for the Subscription Line. <small>via [Page 8090 "Contract Analysis Entries"](../page/8090.md)</small> |  |
| 13 | Discount Amount | Decimal | Specifies the amount of the discount for the Subscription Line. <small>via [Page 8090 "Contract Analysis Entries"](../page/8090.md)</small> |  |
| 14 | Amount | Decimal | Specifies the amount for the Subscription Line including discount. <small>via [Page 8090 "Contract Analysis Entries"](../page/8090.md)</small> |  |
| 15 | Billing Base Period | DateFormula | Specifies for which period the Amount is valid. If you enter 1M here, a period of one month, or 12M, a period of 1 year, to which Amount refers to. <small>via [Page 8090 "Contract Analysis Entries"](../page/8090.md)</small> |  |
| 17 | Invoicing Item No. | Code[20] | Specifies the value of the Invoicing Item No. field. <small>via [Page 8090 "Contract Analysis Entries"](../page/8090.md)</small> | TableRelation Item."No." where("Subscription Option" = filter("Invoicing Item" \| "Service Commitment Item")) |
| 18 | Partner | Enum "Service Partner" | Specifies whether the Subscription Line will will be calculated as a credit (Purchase Invoice) or as debit (Sales Invoice). <small>via [Page 8090 "Contract Analysis Entries"](../page/8090.md)</small> | enum [Enum 8053 "Service Partner"](../enum/8053.md) |
| 19 | Subscription Contract No. | Code[20] | Specifies the contract to which the Subscription Line is to be assigned. <small>via [Page 8090 "Contract Analysis Entries"](../page/8090.md)</small> | TableRelation [Table 8052 "Customer Subscription Contract"](../table/8052.md), [Table 8063 "Vendor Subscription Contract"](../table/8063.md) (if (Partner = const(Customer)) "Customer Subscription Contract" where("Sell-to Customer No." = field("Partner No.")) else if (Partner = const(Vendor)) "Vendor Subscription Contract") |
| 20 | Notice Period | DateFormula | Specifies a date formula for the lead time that a notice must have before the Subscription Line ends. The rhythm of the update of "Notice possible to" and "Term Until" is determined using the extension term. For example, with an extension period of 1M, the notice period is repeatedly postponed by on... <small>via [Page 8090 "Contract Analysis Entries"](../page/8090.md)</small> |  |
| 21 | Initial Term | DateFormula | Specifies a date formula for calculating the minimum term of the Subscription Line. If the minimum term is filled and no extension term is entered, the end of Subscription Line is automatically set to the end of the initial term. <small>via [Page 8090 "Contract Analysis Entries"](../page/8090.md)</small> |  |
| 22 | Extension Term | DateFormula | Specifies a date formula for automatic renewal after initial term and the rhythm of the update of "Notice possible to" and "Term Until". <small>via [Page 8090 "Contract Analysis Entries"](../page/8090.md)</small> |  |
| 23 | Billing Rhythm | DateFormula | Specifies the Dateformula for rhythm in which the Subscription Line is invoiced. Using a Dateformula rhythm can be, for example, a monthly, a quarterly or a yearly invoicing. <small>via [Page 8090 "Contract Analysis Entries"](../page/8090.md)</small> |  |
| 24 | Cancellation Possible Until | Date | Specifies the last date for a timely termination. The date is determined by the initial term, extension term and a notice period. An initial term of 12 months and a 3-month notice period means that the deadline for a notice of termination is after 9 months. An extension period of 12 months postpones... <small>via [Page 8090 "Contract Analysis Entries"](../page/8090.md)</small> |  |
| 25 | Term Until | Date | Specifies the earliest regular date for the end of the Subscription Line, taking into account the initial term, extension term and a notice period. An initial term of 24 months results in a fixed term of 2 years. An extension period of 12 months postpones this date by 12 months. <small>via [Page 8090 "Contract Analysis Entries"](../page/8090.md)</small> |  |
| 27 | Subscription Contract Line No. | Integer | Specifies the value of the Contract Line No. field. <small>via [Page 8090 "Contract Analysis Entries"](../page/8090.md)</small> | TableRelation [Table 8062 "Cust. Sub. Contract Line"](../table/8062.md), [Table 8065 "Vend. Sub. Contract Line"](../table/8065.md) (if (Partner = const(Customer)) "Cust. Sub. Contract Line"."Line No." where("Subscription Contract No." = field("Subscription Contract No.")) else if (Partner = const(Vendor)) "Vend. Sub. Contract Line"."Line No." where("Subscription Contract No." = field("Subscription Contract No."))) |
| 31 | Price (LCY) | Decimal | Specifies the price of the Subscription Line in client currency related to quantity of 1 in the billing period. The price is calculated from Base Price and Base Price %. <small>via [Page 8090 "Contract Analysis Entries"](../page/8090.md)</small> | not editable |
| 32 | Discount Amount (LCY) | Decimal | Specifies the discount amount in client currency that is granted on the Subscription Line. <small>via [Page 8090 "Contract Analysis Entries"](../page/8090.md)</small> | not editable |
| 33 | Amount (LCY) | Decimal | Specifies the amount in client currency for the Subscription Line including discount. <small>via [Page 8090 "Contract Analysis Entries"](../page/8090.md)</small> | not editable |
| 34 | Currency Code | Code[10] | Specifies the currency of amounts in the Subscription Line. <small>via [Page 8090 "Contract Analysis Entries"](../page/8090.md)</small> | TableRelation [Table 4 "Currency"](../table/4.md); not editable |
| 35 | Currency Factor | Decimal | Specifies the currency factor valid for the Subscription Line, which is used to convert amounts to the client currency. <small>via [Page 8090 "Contract Analysis Entries"](../page/8090.md)</small> | not editable |
| 36 | Currency Factor Date | Date | Specifies the date when the currency factor was last updated. <small>via [Page 8090 "Contract Analysis Entries"](../page/8090.md)</small> | not editable |
| 37 | Calculation Base Amount (LCY) | Decimal | Specifies the basis on which the price is calculated in client currency. <small>via [Page 8090 "Contract Analysis Entries"](../page/8090.md)</small> | not editable |
| 38 | Discount | Boolean | Specifies whether the Subscription Line is used as a basis for periodic invoicing or discounts. <small>via [Page 8090 "Contract Analysis Entries"](../page/8090.md)</small> | not editable |
| 39 | Quantity | Decimal | Specifies the value of the Quantity field. <small>via [Page 8090 "Contract Analysis Entries"](../page/8090.md)</small> | not editable |
| 100 | Unit Cost | Decimal | — | not editable |
| 101 | Unit Cost (LCY) | Decimal | Specifies the unit cost of the item. <small>via [Page 8090 "Contract Analysis Entries"](../page/8090.md)</small> | not editable |
| 202 | Renewal Term | DateFormula | Specifies a date formula by which the Contract Line is renewed and the end of the Contract Line is extended. It is automatically preset with the initial term of the Subscription Line and can be changed manually. <small>via [Page 8090 "Contract Analysis Entries"](../page/8090.md)</small> |  |
| 480 | Dimension Set ID | Integer | Specifies the value of the Dimension Set ID field. <small>via [Page 8090 "Contract Analysis Entries"](../page/8090.md)</small> | TableRelation [Table 480 "Dimension Set Entry"](../table/480.md) (Dimension Set Entry); not editable |
| 1000 | Analysis Date | Date | Specifies the period in which the entry is evaluated. <small>via [Page 8090 "Contract Analysis Entries"](../page/8090.md)</small> |  |
| 1001 | Monthly Recurr. Revenue (LCY) | Decimal | Specifies the monthly recurring amount in local currency. <small>via [Page 8090 "Contract Analysis Entries"](../page/8090.md)</small> |  |
| 1002 | Monthly Recurring Cost (LCY) | Decimal | Specifies the monthly recurring costs in local currency. <small>via [Page 8090 "Contract Analysis Entries"](../page/8090.md)</small> |  |
| 1005 | Subscription Line Entry No. | Integer | Specifies the value of the Subscription Line Line No. field. <small>via [Page 8090 "Contract Analysis Entries"](../page/8090.md)</small> |  |
| 1006 | Partner No. | Code[20] | Specifies the number of the partner who will receive the contract components and be billed by default. <small>via [Page 8090 "Contract Analysis Entries"](../page/8090.md)</small> | TableRelation [Table 18 "Customer"](../table/18.md), [Table 23 "Vendor"](../table/23.md) (if (Partner = const(Customer)) Customer else if (Partner = const(Vendor)) Vendor) |
| 8000 | Usage Based Billing | Boolean | Specifies whether usage data is used as the basis for billing via contracts. <small>via [Page 8090 "Contract Analysis Entries"](../page/8090.md)</small> |  |
| 8007 | Sub. Header Source Type | Enum "Service Object Type" | Specifies the Source Type of the Subscription. <small>via [Page 8090 "Contract Analysis Entries"](../page/8090.md)</small> | enum [Enum 8019 "Service Object Type"](../enum/8019.md) |
| 8008 | Sub. Header Source No. | Code[20] | Specifies the Source No. of the Subscription. <small>via [Page 8090 "Contract Analysis Entries"](../page/8090.md)</small> |  |
| 8009 | Service Object Item No. | Code[20] | Specifies the Item No. of the Subscription. <small>via [Page 8090 "Contract Analysis Entries"](../page/8090.md)</small> | obsolete Pending 26.0; #if not CLEANSCHEMA29 |
| 8010 | Subscription Description | Text[100] | Specifies the value of the Subscription Description field. <small>via [Page 8090 "Contract Analysis Entries"](../page/8090.md)</small> |  |

## Keys

- PK: Entry No. (clustered)

## Events published

- `OnAfterInitFromServiceCommitment(var ContractAnalysisEntry: Record "Sub. Contr. Analysis Entry"; ServiceCommitment: Record "Subscription Line")` (integration)

## Procedures

- `InitFromServiceCommitment(ServiceCommitment: Record "Subscription Line")` (internal)
- `CalculateMonthlyRecurringRevenue(ServiceCommitment: Record "Subscription Line")` (internal)
- `CalculateMonthlyRecurringCost(ServiceCommitment: Record "Subscription Line")` (internal)

Plus 1 local procedures.

## Relations

- drill-down page [Page 8090 "Contract Analysis Entries"](../page/8090.md)
- lookup page [Page 8090 "Contract Analysis Entries"](../page/8090.md)
- Partner No.: TableRelation [Table 18 "Customer"](../table/18.md) (conditional)
- Partner No.: TableRelation [Table 23 "Vendor"](../table/23.md) (conditional)
- Currency Code: TableRelation [Table 4 "Currency"](../table/4.md)
- Dimension Set ID: TableRelation [Table 480 "Dimension Set Entry"](../table/480.md)
- Subscription Contract No.: TableRelation [Table 8052 "Customer Subscription Contract"](../table/8052.md) (conditional)
- Template: TableRelation [Table 8054 "Sub. Package Line Template"](../table/8054.md)
- Subscription Package Code: TableRelation [Table 8055 "Subscription Package"](../table/8055.md)
- Subscription Header No.: TableRelation [Table 8057 "Subscription Header"](../table/8057.md)
- Subscription Contract Line No.: TableRelation [Table 8062 "Cust. Sub. Contract Line"](../table/8062.md) (conditional)
- Subscription Contract No.: TableRelation [Table 8063 "Vendor Subscription Contract"](../table/8063.md) (conditional)
- Subscription Contract Line No.: TableRelation [Table 8065 "Vend. Sub. Contract Line"](../table/8065.md) (conditional)

## Pages and codeunits on this table

- [Page 8087 "Contr. Analysis Entries API"](../page/8087.md) (source table)
- [Page 8090 "Contract Analysis Entries"](../page/8090.md) (source table)

## Recent changes

- 2026-08-27 [#10675 Temporarily suppress AS0072 (ObsoleteTag 29.0) on 10 Base App elements for v30 prep](../../changes/bcapps/10675.md) (main, BC30, fix)

## Across versions

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

## Deprecations

- field Service Object Item No.: Pending 26.0 (#if not CLEANSCHEMA29), "Replaced by field Subscription Source No."

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: "Sub. Contr. Analysis Entry")`, then `bcatlas_get_procedure_body` or `bcatlas_get_neighbors` on the returned id.
