# TMF666 v5 Resource Mappings

Before using the TMF666 resource mappings, refer to the following.

## Constraints and Limitations

- TMF666 v5 currently supports the `billingAccount` resource. Billing accounts map to the Salesforce BillingAccount object.
- Financial accounts are not supported in this release.
- Sub-resource sorting is not implemented.
- Out-of-the-box implementation is restricted to the core data model.
- `name` and `relatedParty` are mandatory for POST. Each related party must include `role` and `partyOrPartyRole.id`. If `contact` is provided, each contact must include `contactName`.
- DELETE is a soft delete. The API sets BillingAccount status to Inactive. The record is not physically deleted.
- Only a single tax exemption is supported out of the box.
- `defaultPaymentMethod` is not settable through POST or PATCH.
- Fields that are not supported out of the box can be added by using Apex extensibility hooks. See [Extensibility for TMF666 v5 Account Management](/docs/industries/communications/guide/TMF666\_extensibility.md).

These default mappings are supported for the TMF666 resources.

## Billing Account

| TMF Field<div style="width:120px"></div> | Description<div style="width:180px"></div>                                                 | Supported<div style="width:70px"></div> | Salesforce Object<div style="width:120px"></div> | Salesforce Mapping<div style="width:160px"></div> | Mandatory for POST<div style="width:90px"></div> | Supported methods<div style="width:90px"></div> |
| ---------------------------------------- | ------------------------------------------------------------------------------------------ | --------------------------------------- | ------------------------------------------------ | ------------------------------------------------- | ------------------------------------------------ | ----------------------------------------------- |
| id                                       | Unique identifier.                                                                         | Yes                                     | BillingAccount                                   | Id                                                | No                                               | GET                                             |
| href                                     | Hyperlink reference. Constructed at runtime.                                               | Yes                                     | BillingAccount                                   | Derived                                           | No                                               | GET                                             |
| name                                     | Name of the billing account.                                                               | Yes                                     | BillingAccount                                   | Name                                              | Yes                                              | GET, POST, PATCH                                |
| state                                    | Lifecycle state such as Active, Suspended, or Inactive. DELETE sets the value to Inactive. | Yes                                     | BillingAccount                                   | Status                                            | No                                               | GET, POST, PATCH                                |
| accountType                              | Categorization of the account, such as residential or commercial.                          | Yes                                     | BillingAccount                                   | CustomerClass                                     | No                                               | GET, POST, PATCH                                |
| lastUpdate                               | Date and time the account was last updated.                                                | Yes                                     | BillingAccount                                   | LastModifiedDate                                  | No                                               | GET                                             |
| @type                                    | Sub-class name. Always `BillingAccount` in the response.                                   | Yes                                     | —                                                | Hardcoded                                         | Yes                                              | GET, POST                                       |
| relatedParty                             | Parties related to the account, such as the customer.                                      | Yes                                     | AccountBillingAccount                            | See [Related Party](#related-party)               | Yes                                              | GET, POST                                       |
| contact                                  | People who can be contacted about the account.                                             | Yes                                     | BillingAccountContact                            | See [Contact](#contact)                           | No                                               | GET, POST                                       |
| billStructure                            | Structure of the bill.                                                                     | Yes                                     | BillingAccount                                   | See [Bill Structure](#bill-structure)             | No                                               | GET, POST, PATCH                                |
| taxExemption                             | Tax exemptions that can be applied when calculating charges.                               | Yes                                     | BillingAccount                                   | See [Tax Exemption](#tax-exemption)               | No                                               | GET, POST, PATCH                                |
| description                              | Detailed description of the account.                                                       | No                                      | —                                                | —                                                 | No                                               | —                                               |
| paymentStatus                            | Condition of the account, such as due or paid.                                             | No                                      | —                                                | —                                                 | No                                               | —                                               |
| ratingType                               | Prepaid or postpaid.                                                                       | No                                      | —                                                | —                                                 | No                                               | —                                               |
| creditLimit                              | Credit limit.                                                                              | No                                      | —                                                | —                                                 | No                                               | —                                               |
| financialAccount                         | Financial account reference.                                                               | No                                      | —                                                | —                                                 | No                                               | —                                               |
| paymentPlan                              | Active or expired payment plans.                                                           | No                                      | —                                                | —                                                 | No                                               | —                                               |
| accountBalance                           | Account balances.                                                                          | No                                      | —                                                | —                                                 | No                                               | —                                               |
| accountRelationship                      | Relationships to other billing accounts.                                                   | No                                      | —                                                | —                                                 | No                                               | —                                               |
| defaultPaymentMethod                     | Default payment method. Not settable through POST or PATCH.                                | No                                      | —                                                | —                                                 | No                                               | —                                               |

These attributes are patchable: `name`, `state`, `accountType`, bill structure format, presentation media, cycle specification frequency, and tax exemption certificate number, dates, and reason.

These attributes are not patchable: `id`, `href`, `lastUpdate`, `relatedParty`, `contact`, `contact.contactMedium`, and `defaultPaymentMethod`.

## Sub-resources

### Related Party

Related parties map through the AccountBillingAccount junction to Account.

| TMF Field<div style="width:180px"></div> | Description                             | Supported | Salesforce Mapping                              | Mandatory for POST                 |
| ---------------------------------------- | --------------------------------------- | --------- | ----------------------------------------------- | ---------------------------------- |
| role                                     | Role played by the related party.       | Yes       | AccountBillingAccount.RelationshipType          | Yes, when relatedParty is provided |
| @type                                    | Sub-class name.                         | Yes       | Hardcoded: RelatedPartyRefOrRelatedPartyRoleRef | Yes, when relatedParty is provided |
| partyOrPartyRole.id                      | Unique identifier of the related party. | Yes       | AccountBillingAccount.Account                   | Yes, when relatedParty is provided |
| partyOrPartyRole.name                    | Name of the related party.              | Yes       | Account.Name                                    | No                                 |
| partyOrPartyRole.href                    | Hyperlink reference.                    | Yes       | Derived                                         | No                                 |
| partyOrPartyRole.@type                   | Sub-class name.                         | Yes       | Hardcoded: PartyRefOrPartyRoleRef               | No                                 |

### Bill Structure

| TMF Field<div style="width:180px"></div> | Description                               | Supported | Salesforce Mapping                    | Mandatory for POST |
| ---------------------------------------- | ----------------------------------------- | --------- | ------------------------------------- | ------------------ |
| @type                                    | Sub-class name. Always `BillStructure`.   | Yes       | Hardcoded                             | No                 |
| format.name                              | Bill format, such as detailed or summary. | Yes       | BillingAccount.ExtlBillFormat         | No                 |
| format.@type                             | Always `BillFormat`.                      | Yes       | Hardcoded                             | No                 |
| presentationMedia.name                   | Delivery method, such as email or paper.  | Yes       | BillingAccount.ExtlBillDeliveryMethod | No                 |
| presentationMedia.@type                  | Always `BillPresentationMedia`.           | Yes       | Hardcoded                             | No                 |
| cycleSpecification.frequency             | Billing frequency, such as monthly.       | Yes       | BillingAccount.ExtlBillFrequency      | No                 |
| cycleSpecification.@type                 | Always `BillingCycleSpecification`.       | Yes       | Hardcoded                             | No                 |
| cycleSpecification.DateShift             | Offset of a billing date.                 | No        | —                                     | No                 |

### Contact

Contacts map through the BillingAccountContact junction to Contact.

| TMF Field<div style="width:180px"></div>             | Description                                                 | Supported | Salesforce Mapping                       | Mandatory for POST            |
| ---------------------------------------------------- | ----------------------------------------------------------- | --------- | ---------------------------------------- | ----------------------------- |
| id                                                   | Identifier of the contact.                                  | Yes       | Id                                       | No                            |
| contactName                                          | Displayable name for the contact.                           | Yes       | Contact.Name                             | Yes, when contact is provided |
| contactType                                          | Type of contact, such as primary.                           | Yes       | BillingAccountContact.RelationshipType   | No                            |
| validFor                                             | Validity period.                                            | Yes       | startDateTime and endDateTime            | No                            |
| @type                                                | Sub-class name. Always `Contact`.                           | Yes       | Hardcoded                                | No                            |
| contactMedium.emailAddress                           | Billing email.                                              | Yes       | BillingAccount.BillingEmailAddress       | No                            |
| contactMedium.phoneNumber                            | Phone.                                                      | Yes       | Contact.Phone                            | No                            |
| contactMedium.faxNumber                              | Fax.                                                        | Yes       | Contact.Fax                              | No                            |
| contactMedium street, city, state, postCode, country | Billing address.                                            | Yes       | PrimaryBillAddr fields on BillingAccount | No                            |
| contactMedium.@type                                  | Discriminator for email, phone, fax, or geographic address. | Yes       | Hardcoded discriminator                  | No                            |

### Tax Exemption

Only a single tax exemption is supported out of the box.

| TMF Field<div style="width:180px"></div> | Description                           | Supported | Salesforce Mapping                  | Mandatory for POST |
| ---------------------------------------- | ------------------------------------- | --------- | ----------------------------------- | ------------------ |
| certificateNumber                        | Identifier of the exemption document. | Yes       | BillingAccount.ExtlTaxIdentifier    | No                 |
| reason                                   | Reason for the tax exemption.         | Yes       | BillingAccount.ExtlTaxExmpType      | No                 |
| validFor.startDateTime                   | Start date of the exemption.          | Yes       | BillingAccount.ExtlTaxExmpStartDate | No                 |
| validFor.endDateTime                     | End date of the exemption.            | Yes       | BillingAccount.ExtlTaxExmpEndDate   | No                 |
| attachment                               | Supporting document.                  | No        | —                                   | No                 |
| taxDefinition                            | Taxes covered by the exemption.       | No        | —                                   | No                 |
