Browse Guides

Adding Dashboards to Custom Tabs
Reading mode
Copy Link
Link Copied!
Print
Feedback
This guide has multiple versions available:
<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><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><div><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><div><div><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><div><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><div><div><div><div><div><div><div><div><div><div><div><div><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><div><p><span style="font-size: 11pt;"><strong>In this guide we will cover:</strong></span></p><p><span style="font-size: 11pt;"><strong>- Creating a Custom Tab that displays a Dashboard</strong></span></p><p><span style="font-size: 11pt;"><strong>-&nbsp;</strong><strong>Filtering the dashboard to only show data for the customer/user/site it is under</strong></span></p><p><br></p><p><strong><br></strong></p><p><strong><span style="font-size: 11pt;">Admin Guides:</span></strong></p><ul><li style="font-weight: bold; font-size: 11pt;"><a data-fr-linked="true" href="https://usehalo.com/haloitsm/guides/1437/" id="isPasted" target="_blank" rel="noopener noreferrer"><strong>Custom Tabs</strong></a></li></ul><p><strong><br></strong></p><p><strong><span style="font-size: 14px;">The following entities can have a custom tab against them containing a dashboard:</span></strong></p><p><br></p><ul><li><span style="font-size: 14px;">Tickets</span></li><li><span style="font-size: 14px;">Customers</span></li><li><span style="font-size: 14px;">Sites</span></li><li><span style="font-size: 14px;">Users</span></li><li><span style="font-size: 14px;">Contract</span></li><li><span style="font-size: 14px;">Sales Orders&nbsp;</span></li><li><span style="font-size: 14px;">Purchase Orders</span></li><li><span style="font-size: 14px;">Quotes</span></li><li><span style="font-size: 14px;">Invoices</span></li><li><span style="font-size: 14px;">Distribution List (<span style="font-size: 14px;" data-pasted="true"><span style="font-size: 14px;" data-pasted="true"><span style="font-size: 14px;" data-pasted="true"><span style="font-size: 14px;" data-pasted="true">v2.232.1+</span></span></span></span>)</span></li><li><span style="font-size: 14px;">Suppliers (<span style="font-size: 14px;" data-pasted="true"><span style="font-size: 14px;" data-pasted="true"><span style="font-size: 14px;" data-pasted="true"><span style="font-size: 14px;" data-pasted="true">v2.234.1+</span></span></span></span>)</span></li></ul><p><br></p><p><span style="font-size: 14pt;"><strong>Creating a Custom Tab that displays a Dashboard&nbsp;<br></strong></span></p><p><span style="font-size: 14px;">Head to Configuration &gt; Custom Objects &gt; Custom Tabs &gt; select an entity &gt; New &gt; Details tab, set the &#39;Type&#39; field to &#39;Dashboard&#39;. Now you will have the option to configure the dashboard that displays under this tab.</span></p><p><span style="font-size: 14px;"><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjZjMjhjZTc0LTZiMmItNDFiNC1hZmUwLTBkYWJjODZjYWFmZSJ9.Eh5PyMw3WlOjZx083EUoU0rMOtDcNy5t_VOamanPF1A" class="fr-fic fr-fil fr-dib" width="902" height="599"></span><br></p><p><span style="font-size: 10pt;"><strong>Fig 1. Custom tab setup for dashboard</strong></span></p><p><span style="font-size: 14px;"><br></span></p><p><span style="font-size: 14px;">For all entities excluding tickets, once saved, this tab will appear against the entity you have created it for. For example, if you have created it against customers, this tab will appear under all your customer profiles. However, if you create it against tickets you will need to enable this tab against the ticket types you would like it to appear on.&nbsp;</span></p><p><br></p><p><span style="font-size: 12pt;"><strong>How to Set Custom Tabs Display for Tickets<br></strong></span></p><p><span style="font-size: 14px;">Once you have created a custom tab for the tickets entity you will need to set which ticket types this tab shows on. Allowing you to create various tabs specific to different ticket types. To do this head to Configuration &gt; Tickets &gt; Ticket Types &gt; select a ticket type you would like the tab on &gt; Allowed Values &gt; Custom Tabs section.</span></p><p><br></p><p><span style="font-size: 14px;">Here you have the option to &#39;Allow all Custom Tabs&#39;, if enabled will show all the custom tabs you have created for tickets. If you do not allow all custom tabs, you can add the allowed tabs into the table below, only tabs in this table will appear on this ticket type.&nbsp;</span></p><p><span style="font-size: 14px;"><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjQyMmE1ODk5LWI3MmQtNDViNy1iM2ViLWI2ZjIwMzVlNjgyNiJ9.CwjJB6LwIWbd9jzn7HYgJ-ayf8xcp_TlYUZS0rhUQPU" class="fr-fic fr-fil fr-dib" width="1124" style="width: 1126px; height: 327.867px;" height="328"></span></p><p data-pasted="true"><span style="font-size: 10pt;"><strong>Fig 2. Allowed custom tabs against a ticket type</strong></span></p><p><br></p><p><span style="font-size: 11pt;"><strong><em>Note: Setting the visibility of a custom ticket tab this way does not apply to tabs that have the &quot;Type&quot; &quot;Fields&quot;. For information on how to make tabs of this type visible against tickets see our guide&nbsp;</em></strong></span><span style="font-size: 11pt;"><a href="https://usehalo.com/haloitsm/guides/2039" target="_blank" rel="noopener noreferrer"><strong><em>here</em></strong></a></span><span style="font-size: 11pt;"><strong><em>.&nbsp;</em></strong></span><em><span style="font-size: 11pt;"><br></span></em></p><p><span style="font-size: 14px;"><br></span></p><p><span style="font-size: 12pt;"><strong>How to Configure the Dashboard</strong></span></p><p><span style="font-size: 14px;">We can now configure the dashboard that will appear under this tab. To do this, hit &#39;Configure Dashboard&#39; within the custom tab setup, this will bring up the dashboard configuration screen. Here you can either configure your dashboard from scratch, or import an existing one.&nbsp;</span></p><p><br></p><p><span style="font-size: 14px;"><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6ImVmMTAzNjFlLTVkMTctNDYxMy1hYjc1LWU4NDU0MjYzMjJjYSJ9.sPgNJj6TsGHStsDiJ_l1gomE_8ii_OhW9O1mMzus6bU" class="fr-fic fr-fil fr-dib" width="609" height="507"></span></p><p><span style="font-size: 10pt;"><strong>Fig 3. Configure Dashboard button&nbsp;</strong></span></p><p><br></p><p><span style="font-size: 11pt;"><strong>Import an existing dashboard</strong></span></p><p><span style="font-size: 14px;">To do this head to Configuration &gt; Reporting &gt; Dashboards &gt; select the dashboard you would like to copy. Once within the dashboard setup, select &#39;Export to JSON&#39; this will download the JSON for the dashboard to your device as a .txt file. Open this up and copy the JSON.</span></p><p><br></p><p><span style="font-size: 14px;"><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6ImMyOTE4MTc3LWUwOTctNDZkOS05OTJjLWZmNTE4MDA3MzhhMiJ9.4ahMMpK9YmFRiHu0xvH8GVJcxBrnVyACNABmXbv1flo" class="fr-fic fr-fil fr-dib" width="870" height="568"></span><br></p><p><span style="font-size: 10pt;"><strong>Fig 4. Export a dashboard to JSON</strong></span></p><p><span style="font-size: 14px;"><br></span></p><p><span style="font-size: 14px;">Now, head back to the dashboard configuration within your custom tab and select &#39;Import from JSON&#39;. A text box will appear and you will be prompted to input your JSON, paste the JSON we copied earlier. Hit save and you can see all the dashboard widgets have carried over.</span></p><p><br></p><p><span style="font-size: 14px;"><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjEzZjE5NmQ0LTc5MjgtNDQ4NC04YzUwLTAyYTE2MGYyNzY1YyJ9.3ARl3Ghr8zxiiinRG3bdpYhA94y5xOTr2bN0YS8rDnQ" class="fr-fic fr-fil fr-dib" width="732" style="width: 734px; height: 320.578px;" height="321"></span></p><p><span style="font-size: 10pt;"><strong>Fig 5. Import JSON to a dashboard</strong></span></p><p><span style="font-size: 14px;"><br></span></p><p><span style="font-size: 14px;"><strong><em>Note: You cannot import the JSON of a dashboard if the dashboard has a filter against it. This is because dashboard filters cannot be configured against dashboards within custom tabs. You can see if a dashboard has a filter applied by looking at the filter table under the details tab of the dashboard.</em></strong></span></p><p><br></p><p><span style="font-size: 14px;"><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjAzOTMzZjg4LWE5NjUtNDU0OS1iNTliLWJiMTQ1YWU0ODJjOCJ9.tCYrSrSKtJK2OdHJsibww8n-IEjv3XmYBOBdmJ2lQJM" class="fr-fic fr-fil fr-dib" width="1161" style="width: 1163px; height: 625.696px;" height="626"></span></p><p><span style="font-size: 10pt;"><strong>Fig 6. Filter against dashboard</strong></span></p><p><span style="font-size: 14px;"><br></span></p><p><span style="font-size: 14px;">If you receive the error shown below<strong>&nbsp;</strong>when importing the dashboard, this indicates that the dashboard you are importing has a filter against it. You will either need to remove the filter criteria from the JSON, or remove the filter from the dashboard, export the JSON then add the filter back in.&nbsp;</span></p><p><br></p><p><span style="font-size: 14px;"><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjBiYThiYmNiLWI3MzUtNDRiZC1hNGI3LTYwMWRiNTg4MDFjMiJ9.pu1VYm3qnqQL0-juiCexsORuz2XLgS5H8cDKG9HqYJY" class="fr-fic fr-fil fr-dib" style="width: 690px;"></span></p><p><span style="font-size: 10pt;"><strong>Fig 7. Import Error, An error occurred while saving the entity changes. See the inner exception for details.</strong></span></p><p><span style="font-size: 14px;"><br></span></p><p><span style="font-size: 14px;"><strong>Create New Dashboard</strong></span></p><p><span style="font-size: 14px;">If the dashboard that you would like to appear under the custom tab has not yet been created, you can configure this within the custom tab. To do this, select &#39;Configure Dashboard&#39; while within the custom tab, head to layout tab. Here you can add/edit widgets in the same way you would on a normal dashboard. For more information on creating dashboards/widgets see our guide <a data-fr-linked="true" href="https://usehalo.com/haloitsm/guides/1249/" target="_blank" rel="noopener noreferrer">here</a>.</span></p><p><span style="font-size: 18px;"><br></span></p><p><span style="font-size: 18px;"><strong>Filtering the dashboard to only show data for the customer/user/site it is under</strong></span></p><p><span style="font-size: 14px;">If you are using reports that show data across various customers/sites/users in your dashboard you may want to filter the data that appears for a specific entity.</span></p><p><br></p><p><span style="font-size: 14px;">Activity feed widgets will automatically filter and only show data for the customer/user/site you are viewing.</span></p><p><br></p><p><span style="font-size: 14px;">Ticket list and ticket list counter widgets will also automatically filter the data for the customer/user/site you are viewing.</span></p><p><br></p><p><span style="font-size: 14px;">Report data and counters on the dashboard will need to be filtered on the source report.</span></p><p><span style="font-size: 14px;"><br></span></p><p><span style="font-size: 12pt;"><strong>Worked Example 1</strong></span></p><p><span style="font-size: 14px;">I have a revenue and profit report that I would like to be visible on a dashboard, under a custom tab, under each of my customers. However, the report shows revenue and cost for all my customers, when viewing the dashboard, I would like it to only show revenue and cost for the customer that I am currently viewing. See appendix, figure 1A, for report script.&nbsp;</span></p><p><span style="font-size: 14px;"><br></span></p><p><span style="font-size: 14px;">To do this, I will need to apply a filter to the report that the dashboard widget is coming from, using a variable for the customer. I will add the following to the report:</span></p><p><span style="font-size: 14px;"><br></span></p><div><span style="font-size: 14px;">where&nbsp;aarea&nbsp;=&nbsp;$clientid</span></div><p><span style="font-size: 14px;"><br></span></p><p><span style="font-size: 14px;">This will filter the report so that it only shows results where the customer in the report matches the customer I am currently viewing. Note that this filter requires the customer ID (aarea) to be obtained from the report, this means your data source will need to include the customer ID, or you will need to join a table onto your data source that does.&nbsp;</span></p><p><span style="font-size: 14px;"><br></span></p><p><span style="font-size: 14px;">When you preview the report it will only show the data for your organisation as you are not &#39;viewing&#39; a customer yet. Once the report is applied to a widget, in a dashboard, within a custom tab, the results will filter by the customer that the tab is under.&nbsp;</span></p><p><br></p><p><span style="font-size: 14px;"><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjFjYzE4YmQ5LWFjM2YtNDViMi04NjVlLWM2NmJlNGIyMDU4MyJ9.AZDncJd17WQwVBgUIWgZhRC2CwxYmwgYt4px6s4jWEs" class="fr-fic fr-fil fr-dib" style="width: 750px;"></span></p><p><span style="font-size: 10pt;"><strong>Fig 8. Report on dashboard once filter applied</strong></span></p><p><span style="font-size: 14px;"><br></span></p><p><span style="font-size: 12pt;"><strong>Worked Example 2</strong></span></p><p><span style="font-size: 14px;">I have a report showing all feedback that users have left on tickets, I would like this to be visible on a dashboard under a custom tab against each of my users. However, the report shows feedback from all users, when viewing the dashboard I would like it to only show feedback that the user I am viewing has left. See appendix, figure 2A, for report script.&nbsp;</span></p><p><span style="font-size: 14px;"><br></span></p><p><span style="font-size: 14px;">To do this I will need to add the following query to my report:</span></p><p><span style="font-size: 14px;"><br></span></p><div><span style="font-size: 14px;">where&nbsp;userid&nbsp;=&nbsp;$userid</span></div><p><span style="font-size: 14px;"><br></span></p><p><span style="font-size: 14px;">This will filter the report so that is only shows results where the user in the report matches the user I am currently viewing.&nbsp;</span></p><p><span style="font-size: 14px;"><br></span></p><p><span style="font-size: 14px;">If you have multiple widgets on your dashboard, you will need to ensure that all the reports the widgets are using have the desired filter within the script. Note that if you are using these reports for other areas where you would not like them to be filtered, you will need to create a copy of the report which does not have a filter applied in the script. This will ensure you have an original (unfiltered) version and a filtered version for the specific use on the dashboard.&nbsp;</span></p><p><span style="font-size: 14px;"><br></span></p><p><span style="font-size: 14px;">If you would like a more flexible way to filter reports and show reporting data under a custom tab of a customer/site/user you may benefit from using an Iframe within a custom tab. For more information on this see our guide&nbsp;<a href="https://usehalo.com/haloitsm/guides/2265/" target="_blank" rel="noopener noreferrer">here</a>.</span></p><p><br></p><p><span style="font-size: 14px;"><br></span></p><p><span style="font-size: 18px;"><strong>Appendix</strong></span></p><p><span style="font-size: 12pt;"><strong>Figure 1A- Customer overview revenue and Profit report</strong></span></p><p><span style="font-size: 14px;">select aareadesc as [Customer]</span></p><p><span style="font-size: 14px;">,aarea as [IDCustomer],</span></p><p><span style="font-size: 14px;">ihid as [Invoice ID]</span></p><p><span style="font-size: 14px;">,(select fvalue from lookup where fid=28 and fcode=(select chbillingdescription from contractheader where chid=(select c.ihchid from invoiceheader c where INVOICEHEADER.IHrecurringInvoiceId=ihid))) as [Contract Ref]</span></p><p><span style="font-size: 14px;">,(select fvalue from lookup where fid=33 and fcode=acustomertype) as [Customer Type]</span></p><p><span style="font-size: 14px;">,sum(cast(IDNet_Amount as money)) as [Revenue]</span></p><p><span style="font-size: 14px;">,sum(cast(isnull(case when IDFaultid&gt;0 then round(timetaken*ucostPrice,2) else IDUnit_Cost*IDQty_Order end,0) as money)) as [Cost]</span></p><p><span style="font-size: 14px;">,sum(cast(IDNet_Amount-(IDUnit_Cost*IDQty_Order) as money)) as [Profit]</span></p><p><span style="font-size: 14px;">,case when sum(cast(IDNet_Amount-(IDUnit_Cost*IDQty_Order) as money))&gt;0 then 100 else 0 end as [Profitable Customer (100=yes, 0=no)]</span></p><p><span style="font-size: 14px;">from INVOICEHEADER</span></p><p><span style="font-size: 14px;">join invoicedetail on ihid=IdIHid</span></p><p><span style="font-size: 14px;">left join area on IHaarea=Aarea</span></p><p><span style="font-size: 14px;">left join actions on actions.faultid=IDFaultid and Whe_=IDLineActionDate</span></p><p><span style="font-size: 14px;">left join uname on whoagentid=Unum</span></p><p><span style="font-size: 14px;">where ihid&gt;0</span></p><p><span style="font-size: 14px;">and IHInvoice_Date&gt;@startdate&nbsp;</span></p><p><span style="font-size: 14px;">and IHInvoice_Date&lt;@enddate</span></p><p><span style="font-size: 14px;">and &nbsp;aarea = $clientid</span></p><p><span style="font-size: 14px;"><br></span></p><p><span style="font-size: 14px;"><br></span></p><p><span style="font-size: 14px;">group by aareadesc,aarea,IHrecurringInvoiceId,acustomertype,ihid</span></p><p><br></p><p><span style="font-size: 14px;"><br></span></p><p><span style="font-size: 12pt;"><strong>Figure 2A- Feedback on tickets report</strong></span></p><p><span style="font-size: 14px;">select</span></p><p><span style="font-size: 14px;">&nbsp; &nbsp; &nbsp; faultid as [Ticket ID]</span></p><p><span style="font-size: 14px;">&nbsp; &nbsp; , symptom as [Summary]</span></p><p><span style="font-size: 14px;">&nbsp; &nbsp; , dateoccured as [Date/Time Logged]</span></p><p><span style="font-size: 14px;">&nbsp; &nbsp; , convert(date,dateoccured) as [Date Logged]</span></p><p><span style="font-size: 14px;">&nbsp; &nbsp; , convert(varchar, dateoccured, 8) as [Time Logged]</span></p><p><span style="font-size: 14px;">&nbsp; &nbsp; , (select aareadesc from area where aarea=areaint) as [Organisation]</span></p><p><span style="font-size: 14px;">&nbsp; &nbsp; , sdesc as [Site]</span></p><p><span style="font-size: 14px;">&nbsp; &nbsp; , username as [User]</span></p><p><span style="font-size: 14px;">&nbsp; &nbsp; , sectio_ as [Team]</span></p><p><span style="font-size: 14px;">&nbsp; &nbsp; , seriousness as [Priority]</span></p><p><span style="font-size: 14px;">&nbsp; &nbsp; , (select uname from uname where assignedtoint=unum) as [Assigned To]</span></p><p><span style="font-size: 14px;">&nbsp; &nbsp; , stdesc as [Service]</span></p><p><span style="font-size: 14px;">&nbsp; &nbsp; , category2 as [Category]</span></p><p><span style="font-size: 14px;">&nbsp; &nbsp; , (select tstatusdesc from tstatus where status=tstatus) as [Status]</span></p><p><span style="font-size: 14px;">&nbsp; &nbsp; , devicenumber as [Linked Asset]</span></p><p><span style="font-size: 14px;">&nbsp; &nbsp; , flastactiondate as [Last Action]</span></p><p><span style="font-size: 14px;">&nbsp; &nbsp; , CASE WHEN slastate=&#39;I&#39; THEN &#39;Inside&#39; WHEN slastate=&#39;O&#39; THEN &#39;Outside&#39; END as [SLA Compliance]</span></p><p><span style="font-size: 14px;">&nbsp; &nbsp; , (select uname from uname where clearwhoint=unum) as [Resolved By]</span></p><p><span style="font-size: 14px;">&nbsp; &nbsp; , datecleared as [Date/Time Resolved]</span></p><p><span style="font-size: 14px;">&nbsp; &nbsp; , convert(date,datecleared) as [Date Resolved]</span></p><p><span style="font-size: 14px;">&nbsp; &nbsp; , convert(varchar, datecleared, 8) as [Time Resolved]</span></p><p><span style="font-size: 14px;">&nbsp; &nbsp; , round(fresponsetime,2) as [Response Time]</span></p><p><span style="font-size: 14px;">&nbsp; &nbsp; , round(elapsedhrs,2) as [Fix Time]&nbsp;</span></p><p><span style="font-size: 14px;">&nbsp; &nbsp; , clearance as [Resolution Notes]</span></p><p><span style="font-size: 14px;">&nbsp; &nbsp; , category3 as [Closure Code]</span></p><p><span style="font-size: 14px;">&nbsp; &nbsp; , satisfactionlevel as [Feedback]</span></p><p><span style="font-size: 14px;">&nbsp; &nbsp; , case when fbscore=1 then &#39;Excellent&#39;</span></p><p><span style="font-size: 14px;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;when fbscore=2 then &#39;Good&#39;</span></p><p><span style="font-size: 14px;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;when fbscore=3 then &#39;OK&#39;</span></p><p><span style="font-size: 14px;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;when fbscore=4 then &#39;Poor&#39; end as [Feedback Score]</span></p><p><span style="font-size: 14px;">&nbsp; &nbsp; , satisfactioncomment as [Feedback Comment]</span></p><p><span style="font-size: 14px;">&nbsp; &nbsp; , (select cdesc from company where supplier=cnum) as [Supplier]</span></p><p><span style="font-size: 14px;">&nbsp; &nbsp; , suppref as [Supplier Ticket ID]</span></p><p><span style="font-size: 14px;">&nbsp; &nbsp; , (select rtdesc from requesttype where rtid=requesttypenew) as [Type]</span></p><p><span style="font-size: 14px;">&nbsp; &nbsp; , CASE&nbsp;</span></p><p><span style="font-size: 14px;">&nbsp; &nbsp; WHEN (SELECT useriousnesslevel FROM USERS WHERE userid = uid) = 2 THEN 1</span></p><p><span style="font-size: 14px;">&nbsp; &nbsp; ELSE 0</span></p><p><span style="font-size: 14px;">&nbsp; &nbsp; &nbsp; END as [VIP]</span></p><p><span style="font-size: 14px;">&nbsp; &nbsp; , fFirstTimeFix as [First Time Fix]</span></p><p><span style="font-size: 14px;">from faults&nbsp;</span></p><p><span style="font-size: 14px;">join site on site.ssitenum=faults.sitenumber</span></p><p><span style="font-size: 14px;">left join faultservice on fsfaultid = faultid</span></p><p><span style="font-size: 14px;">left join servsite on fsstid = stid</span></p><p><span style="font-size: 14px;">inner join feedback on fbfaultid = faultid</span></p><p><span style="font-size: 14px;">where</span></p><p><span style="font-size: 14px;">&nbsp; &nbsp; &nbsp; fdeleted = 0</span></p><p><span style="font-size: 14px;">&nbsp; and fmergedintofaultid = 0</span></p><p><span style="font-size: 14px;">&nbsp; and requesttype in (1,3)</span></p><p><span style="font-size: 14px;">&nbsp; and userid = $userid</span></p></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div>
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.