BACKGROUND
Strategy Distribution Services can deliver subscriptions for reports and dashboards to thousands of users at a time. In many cases when large batches of subscriptions run at once, large numbers of the subscriptions are for the same report or dashboard to be delivered to multiple different recipients. Prior to Strategy 10.11, an individual Intelligence Server job would be created for each recipient receiving the reports or dashboards, meaning that the Intelligence Server would be running multiple redundant jobs generating the same content. For example, with a subscription that delivers the same report to 1000 recipients that all have the same security filter, 1000 separate jobs will be created on the Intelligence Server. Even if the jobs are making use of report caching, the time that it takes to execute them can result in poor performance and delays in users receiving the deliveries. This behavior is described in the following KB article:
KB26294: When the email subscription delivered to multiple recipients is triggered, there are multiple jobs created and queried against data warehouse concurrently if the report cache is not enabled in Strategy Distribution Service 10.x
NEW FEATURE
Beginning in Strategy 10.11, when a Distribution Services Subscription will deliver the same content to multiple users, the Intelligence Server will "bucket" the jobs together into a single execution and re-use the results to deliver to all recipients. Continuing the above example where the same report is being delivered to 1000 users, the report will now only have to run once instead of 1000 times. This will reduce the overall load on the Intelligence Server machine by drastically reducing the number of jobs that must be processed, resulting in shorter delivery times and freeing up resources for ad-hoc executions.
In cases where some different recipients would not receive the same results (i.e. with different security filters, etc.), separate recipient buckets will be created for each different set of results, and one job will run per bucket.
NOTE
When a bucketed job is being run by the Intelligence Server, the job that is displayed in job monitor will display a user randomly selected from the recipient bucket that the job belongs to.
The Distribution Services > Delivery Trace may be used to view detailed logging information regarding bucketed subscriptions:
2017-12-01 03:56:17.279 [HOST:testmachine][SERVER:CastorServer][PID:3552][THR:4712][Distribution Service][Delivery Trace][MSIDeliveryEngineMain.cpp:Delivery at line:365] Delivery Engine: there are 3 subscriptions bucketed together. 2017-12-01 03:56:17.280 [HOST:testmachine][SERVER:CastorServer][PID:3552][THR:4712][Distribution Service][Delivery Trace][MSIDeliveryEngineMain.cpp:Delivery at line:371] Delivery Engine: leader subscription: <Subscription 'ReportA 11/29/17 9:19:35 AM' (ID = 6ECDE13D45BFE237CE1A82BE65C59EF1), Contact 'User_A2' (ID = 0857CE8E480A2E48B5E8EC9254A74291) Schedule Execution ID = 4079F6074DE9B71DD6F12687D0DFC22B> 2017-12-01 03:56:17.280 [HOST:testmachine][SERVER:CastorServer][PID:3552][THR:4712][Distribution Service][Delivery Trace][MSIDeliveryEngineMain.cpp:Delivery at line:380] Delivery Engine: bucketed subscription <1>: <Subscription 'ReportA 11/29/17 9:19:35 AM' (ID = 1CBF74F4458A6BC64B190F96142214B8), Contact 'User_A3' (ID = 96D83C2C4E9F8DCBCA3D899E1B0678A2) > 2017-12-01 03:56:17.281 [HOST:testmachine][SERVER:CastorServer][PID:3552][THR:4712][Distribution Service][Delivery Trace][MSIDeliveryEngineMain.cpp:Delivery at line:380] Delivery Engine: bucketed subscription <2>: <Subscription 'ReportA 11/29/17 9:19:35 AM' (ID = DD9207A0449A13D7A2597DB3DBE941F2), Contact 'User_A1' (ID = D0306542426C4DE2C753A5B9981B246D) >
KB440746