XML 26 R11.htm IDEA: XBRL DOCUMENT
v3.24.0.1

Revenue | 12 Months Ended
--- | ---
Dec. 31, 2023
Revenue from Contract with Customer [Abstract] |
Revenue | 3. Revenue Revenue Recognition We generate subscriptions revenue primarily through the sale of cloud subscriptions bundled with maintenance and support and hosting services as well as term license subscriptions bundled with maintenance and support. We generate professional services revenue from fees for our consulting services, including application development and deployment assistance as well as training related to our platform. The following table summarizes revenue recorded during the years ended December 31, 2023, 2022, and 2021 (in thousands):
| Year Ended December 31,
| 2023 |  | 2022 |  | 2021
Cloud subscriptions | $ | 304,481 |  |  | $ | 236,922 |  |  | $ | 179,415 |
Term license subscriptions | 82,282 |  |  | 79,753 |  |  | 63,203 |
Maintenance and support | 25,574 |  |  | 23,477 |  |  | 21,120 |
Total subscriptions | 412,337 |  |  | 340,152 |  |  | 263,738 |
Professional services | 133,026 |  |  | 127,839 |  |  | 105,521 |
Total revenue | $ | 545,363 |  |  | $ | 467,991 |  |  | $ | 369,259 |
Performance Obligations and Timing of Revenue Recognition We primarily sell products and services that fall into the categories discussed below. Each category contains one or more performance obligations that are either (1) capable of being distinct (i.e., the customer can benefit from the product or service on its own or together with readily available resources, including those purchased separately from us) and distinct within the context of the contract (i.e., separately identified from other promises in the contract) or (2) a series of distinct products or services that are substantially the same and have the same pattern of transfer to the customer. Our term license subscriptions are delivered at a point in time while our cloud subscriptions, maintenance and support, and professional services are delivered over time. Subscriptions Revenue Subscriptions revenue is primarily related to (1) cloud subscriptions bundled with maintenance and support and hosting services and (2) term license subscriptions bundled with maintenance and support. We generally charge subscription fees on a per-user basis or through non-user-based single application licenses. We bill customers and collect payment for subscriptions to our platform in advance on an annual, quarterly, or monthly basis. In certain instances, our customers have paid their entire contract up front. Cloud Subscriptions We generate cloud-based subscriptions revenue primarily from the sales of subscriptions to access our cloud offering, together with related support services to our customers. We perform all required maintenance and support for our cloud offering. Revenue is recognized on a ratable basis over the contract term beginning on the date the service is made available to the customer. Our cloud-based subscription contracts generally have a term of one to three years in length. We bill customers and collect payment for subscriptions to our platform in advance, and they are non-cancellable. Term License Subscriptions Our term license subscriptions revenue is derived from customers with on-premises installations of our platform. The majority of our contracts are one year in length. Although term license subscriptions are sold with maintenance and support, the software is fully functional at the beginning of the subscription and is considered a distinct performance obligation. If a cloud-based subscription includes the right for the customer to take possession of the license, the revenue is treated as a term license. Revenue from term license subscriptions is recognized when control of the software license has transferred to the customer, which is the later of delivery or commencement of the contract term. Maintenance and Support Maintenance and support subscriptions include both technical support and when-and-if-available software upgrades, which are treated as a single performance obligation as they are considered a series of distinct services that are substantially the same and have the same duration and measure of progress. Revenue from maintenance and support is recognized ratably over the contract period, which is the period over which the customer has continuous access to maintenance and support. Professional Services Revenue Our professional services revenue is comprised of fees for consulting services, including application development and deployment assistance as well as training services related to our platform. Our professional services are considered distinct performance obligations when sold standalone or with other products. Consulting Services We sell consulting services to assist customers in planning and executing the deployment of our software. Customers are not required to use consulting services to fully benefit from the software. Consulting services are regularly sold on a standalone basis and most often as either (1) under a fixed-fee arrangement or (2) on a time and materials basis. We also sell advisory services on a subscription basis to support customers or partners with their development and deployment. Consulting services contracts are considered separate performance obligations because they do not integrate with each other or with other products and services to deliver a combined output to the customer, do not modify or customize (or are not modified or customized by) each other or other products and services, and do not affect the customer's ability to use the other consulting offerings or other products and services. Revenue under consulting contracts is recognized over time as services are delivered. Revenue from subscription-based consulting contracts is recognized ratably over the contract period. For time and materials-based consulting contracts, we have elected the practical expedient of recognizing revenue upon invoicing since the invoiced amount corresponds directly to the value of our service to date. Training Services We sell various training services to our customers. Training services are sold in the form of prepaid training credits that are redeemed based on a fixed rate per course. Training revenue is recognized when the associated training services are delivered. Significant Judgments and Estimates Determining the Transaction Price The transaction price is the total amount of consideration we expect to receive in exchange for the service offerings in a contract and may include both fixed and variable components. Variable consideration is included in the transaction price to the extent it is probable a significant reversal will not occur. The amount of variable consideration excluded from the transaction price for the years ended December 31, 2023, 2022, and 2021 was immaterial. Our estimates of variable consideration are also subject to subsequent true-up adjustments and may result in changes to transaction prices; however, such true-up adjustments are not expected to be material. Allocating the Transaction Price Based on Standalone Selling Prices (“SSP”) We allocate the transaction price to each performance obligation in a contract based on its relative SSP. The SSP is the observable price at which we sell the product or service separately. In the absence of observable pricing, we estimate SSP using the residual approach. We establish SSP as follows: 1. Cloud subscriptions - Given the highly variable selling price of our cloud subscriptions, we establish the SSP of our cloud subscriptions using a residual approach after first determining the SSP of consulting and training services. We have concluded the residual approach to estimating the SSP of our cloud subscriptions is an appropriate allocation of the transaction price. 2. Term license subscriptions - Given the highly variable selling price of our term license subscriptions, we have established the SSP of term license subscriptions using a residual approach after first determining the SSP of maintenance and support. Maintenance and support is sold on a standalone basis in conjunction with renewals of our legacy perpetual software licenses and within a narrow range of the net license fee. Because an economic relationship exists between the license and maintenance and support, we have concluded the residual approach to estimating the SSP of term license subscriptions is an appropriate allocation of the transaction price. 3. Maintenance and support - We establish the SSP of maintenance and support as a percentage of the stated net subscription fee based on observable pricing of maintenance and support renewals from our legacy perpetual software licenses. 4. Consulting and training services - The SSP of consulting and training services is established based on the observable pricing of standalone sales within each geographic region where the services are sold. Contract Balances Timing may differ between the satisfaction of performance obligations and the invoicing and collection of amounts related to our contracts with customers. Contract assets primarily relate to unbilled amounts for contracts with customers for which the amount of revenue recognized exceeds the amount billed to the customer. Contract assets are transferred to accounts receivable when the right to invoice becomes unconditional. Contract liabilities consist of deferred revenue and include payments received in advance of the satisfaction of performance obligations. Deferred revenue is then recognized as the revenue recognition criteria are met. Deferred revenue that will be recognized during the succeeding 12-month period is recorded as current, and the remaining deferred revenue is recorded as non-current. The following table sets forth contract asset and contract liability balances as of December 31, 2023, 2022, and 2021 (in thousands):
| As of December 31,
| 2023 |  | 2022 |  | 2021
Contract assets, current* | $ | 12,052 |  |  | $ | 12,540 |  |  | $ | 12,515 |
Contract assets, non-current* | 915 |  |  | 1,720 |  |  | 1,492 |
Total contract assets | $ | 12,967 |  |  | $ | 14,260 |  |  | $ | 14,007 |
Deferred revenue, current | $ | 235,992 |  |  | $ | 194,768 |  |  | $ | 150,169 |
Deferred revenue, non-current | 4,700 |  |  | 5,556 |  |  | 2,430 |
Total contract liabilities | $ | 240,692 |  |  | $ | 200,324 |  |  | $ | 152,599 |
* Current and non-current contract assets are reported as components of the ‘Prepaid expenses and other current assets’ and ‘Other assets’ line items, respectively, in our consolidated balance sheets. Revenue recognized from amounts included in contract liabilities at the beginning of the period totaled $196.5 million, $147.0 million, and $114.2 million for the years ended December 31, 2023, 2022 and 2021, respectively. Accounts receivable, net of allowance, as of December 31, 2021 was $130.0 million. Transaction Price Allocated to the Remaining Performance Obligations As of December 31, 2023, we had an aggregate transaction price of $489.7 million allocated to unsatisfied performance obligations. We expect to recognize $310.9 million of this balance as revenue over the next 12 months with the remaining amount recognized thereafter.

