A specific platform module is in charge of collecting, with a configurable granularity (e.g. daily), the costs/revenues relating to all the pre-paid and pay-per-use services sold through the marketplace.
This provides benefits for different actors:
- platform owner can invoice all the end-customers at the same time, regardless their subscriptions lifecycle, by using an external Invoicing Platform
- end-customers can leverage a live costs previews functionality on their private Dashboards (of course, in this case, the default invoices list functionality would be disabled)
The default functioning of Cloudesire is to staticize incomes related to:
on a dedicated data-structure, named proceeds, which contains:
- pre-paid incomes, that will be generated at the beginning of each billing period of the related subscription
- post-paid (pay-per-use) incomes, that will be generated at the end of each billing period of the related subscription
based on the billing frequency (monthly, bimonthly, yearly, etc.) of the running subscriptions, Cloudesire aggregates all the proceeds' rows related to each subscription, and periodically generates the related invoices to be issued to the end-customers.
If the Distribution and Channel Management module is active, the proceeds' rows will be accordingly markupped along the parent-child chain:
- Parent will markup the vendor costs (previously specified by the Vendors) by configuring the wholesale prices for Distributors
- Distributors will markup the wholesale prices (previously specified by the Parent) by configuring the sell-in prices for Resellers
- Resellers will markup the sell-in prices (previously specified by the Distributors) by configuring the sell-out prices for end-customers
as a consequence, the invoices' rows will include the sell-out prices.
Conventionally, Cloudesire directly invoices the end-customers, accordingly to their running subscriptions' billing-cycles. This implies that "every day" a certain number of invoices will be automatically generated by the platform.
In some specific use-cases, the platform owner could not be interested in using the Cloudesire Invoicing Engine for different reasons, like for example:
- he wants to leverage an external Invoicing Platform
- he wants to schedule the invoicing, for all the end-users at the same time, by following a custom calendar (e.g. the first day of each month)
In those scenarios, the platform can be specially configured to:
- not directly invoice the end-users
- calculate, for each running subscription, the "proportional daily quota" of their related costs/incomes
- storicize, on a live-proceeds data-structure, the raw data
- allows a 3rd-party to retrieve the collected values via API
A typical approach to fulfill the previous use-cases, it would be to implement an API integration between the external Invoicing Platform and Cloudesire in order to retrieve the live-proceeds collected in a certain timeframe (e.g. the previous month).
Special behavior for Public Tenants and Cloud Services
Public Tenants (AWS, GCE, Azure) and Cloud Services require special handling in the live-reporting approach.
Please, note that those kind of products don't require to pre-configure the classical pricing model based on license-prices plus pre-paid and/or pay-per-use extra-resources.
When a public tenant is provisioned for an end-customer, the platform periodically collects all the costs related to his subscription by invoking the Public Cloud Provider billing/metering engine.
Therefore, for a certain tenant, the platform will collect several types of costs, related to disparate kinds of services which was actually used by the end-customers during the last billing period (e.g. compute instances, storage, network resources, PaaS services, etc.).
By leveraging the Channel Management capabilities, the platform owner (Parent), the Distributors, and the Resellers can apply their respective markups (on-top the collected costs) along the chain.
Setup procedure of the wholesale/sell-in/out markups for Public Tenants and Cloud Services is quite simple: a generic cost-placeholder can be configured on the product-plans, and all the following markups configurations can be done on it.
During the periodical cost-collection task, Cloudesire invokes the Public Cloud Provider APIs and retrieves:
- resource/service hourly unit-cost -> this will be mapped as "vendor cost" in the Cloudesire data-model
- resource/service hourly unit-street-price -> this will be mapped as "wholesale price" in the Cloudesire data-model
- resource/service usage time -> this will be stored, multiplied by its related street-price, in a "proceeds row"
Another (optional) platform configuration can be used to apply a flat discount (e.g. 2%) on all the retrieved unit-street-prices. This allows to model special commercial agreements that a CSP could have been signed with the platform owner.
As a consequence, all the following markups, which are configured on the above mentioned generic cost-placeholder, will be applied starting from the wholesale price (namely the optionally discounted street prices) down to the chain, in order to calculate the final sell-out prices to be applied to the end-customers.