Usage reporting example

Updated: March 6, 2020

This example demonstrates a script that will report usage for contracts with his providers. In this example we report usage reports for a product with Quantity Schema

require_once "vendor/autoload.php";
class UploadUsage extends \Connect\UsageAutomation
public function processUsageForListing($listing)
//Detect concrete Provider Contract
if($listing->contract->id === 'CRD-41560-05399-123') {
//This is for Provider XYZ, also can be seen from $listing->provider->id and parametrized further via marketplace available at $listing->marketplace->id
date_default_timezone_set('UTC'); //reporting must be always based on UTC
$usages = [];
//Creating QT SCHEMA records, pplease check Connect\Usage\FileUsageRecord for further possible data to be passed
array_push($usages, new Connect\Usage\FileUsageRecord([
'record_id' => 'unique record value',
'item_search_criteria' => 'item.mpn', //Possible values are item.mpn or item.local_id
'item_search_value' => 'SKUA', //Value defined as MPN on vendor portal
'quantity' => 1, //Quantity to be reported
'start_time_utc' => date('d-m-Y H:i:s', strtotime("-1 days")), //From when to report
'end_time_utc' => date("Y-m-d H:i:s"), //Till when to report
'asset_search_criteria' => 'parameter.param_b', //How to find the asset on Connect, typical use case is to use a parameter provided by vendor, in this case called param_b, additionally can be used in case you want to use Connect identifiers
'asset_search_value' => 'tenant2'
$usageFile = new \Connect\Usage\File([
"period" => [
"from"=> date('Y-m-d H:i:s', strtotime("-1 days")),
"to"=> date("Y-m-d H:i:s")
'product' => new \Connect\Product(
['id' => $listing->product->id]
'contract' => new \Connect\Contract(
['id' => $listing->contract->id]
$this->usage->submitUsage($usageFile, $usages);
return "processing done"
//Do Something different
//Main Code Block
try {
$usageAutomation = new UploadUsage();
} catch (Exception $e) {
print "Error processing usage for active listing requests:" . $e->getMessage();
Is this page helpful?
Translate with Google
Copied to clipboard