X
- References No definition available. + Details
Name: | us-gaap_RevenueFromContractWithCustomerAbstract
Namespace Prefix: | us-gaap_
Data Type: | xbrli:stringItemType
Balance Type: | na
Period Type: | duration

X
- Definition The entire disclosure of revenue from contract with customer to transfer good or service and to transfer nonfinancial asset. Includes, but is not limited to, disaggregation of revenue, credit loss recognized from contract with customer, judgment and change in judgment related to contract with customer, and asset recognized from cost incurred to obtain or fulfill contract with customer. Excludes insurance and lease contracts. + References Reference 1: http://www.xbrl.org/2003/role/disclosureRef -Topic 606 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 9 -Publisher FASB -URI https://asc.fasb.org//1943274/2147479806/606-10-50-9 Reference 2: http://www.xbrl.org/2003/role/disclosureRef -Topic 606 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 10 -Publisher FASB -URI https://asc.fasb.org//1943274/2147479806/606-10-50-10 Reference 3: http://www.xbrl.org/2003/role/disclosureRef -Topic 606 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 15 -Publisher FASB -URI https://asc.fasb.org//1943274/2147479806/606-10-50-15 Reference 4: http://www.xbrl.org/2003/role/disclosureRef -Topic 606 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 12 -Subparagraph (a) -Publisher FASB -URI https://asc.fasb.org//1943274/2147479806/606-10-50-12 Reference 5: http://www.xbrl.org/2003/role/disclosureRef -Topic 606 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 12 -Subparagraph (b) -Publisher FASB -URI https://asc.fasb.org//1943274/2147479806/606-10-50-12 Reference 6: http://www.xbrl.org/2003/role/disclosureRef -Topic 606 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 12 -Subparagraph (c) -Publisher FASB -URI https://asc.fasb.org//1943274/2147479806/606-10-50-12 Reference 7: http://www.xbrl.org/2003/role/disclosureRef -Topic 606 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 12 -Subparagraph (d) -Publisher FASB -URI https://asc.fasb.org//1943274/2147479806/606-10-50-12 Reference 8: http://www.xbrl.org/2003/role/disclosureRef -Topic 606 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 12 -Subparagraph (e) -Publisher FASB -URI https://asc.fasb.org//1943274/2147479806/606-10-50-12 Reference 9: http://www.xbrl.org/2003/role/disclosureRef -Topic 606 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 13 -Subparagraph (b)(2) -Publisher FASB -URI https://asc.fasb.org//1943274/2147479806/606-10-50-13 Reference 10: http://www.xbrl.org/2003/role/disclosureRef -Name Accounting Standards Codification -Topic 606 -Publisher FASB -URI https://asc.fasb.org//606/tableOfContent + Details
Name: | us-gaap_RevenueFromContractWithCustomerTextBlock
Namespace Prefix: | us-gaap_
Data Type: | dtr-types:textBlockItemType
Balance Type: | na
Period Type: | duration