<style>p { margin: 0; }span.fr-emoticon.fr-emoticon-img { background-repeat: no-repeat !important; font-size: inherit; height: 1em; width: 1em; min-height: 20px; min-width: 20px; display: inline-block; margin: -0.1em 0.1em 0.1em; line-height: 1; vertical-align: middle; } span.fr-emoticon { font-weight: normal; font-family: "Apple Color Emoji", "Segoe UI Emoji", "NotoColorEmoji", "Segoe UI Symbol", "Android Emoji", "EmojiSymbols"; display: inline; line-height: 0; } blockquote { border-left: solid 2px #5e35b1; color: #5e35b1; margin-left:0; padding-left:5px;}blockquote blockquote{ border-color: #00bcd4; color: #00bcd4;}blockquote blockquote blockquote{ border-color: #43a047; color: #43a047;} table.grid{ border-collapse: collapse;} table.grid td, table.grid th { border: 1px solid #ddd;} .fr-fic.fr-dib{ display: block; margin: 5px auto;}.fr-fic.fr-dib.fr-fir{ text-align: right; margin: 5px 0 5px auto;}.fr-fic.fr-dib.fr-fil{ text-align: left; margin: 5px auto 5px 0;}.fr-fic.fr-dii{ float: none; margin: 5px auto;}.fr-fic.fr-dii.fr-fil{ float: left; margin: 5px auto;}.fr-fic.fr-dii.fr-fir{ float: right; margin: 5px auto;}img.fr-dib.fr-fir { margin-right: 0; text-align: right;}img.fr-dib.fr-fil { margin-left: 0; text-align: left;}img.fr-dib { margin: 5px auto; display: block; float: none;}img.fr-bordered { box-sizing: content-box; border: solid 5px #CCC;}img.fr-shadow { box-shadow: 10px 10px 5px 0px #cccccc;}img.fr-rounded { border-radius: 10px; -moz-border-radius: 10px; -webkit-border-radius: 10px; -moz-background-clip: padding; -webkit-background-clip: padding-box; background-clip: padding-box;}</style><style>
p {
margin: 0;
}
span.fr-emoticon.fr-emoticon-img {
background-repeat: no-repeat !important; font-size: inherit; height: 1em; width: 1em; min-height: 20px; min-width: 20px; display: inline-block; margin: -0.1em 0.1em 0.1em; line-height: 1; vertical-align: middle;
}
span.fr-emoticon {
font-weight: normal; font-family: "Apple Color Emoji", "Segoe UI Emoji", "NotoColorEmoji", "Segoe UI Symbol", "Android Emoji", "EmojiSymbols"; display: inline; line-height: 0;
}
blockquote {
border-left: solid 2px #5e35b1; color: #5e35b1; margin-left: 0; padding-left: 5px;
}
blockquote blockquote {
border-color: #00bcd4; color: #00bcd4;
}
blockquote blockquote blockquote {
border-color: #43a047; color: #43a047;
}
table.grid {
border-collapse: collapse;
}
table.grid td,
table.grid th {
border: 1px solid #ddd;
}
.fr-fic.fr-dib {
display: block; margin: 5px auto;
}
.fr-fic.fr-dib.fr-fir {
text-align: right; margin: 5px 0 5px auto;
}
.fr-fic.fr-dib.fr-fil {
text-align: left; margin: 5px auto 5px 0;
}
.fr-fic.fr-dii {
float: none; margin: 5px auto;
}
.fr-fic.fr-dii.fr-fil {
float: left; margin: 5px auto;
}
.fr-fic.fr-dii.fr-fir {
float: right; margin: 5px auto;
}
img.fr-dib.fr-fir {
margin-right: 0; text-align: right;
}
img.fr-dib.fr-fil {
margin-left: 0; text-align: left;
}
img.fr-dib {
margin: 5px auto; display: block; float: none;
}
img.fr-bordered {
box-sizing: content-box; border: solid 5px #CCC;
}
img.fr-shadow {
box-shadow: 10px 10px 5px 0px #cccccc;
}
img.fr-rounded {
border-radius: 10px; -moz-border-radius: 10px; -webkit-border-radius: 10px; -moz-background-clip: padding; -webkit-background-clip: padding-box; background-clip: padding-box;
}
</style><p><strong>In this guide we will cover:</strong></p><p><strong>- What is Azure consumption billing?</strong></p><p><strong>- Configuring Azure Consumption Billing</strong></p><p><strong>- Setting up invoices to use Azure consumption data</strong></p><p><strong>- Setting up Invoices to use Azure Reserved Instances Data</strong></p><p><br></p><p><br></p><p><strong>Related Guides:</strong></p><ul><li><a href="https://usehalo.com/halopsa/guides/1189/" target="_blank" rel="noopener noreferrer"><strong>The CSP Integration</strong></a></li><li><a href="https://usehalo.com/halopsa/guides/1978/" target="_blank" rel="noopener noreferrer"><strong>Products</strong></a></li></ul><p><strong><br></strong></p><p><strong>Pre-requisites: </strong></p><ul><li><em>You must be on v2.176 or above of Halo</em></li><li style="font-style: italic;"><em>A Tier 1/Direct Microsoft Partner</em></li><li><em>Microsoft CSP integration already successfully setup </em></li></ul><p><br></p><p><br></p><p id="isPasted"><strong><span style="font-size: 14pt;">What is Azure consumption billing?</span></strong></p><p>Azure consumption billing in Halo allows you to sync cost and consumption data for Azure services from Microsoft CSP into Halo so you can create invoices for customer's Azure usage within Halo. Line quantities will be automatically calculated using this consumption data. This allows you to have invoice line quantity and prices calculated automatically in Halo, based on customers actual usage of Azure services. </p><p><br></p><p>Azure reserved instances billing in Halo allows you to sync Azure reserved instance cost data from Microsoft CSP into Halo so you can create invoices for these reserved instances in Halo. Line prices will automatically be calculated based on data from CSP. </p><p><br></p><p>This functionality is used in conjunction with the Microsoft CSP integration, we have a separate guide on how to set this integration up <a data-fr-linked="true" href="https://usehalo.com/halopsa/guides/1189" id="isPasted" target="_blank" rel="noopener noreferrer"><strong>here</strong></a>. This should be completed before configuring Azure Consumption Billing. </p><p><br></p><p><strong><span style="font-size: 14pt;">Configuring Azure Consumption Billing</span></strong></p><p><em>Additional Application Level Permission required:</em></p><ul><li style="font-style: italic;"><em> PartnerBilling.Read.All </em></li></ul><p>This permission needs to be added to the Azure app registration your are using to authorise your Microsoft CSP integration. It will need to be added to the Graph API permissions (Application) as it is an application permission. </p><p><br></p><p>Once the permission is added to the app registration you will need to re-generate a new secret for the application and paste this into the 'Azure Application Secret' field under your Microsoft CSP tenant in Halo. </p><p><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6ImFkY2YwODI1LTU1YTMtNDJhNC1iZDI2LTkxZGU4ZmZhMGRhMiJ9.Md63H0KiUDVilauwU0oJKnc0WZZFr8o2ls-aYX-mPBY" class="fr-fic fr-fil fr-dib" width="960" style="width: 962px; height: 711.386px;" height="711"></p><p><strong><span style="font-size: 10pt;">Fig 1. Azure application secret field</span></strong></p><p><br></p><p>Now you will need to enable Azure consumption billing for all your CSP tenants. Head to configuration > integrations > Microsoft CSP >Azure consumption billing tab, enable 'Enable Azure Consumption Billing'. </p><p><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjY1NjVlMTdmLTI0MGYtNDUzYy04MjRlLTFmNGZhMTNiNjk5MSJ9.PBQ-GMwh7bEuErpqqnao0wS6mgg5dHwswZEjjpyTLQA" class="fr-fic fr-fil fr-dib" width="1000" style="width: 1002px; height: 416.356px;" height="416"></p><p><strong><span style="font-size: 10pt;">Fig 2. Enable Azure consumption Billing</span></strong></p><p><br></p><p>Once enabled you will see some additional options available to set mark-ups. </p><p><br></p><p><strong>Azure Consumption Billing Mark-up (%</strong>) - The value entered here will be the default mark-up<span style="color: rgb(0, 0, 0); font-family: sans-serif; font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; display: inline !important; float: none;" id="isPasted"> </span>that is applied to the invoice for Azure consumption (this can be overridden per line).</p><p><span style="color: rgb(0, 0, 0);"><strong>Azure Consumption Billing Additional Cost (After mark-up is applied) </strong>- Here you can set a fixed value that will be added onto the Azure consumption invoice. This value will be added on top of the mark-up after the mark-up is applied (this value will not be included in mark-up calculation). This can also be set per customer by setting the additional cost on the invoice line. </span></p><p><br></p><p><strong>Azure Reserved Instances Markup (%) </strong>- The value entered here will be the default mark-up that is applied to the invoice for Azure reserved instances. (This can be overridden per customer).</p><p id="isPasted"><strong>Azure Reserved Instances Additional Cost (After mark-up is applied)</strong> - Here you can set a fixed value that will be added onto the invoice for Azure reserved instances. This value will be added on top of the mark-up after the mark-up is applied (this value will not be included in mark-up calculation).</p><p><br></p><p>Now navigate into one of your CSP tenants > Halo Integrator tab. In the 'Entities to import' field consumption billing can now be added as an entity.</p><p><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6Ijc0OGRhNzZjLTVlNmItNGFkNi05ZTUzLTQ5ZjVhZGNiZTc4NSJ9.RzIdIibbBSty3DfCNcHe87nuuV1Z7p_o2AoVj0nUsLA" class="fr-fic fr-fil fr-dib" width="991" style="width: 993px; height: 274.815px;" height="275"></p><p><strong><span style="font-size: 10pt;">Fig 3. Import consumption billing data </span></strong></p><p><br></p><p>This will import Azure consumption data on a scheduled basis, the import will take place each time the Halo integrator runs for the CSP integration. </p><p><br></p><p>The 'CSP' invoices tab stores the cost and consumption data imported from CSP. Here you can see a log for the invoice that has been imported and the invoice date. </p><p><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjNkMDVmZGRkLTJkZmEtNGZmOS05ODVmLTkxZDczZjNlZjE0YyJ9.DfzUwlUJY7Va0S1UVvW-Dz8S70K-QwiWksK0S0sicjQ" class="fr-fic fr-fil fr-dib" width="1300" style="width: 1302px; height: 253.116px;" height="253"></p><p><strong><span style="font-size: 10pt;">Fig 4. Invoices imported from CSP</span></strong></p><p><br></p><p>This data can be marked as 'billed' by right-clicking on the invoices in the list. This entry will then be excluded from consumption calculations.</p><p><br></p><p><strong>Viewing consumption Data</strong></p><p>CSP invoices and consumption data can also be viewed per customer under the customer profile, under the tabs 'CSP invoices' and 'Azure Consumption Billing'. These customer specific entries can also be set to be excluded from consumption calculations here by right-clicking on the entry under 'CSP invoices' and marking it as 'billed'.</p><p><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjI5MmUyNzQwLTE1M2ItNGI1Yy05MDFkLTg3MDc4MjEyY2E0NyJ9.YbdB_0-34fcbzHF_EdbA13Z9kM0FYiTMrIMJF5LTEEY" class="fr-fic fr-fil fr-dib" width="1578" style="width: 1580px; height: 133.053px;" height="133"></p><p><strong><span style="font-size: 10pt;">Fig 5. Viewing Azure consumption data against a customer</span></strong></p><p><br></p><p><span style="font-size: 11pt;">Under the 'CSP Invoices' tab you will also be able to see if an invoice for a particular customer has been fully imported, and if it has been fully billed. From here, you can mark the customer's CSP invoice as being fully billed. Only consumption entries against 'unbilled' CSP invoices will be included in consumption calculations for the customer, therefore if there are any invoices you do not want to bill for (if they have already been billed elsewhere), ensure they are marked as billed. <br></span></p><p><br></p><p>The 'Azure Consumption Billing' tab will show a breakdown of the consumption usage for the customer. Details of the breakdown can be seen in figure 5. </p><p><br></p><p>Now consumption data will be imported from CSP on a regular basis. If you have other CSP tenants remember to set this up for each tenant.</p><p><br></p><p><strong><span style="font-size: 14pt;">Setting up invoices to use Azure consumption data</span></strong></p><p>The consumption data received from CSP is used to calculate the price and quantity of the 'item' on the invoice line the customer should be billed for. Therefore, to bill a customer for their Azure consumption you will need to create a recurring invoice for a customer with a line set to calculate quantity based on Azure consumption. </p><p><br></p><p>To do this create a new recurring invoice, or add a line to an existing recurring invoice. You will likely want to create a new item called something like 'Azure Services', this item will need to be recurring and leave the cost/price blank as the price will be calculated later. </p><p><br></p><p>Then edit the line and set the 'Quantity' field to be 'Calculate quantity from Azure Consumption Billing' </p><p><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6ImI3NGJhNzNjLTc3Y2UtNDFjMC04ZTVhLTBlMTNiYmE4N2E2NiJ9.wvqesm4Slgx_htKG_t0bMk73fkGgv14ndgnVkL7AzFc" class="fr-fic fr-fil fr-dib" width="985" style="width: 987px; height: 475.326px;" height="475"></p><p><strong><span style="font-size: 10pt;">Fig 6. Set line quantity to be calculated by Azure consumption </span></strong></p><p><br></p><p>This will link this line to the customer's Azure services consumption. You will only need to configure one recurring invoice line to invoice the customer for all the Azure services they use.</p><p><br></p><p>You will then be able to set the 'Azure Consumption Billing Line Creation Type'. This determines how the services are shown on the invoice, that is how they are grouped/divided.</p><p><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjZhOTcwYjc1LTk3NDctNDc1Ny04NjYzLWYzNThmOGU0MGE5NyJ9.cAuCqFH16IEZWocw6WhkbzbxjuORJeG_YrQC7be6X6I" class="fr-fic fr-fil fr-dib" width="480" style="width: 482px; height: 224.478px;" height="224"></p><p><strong><span style="font-size: 10pt;">Fig 7. Billing line creation type</span></strong></p><p><br></p><p><strong>Merge all into one line</strong> - When selected all the Azure services the customer uses will be merged and display on a single invoice line. The price of the invoice line will be the total price for all services/resources used.</p><p><strong>Split by subscription ID</strong> - When selected an invoice line will be created for each Azure subscription the customer has. The customer will be able to see the price per subscription they have used.</p><p style="box-sizing: inherit; margin: 0px; line-height: 1.4285em;" id="isPasted"><strong>Split by resource group</strong> - When selected an invoice line will be created for each Azure resource group. Each service within a group will be totalled and the customer will be able to see the price per group of resource they use.</p><p><br></p><p>Additional mark-ups and costs can also be applied here. This mark-up will apply to all the Azure subscriptions/services this customer uses. The mark-up and additional cost set here will override the defaults set earlier on the CSP integration module in figure 2, allowing you to set customer specific mark-ups and additional costs.</p><p><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6ImQ0MTY1ZWFmLWM0MTMtNGE4Ni1iYWZlLTUzMDM2YzE3NmY0NSJ9.b9i9KagKO39kMyTf-EtjsQJzV7vn6HOtfqniK6-ceqk" class="fr-fic fr-fil fr-dib" width="307" height="115"></p><p><strong><span style="font-size: 10pt;">Fig 8. Additional Mark-up and cost </span></strong></p><p><br></p><p>Once this is set save the invoice line. </p><p><br></p><p>Now each time an invoice is created from this recurring invoice lines will be added and automatically calculated to reflect Azure consumption. The number of invoice lines that represent Azure consumption will depend on the setting selected in figure 5.</p><p><br></p><p><strong><span style="font-size: 14pt;">Setting up Invoices to use Azure Reserved Instances Data</span></strong></p><p>To bill a customer for their Azure consumption you will need to create a recurring invoice for a customer with a line set to calculate quantity based on Azure Reserved Instances.</p><p><span style="color: rgb(0, 0, 0);"> </span></p><p id="isPasted">To do this create a new recurring invoice, or add a line to an existing recurring invoice. You will likely want to create a new item called something like 'Azure Reserved Instances', this item will need to be recurring and leave the cost/price blank as the price will be calculated later. </p><p><br></p><p id="isPasted">Then edit the line and set the 'Quantity' field to be 'Calculate quantity from Azure Reserved Instances' </p><p><br></p><p id="isPasted">You will then be able to set the 'Azure Reserved Instances Line Creation Type'. This determines how the services are shown on the invoice, that is how they are grouped/divided.</p><p><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjdjNzdlYjg3LTE3NzAtNDk0OC1hOWJhLWZmOGNmY2Q3MzkzZSJ9.4HLSzNAesxAXV5htbv4jpu9CR7t4IqANWMrz96-atjs" class="fr-fic fr-fil fr-dib" width="534" height="182"></p><p><strong><span style="font-size: 10pt;">Fig 9. Creation type for Azure reserved instances</span></strong></p><p><br></p><p><strong>Merge all into one line -</strong> When selected all the Azure reserved instance subscriptions the customer uses will be merged and display on a single invoice line. The price of the invoice line will be the total price for all subscriptions used. </p><p id="isPasted"><strong>Split by subscription ID -</strong> When selected ana invoice line will be created for each Azure reserved instance subscription the customer has. The customer will be able to see the price per subscription they have used. </p><p><br></p><p id="isPasted">Additional mark-ups and costs can also be applied here. This mark-up will apply to all the Azure subscriptions/services this customer uses. The mark-up and additional cost set here will override the defaults set earlier, allowing you to set customer specific mark-ups and additional costs. </p><p><br></p><p id="isPasted">Once this is set save the invoice line. Now each time an invoice is created from this recurring invoice, lines will be added and automatically calculated to reflect Azure Reserved Instances. The number of invoice lines that represent Azure Reserved instances will depend on the setting selected in figure 9. </p>