Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

FOCUS #317: BillingAccountType and SubAccountType #287

Open
wants to merge 7 commits into
base: working_draft
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 17 additions & 3 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,26 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

<!--
[All unreleased changes](https://github.com/FinOps-Open-Cost-and-Usage-Spec/FOCUS_Spec/compare/1.1...working_draft)
-->

## v1.2

[All unreleased changes](https://github.com/FinOps-Open-Cost-and-Usage-Spec/FOCUS_Spec/compare/1.1...working_draft)
<sup>Announced June 2025</sup>

**Added:**

- `BillingAccountType` column
- `SubAccountType` column

**Changed:**

- `CommitmentDiscountType` column updates:
- Must be a consistent, readable display value.

[All 1.2 changes](https://github.com/FinOps-Open-Cost-and-Usage-Spec/FOCUS_Spec/compare/1.1...working_draft)

<br>
-->

## v1.1

Expand Down Expand Up @@ -55,7 +69,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
- `SchemaId` metadata schema property updates:
- Recommended to be a globally unique identifier (GUID) instead of a universally unique identifier (UUID) or SemVer version.

[All 1.1 changes](https://github.com/FinOps-Open-Cost-and-Usage-Spec/FOCUS_Spec/compare/v1.0...v1.1-cr)
[All 1.1 changes](https://github.com/FinOps-Open-Cost-and-Usage-Spec/FOCUS_Spec/compare/v1.0...v1.1)

<br>

Expand Down
39 changes: 39 additions & 0 deletions specification/columns/billingaccounttype.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
# Billing Account Type

Billing Account Type is a provider-assigned name to identify the type of [*billing account*](#glossary:billing-account). Billing Account Type is a readable display name and not a code. Billing Account Type is commonly used for scenarios like mapping FOCUS and provider constructs, summarizing costs across providers, or invoicing and chargeback.

The BillingAccountType column adheres to the following requirements:

* BillingAccountType MUST be present in a [*FOCUS dataset*](#glossary:FOCUS-dataset) when the provider supports more than one possible BillingAccountType value.
* BillingAccountType MUST be of type String.
flanakin marked this conversation as resolved.
Show resolved Hide resolved
* BillingAccountType MUST conform to [String Handling](#stringhandling) requirements.
* BillingAccountType MUST be null when BillingAccountId is null.
* BillingAccountType MUST NOT be null when BillingAccountId not is null.
* BillingAccountType MUST be a consistent, readable display value.

## Column ID

BillingAccountType

## Display Name

Billing Account Type

## Description

A provider-assigned identifier for the type of *billing account* applied to the *row*.

## Content Constraints

| Constraint | Value |
| :-------------- | :--------------- |
| Column type | Dimension |
| Feature level | Conditional |
| Column required | True |
flanakin marked this conversation as resolved.
Show resolved Hide resolved
| Allows nulls | False |
| Data type | String |
| Value format | \<not specified> |

## Introduced (version)

1.2
2 changes: 2 additions & 0 deletions specification/columns/columns.mdpp
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ The FOCUS specification defines a group of columns that provide qualitative valu
!INCLUDE "billedcost.md",1
!INCLUDE "billingaccountid.md",1
!INCLUDE "billingaccountname.md",1
!INCLUDE "billingaccounttype.md",1
!INCLUDE "billingcurrency.md",1
!INCLUDE "billingperiodend.md",1
!INCLUDE "billingperiodstart.md",1
Expand Down Expand Up @@ -51,6 +52,7 @@ The FOCUS specification defines a group of columns that provide qualitative valu
!INCLUDE "skupriceid.md",1
!INCLUDE "subaccountid.md",1
!INCLUDE "subaccountname.md",1
!INCLUDE "subaccounttype.md",1
!INCLUDE "tags.md",1

[FODOFC]: https://www.finops.org/framework/capabilities/
9 changes: 6 additions & 3 deletions specification/columns/commitmentdiscounttype.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,11 @@ Commitment Discount Type is a provider-assigned name to identify the type of [*c

The CommitmentDiscountType column adheres to the following requirements:

* The CommitmentDiscountType column MUST be present in a [*FOCUS dataset*](#glossary:FOCUS-dataset) when the provider supports *commitment discounts*.
* This column MUST be of type String, MUST be null when [CommitmentDiscountId](#commitmentdiscountid) is null, and MUST NOT be null when CommitmentDiscountId is not null.
* CommitmentDiscountType MUST be present in a [*FOCUS dataset*](#glossary:FOCUS-dataset) when the provider supports *commitment discounts*.
* CommitmentDiscountType MUST be of type String.
* CommitmentDiscountType MUST be null when [CommitmentDiscountId](#commitmentdiscountid) is null.
* CommitmentDiscountType MUST NOT be null when CommitmentDiscountId is not null.
* CommitmentDiscountType MUST be a consistent, readable display value.

## Column ID

Expand All @@ -19,7 +22,7 @@ Commitment Discount Type

A provider-assigned identifier for the type of *commitment discount* applied to the *row*.

## Content constraints
## Content Constraints

| Constraint | Value |
|:----------------|:-----------------|
Expand Down
39 changes: 39 additions & 0 deletions specification/columns/subaccounttype.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
# Sub Account Type

Sub Account Type is a provider-assigned name to identify the type of [*sub account*](#glossary:sub-account). Sub Account Type is a readable display name and not a code. Sub Account Type is commonly used for scenarios like mapping FOCUS and provider constructs, summarizing costs across providers, or invoicing and chargeback.

The SubAccountType column adheres to the following requirements:

* SubAccountType MUST be present in a [*FOCUS dataset*](#glossary:FOCUS-dataset) when the provider supports more than one possible SubAccountType value.
* SubAccountType MUST be of type String.
flanakin marked this conversation as resolved.
Show resolved Hide resolved
* SubAccountType MUST conform to [String Handling](#stringhandling) requirements.
* SubAccountType MUST be null when SubAccountId is null.
* SubAccountType MUST NOT be null when SubAccountId not is null.
* SubAccountType MUST be a consistent, readable display value.

## Column ID

SubAccountType

## Display Name

Sub Account Type

## Description

A provider-assigned identifier for the type of *sub account* applied to the *row*.

## Content Constraints

| Constraint | Value |
| :-------------- | :--------------- |
| Column type | Dimension |
| Feature level | Conditional |
| Column required | True |
flanakin marked this conversation as resolved.
Show resolved Hide resolved
| Allows nulls | True |
| Data type | String |
| Value format | \<not specified> |

## Introduced (version)

1.2
39 changes: 39 additions & 0 deletions supporting_content/columns/billingaccounttype.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
# Column: BillingAccountType

## Example provider mappings

Current column mappings found in available data sets:

| Provider | Data set | Column |
| --------- | ----------------------- | ------------- |
| AWS | CUR | Not available |
| GCP | BigQuery Billing Export | Not available |
| Microsoft | Cost details | Not available |

## Documentation

- GCP: [Resource Hierarchy](https://cloud.google.com/resource-manager/docs/cloud-platform-resource-hierarchy#resource-hierarchy-detail)
- Azure: [Organizing resources](https://learn.microsoft.com/azure/cost-management-billing/manage/view-all-accounts)
- AWS: [Org Concepts](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_getting-started_concepts.html)
Copy link
Contributor

@ijurica ijurica Jan 23, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- AWS: [Org Concepts](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_getting-started_concepts.html)
- AWS: [Org Concepts](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_getting-started_concepts.html)
- AWS: [Configuring your AWS Invoices using Invoice Configuration](https://aws.amazon.com/blogs/aws-cloud-financial-management/configuring-your-aws-invoices-using-invoice-configuration/)


## Example usage scenarios

Current terms used by providers:

| Provider | Scenario | Value |
| --------- | ------------- | -------------------- |
| AWS | Not available | "Payer Account" |
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As mentioned in a previous comment, AWS might support more than one BillingAccountType, e.g., Management Account and Cost Center (see Configuring your AWS Invoices using Invoice Configuration)

| GCP | Not available | "Billing Account" |
| Microsoft | EA | "Billing Account" |
| Microsoft | MCA/MPA | "Billing Profile" |
| Microsoft | Other | "Subscription" |
flanakin marked this conversation as resolved.
Show resolved Hide resolved
| OCI | Not available | "Billing Account" |

## Discussion / scratch space

We ran a poll to determine if BillingAccountType and SubAccountType columns were desired. Poll results:
* 4 votes for `Yes, add both columns as REQUIRED for ALL providers`
* 10 votes for `Yes, add both columns as REQUIRED for providers that have DIFFERENT ACCOUNT TYPES`
* 1 vote for `Yes, add both columns as OPTIONAL for all providers`
* 4 votes for `I am fine with or without these columns`
* 0 votes for `No, I do not want/need these columns in the FOCUS dataset`
38 changes: 38 additions & 0 deletions supporting_content/columns/subaccounttype.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# Column: SubAccountType

## Example provider mappings

Current column mappings found in available data sets:

| Provider | Data set | Column |
| --------- | ----------------------- | ------------- |
| AWS | CUR | Not available |
| GCP | BigQuery Billing Export | Not available |
| Microsoft | Cost details | Not available |

## Documentation

- GCP: [Resource Hierarchy](https://cloud.google.com/resource-manager/docs/cloud-platform-resource-hierarchy#resource-hierarchy-detail)
- Azure: [Organizing resources](https://learn.microsoft.com/azure/cost-management-billing/manage/view-all-accounts)
- AWS: [Org Concepts](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_getting-started_concepts.html)

## Example usage scenarios

Current terms used by providers:

| Provider | Value |
| --------- | ---------------- |
| AWS | "Membership Account" |
| GCP | "Project" |
| Microsoft | "Subscription" |
flanakin marked this conversation as resolved.
Show resolved Hide resolved
| OCI | "Tenancy" |
| OCI | "Child Tenancy" |

## Discussion / scratch space

We ran a poll to determine if BillingAccountType and SubAccountType columns were desired. Poll results:
* 4 votes for `Yes, add both columns as REQUIRED for ALL providers`
* 10 votes for `Yes, add both columns as REQUIRED for providers that have DIFFERENT ACCOUNT TYPES`
* 1 vote for `Yes, add both columns as OPTIONAL for all providers`
* 4 votes for `I am fine with or without these columns`
* 0 votes for `No, I do not want/need these columns in the FOCUS dataset`