Twitter Bootstrap for Kace Service Desk

Challenge: our IT staff wanted more from the service desk ticket view.  We wanted to be able to see multiple queues quickly, have priority take center stage, and eliminate columns not necessary.   The built in layout customizer just was not getting there.  In addition, we also wanted to see dashboard level stats on our service desk; i.e. tickets currently open, open by department, and closed per queue by month.   


The solution: Twitter Bootstrap for Kace Service Desk with HighCharts javascript

We used the built in Dell Kace MySQL query account to run quires directly from the KBox.  The quires were created via the service desk using the custom report module or via FlySpeed SQL application.  Once we had the quires we simply embedded them in PHP and wrapped the results around the CSS framework Bootstrap. Chart presentation is being handled by the Javascript framework HighCharts.  Together, we have a solution that allows us to focus on the columns we want to see, view multiple queues, and get a snapshot of how the service desk is doing via a high level dashboard.  


The code: I am certainly not an expert programmer, so feel free to make any changes you deem appropriate.  You will certainly have to customize which queue(s) you are querying.  Aside from that, it should work.  


Get the code here: https://github.com/jasonrap/KaceBootstrap


Let me know what you think. 

EDIT: 8.31.2016 most recent code can be found here: https://github.com/MattSchroyer/KaceBootstrap (thank you Matt for contributing to the project).  


  • Very creative- love the concept! - cblake 9 years ago
  • Thanks Chris! We use it everyday and find it much more intuitive than the interface provided within the service desk. - Jbr32 9 years ago
    • Hey @jbr32, I have been able to implement your project to our system. I have gone back through your code and pretty much re-vamped the whole thing to update to mysqli and Bootstrap4. Plus added many more features. I would love to collaborate with you guys and send you my code and see if there was anything I can do to help with extra features you guys would like or updating some of the code and libraries. I also have edited the tables on every page so the will auto scale to fit any screen size all the way down to the smallest mobile resolution. Here at our system our technicians use this while in the field to check and close tickets per location. IF you are interested or anyone needs any assistance please feel free to email me at SBrooks75@bethelu.edu. - sdbrooks 6 years ago
      • Here are some screenshots :
        http://imgur.com/0iEcZj9 - sdbrooks 6 years ago
  • KACE customers are the BEST! - ronco 9 years ago
  • This looks pretty cool. I downloaded the files but I'm not sure what aside from the config.ini that needs to be changed. Anyone have an idea? - jlazerus 9 years ago
  • If there is interest from other members I would be willing to do an Adobe connect to show how to bring the project online. Otherwise Jason I can just connect directly with you to do so. - Jbr32 9 years ago
    • That would be great!! Let me know if you get other responses. A group would be easier I imagine. - jlazerus 9 years ago
  • Needs a few tweaks to get working correctly (besides updating the config.php):
    1) It's written with php short tags, so either turn this on (not recommended), or update all the <? ?> tags to <?php ?>
    2) includes/nav.php needs to have the include_once("config.php"); updated to include_once("includes/config.php"); (at least it did for IIS).
    3) Several of the php files in the base dir create web links for tickets to the Kace box. These use "SomeKBox" as a stand-in for your real DNS name. You'll want to update these accordingly (i.e.: webTickets.php and ownerUnassigned.php) - ammaross 9 years ago
  • Glad you got it working! I am actually going to do a video on how to implement this on a fresh system. Thanks for the feedback! - Jbr32 9 years ago
  • We just recorded a how to video, made a bunch of code changes. Will post soon. - Jbr32 9 years ago
  • I also updated the GitHub https://github.com/jasonrap/KaceBootstrap Will post the video, hopefully next week. - Jbr32 9 years ago
  • Finishing up the video now! - Jbr32 9 years ago
  • I would love to see the video. - DanielHolt 9 years ago
  • I really love the idea around what you're doing with this.... It needs a lot of improvement though... there's a lot of messy code. - DanielHolt 9 years ago
  • In reportKaceCurrentOpen.php....

    Instead of calling out ticket status' that are closed, why not just put in the status thats open....

    You have (with modifications to make it work for us):

    $query = "select COUNT(NAME) as counted from HD_TICKET Inner Join HD_STATUS on HD_STATUS.ID = HD_TICKET.HD_STATUS_ID
    where (HD_STATUS.NAME like '%Opened%')
    AND (HD_STATUS.NAME not like '%Canceled%')
    AND (HD_STATUS.NAME not like '%Completed%')
    AND (HD_STATUS.NAME not like '%Re-Opened%')

    My suggestion:
    $query = "select COUNT(NAME) as counted from HD_TICKET Inner Join HD_STATUS on HD_STATUS.ID = HD_TICKET.HD_STATUS_ID
    where (HD_STATUS.NAME like '%Opened%')
    order by counted desc";

    It just makes for cleaner code, and less CPU intensive. - DanielHolt 9 years ago
    • Actually, if you want to check for a closed status, you can always check:
      (HD_STATUS.STATE like '%closed%')
      It's more accurate and reliable than checking for status name fields, since the UI provides a means for marking if each are "closed", "stalled", or "open." It's more likely to not have a bunch of options and reduces the string comparison to a single check. - ammaross 9 years ago
  • Great feedback! Please feel free to post back to the GitHub project. Here is the video: http://www.itninja.com/blog/view/twitter-bootstrap-for-kace-service-desk-the-video - Jbr32 9 years ago
  • As an FYI, I've made some fairly extensive additions and modifications to Jay's great base code and forked KaceBootstrap to contribute those changes back to the community. It can be found at https://github.com/ammaross/KaceBootstrap

    Among the changes are new (and bug-fixed) reports and graphs, but most notably would be easing reconfiguration for more stock shops (only takes small edits in just 3 files for most places) and commenting out the more custom-directed code from Jay's KaceBootstrap (such as his Departments code based on custom field 0 for instance).

    Feedback is welcome! - ammaross 9 years ago
    • Ammaross I looked at the code while on my flight home from dell world and it's amazing! I would like to talk to you about collaboration. Could you please email me so we can chat. I would have sent you a direct message if I could have. - Jbr32 9 years ago
      • I sent an email to your Drexel uni email address. - ammaross 9 years ago
  • FYI ammarosss and I are collaborating on this project. Demo site and more features coming soon. - Jbr32 9 years ago
  • Just download the files and watched the video. Are the files new than the video? I couldn't find any that matched up with the video? Looks great and I am sure management would love it if I can get working properly. - jay.moore 9 years ago
  • Jay I created the video before the collaboration started so yes the video is old. The project is a lot easier to implement now. Read through the comments in the config file https://github.com/ammaross/KaceBootstrap

    Feedback is welcome! - Jbr32 9 years ago
  • Thanks will do! So far looks awesome, just needs a little personalization! - jay.moore 9 years ago
  • I've been playing with this, and the simplicity is amazing. I can just take one the openTickets.php, save as a new named document, change up the SQL just a bit, add it to the include on index, and boom, a whole extra front-page table. 3-4 summarized tables right on the front, and it's great. Definitely need to play with the graphs some more too.

    Only page I'm having difficulty cyphering is the nav.php, and modifying the user list for the site. I've no experience with this so it's blast playing with it. Need to figure out the whitelisting and such.

    Anyways: Great great great. - Wildwolfay 9 years ago
  • Glad you like it! For the nav to work, edit the config.php file.

    Look for the line that reads: $mainQueueOwners=""

    This is what you had to edit for it to work. That number is pointing back to your user group that can work on a given queue.

    To find out what the number is, go into the configuration of a queue and mouse over the entry for "Ticket Owners By Label:" which should have a number at the end of the URL; e.g. adminui/label.php?ID=261

    That number is what you want to enter in for $mainQueueOwners

    If you have more than one group of support people, just key in all of the label numbers; e.g. $mainQueueOwners="261,123,456";

    We are working on a demo site, will post soon.

    Enjoy! - Jbr32 9 years ago
  • This is awesome! Thanks for your hard work and for spelling out the setup instructions for us. - jlazerus 9 years ago
  • No problem. If you have questions just ask. - Jbr32 9 years ago
  • Hi,

    Our IT team would greatly benefit from the above but after trying all I could I cannot get the above to work, all that I get in the end is a black bar at the top with Service Desk on it.... I have followed the instructions but sadly no success. - GoranK 8 years ago
    • It can be a bit tricky to get working. Pull up the web server's error log and see what is causing the issue. Here is a demo with anonymous data I pulled from our kbox a few months ago. http://kbootstrap.westphal.drexel.edu - Jbr32 8 years ago
      • I'm getting the same thing.Black bar with title and 3 bars icon for menu. just wont update, been at it for a while and run a test SQL in WAMP to make sure I was connected to the database. - psedgwickJC 7 years ago
      • psedgwickJC - send me a DM and I can help you out. - Jbr32 7 years ago
      • thanks sent email to your drexel.edu account. - psedgwickJC 7 years ago
  • Can this also pull reports outside of the Service Desk from KACE as well? We would like an external site much like the K1000 front page dashboard, but with additional data and better graphs. - andrewlee 8 years ago
    • That is what we do. We have tied our KBootstrap project into some how brew systems that track a P/L, inventory, renderfarm usage, and are working on a room usage report. - Jbr32 8 years ago
      • Excellent, thanks for the info. Just wanted to make sure it could do that before attempting to configure. - andrewlee 8 years ago
      • You are welcome. The menu/nav system can be a bit tricky, but if you follow the examples you should be able to figure it out. If not let me know. - Jbr32 8 years ago
  • Can you provide an example of other reports this can connect to? I have it all running and I can see my Service Desk, but I'm trying to figure out the reporting side. I'm working on a summary of one of our high-impact reports: encrypted vs. non-encrypted devices. - andrewlee 8 years ago
  • Andrew - feel free to email me directly and we can chat. In a nutshell, you would have to write your own queries and supporting php to display the information. - Jbr32 8 years ago
  • If anyone is interested, I updated the demo area so it pulls data directly from our kbox; of course I inserted a php function to make the data anonymous. Now the charts that were time sensitive, such as showing a data points for the last three days, will actually have data in them. Enjoy!

    http://kbootstrap.westphal.drexel.edu/ - Jbr32 8 years ago
    • Hi Jbr. Your Drexel page is awesome. I'm using everything in the kbox in production except the ticketing system. I will attempt to apply your bootstrap project in our environment but only report on patching and other device inventory stuff. I will look into it but in the meantime could you please provide the custom SQL code you have for the 'Patch Compliance' and 'Software Installed/Removed...' reports? Thank you in advance. - bens401 7 years ago
      • Glad everyone likes the project!!!

        For Patch Compliance, the code came from here: http://www.itninja.com/blog/view/k1000-report-patching-vendor-severity-with-machine-count-and-completion-rates

        and for software installed/ removed. Make sure to change the variable $daysAgo accordingly.
        Count(*) as CountofSoftware,
        AND VALUE1 NOT LIKE '%Update for%'
        AND VALUE1 NOT LIKE 'Hotfix for%'
        AND VALUE1 NOT LIKE 'Security Update%'
        AND VALUE1 NOT LIKE 'Microsoft Office%'
        AND VALUE1 NOT LIKE 'Microsoft .NET%'

        </pre> - Jbr32 7 years ago
    • By the way, how has everything been working in Kace 6.3? - bens401 7 years ago
  • Just as a FYI, with 6.3 this still works perfectly fine for our company. Very good reporting tool for our Service Desk team. - GoranK 7 years ago
  • OK, I'm completely new to PHP and Wamp. I must have placed a file in the wrong location when downloading them from the github. When I try to open the webpage I get an error message stating that the page cannot be found. Wamp is up and running with the green icon, I have edited the config file under the includes folder. Can anyone assist in what I may have done wrong? - bstutz 7 years ago
    • I would gladly walk you through it. Send me a direct email and we can schedule some time to do so. - Jbr32 7 years ago
  • I'm getting a bunch of error about mysql_ feature is depricated - jayp322 7 years ago
    • Jayp332 - yes by now the functions used have been depreciated and need to be updated to use mysqli. That being said, depending on your environment you can use a previous version of Apache/PHP or in other cases enable the depreciated function; again not ideal. I am working on another project using data mining currently with the K1000, will announce soon and eventually circle back on the dashboard. - Jbr32 7 years ago
      • Awesome, thanks. I started updating the php to mysqli. Header fixed... working on the rest now. Thanks again - jayp322 7 years ago
      • Are you going to make that announcement here, or is there another post we can follow, so we'll be alerted when it happens? - ondrar 7 years ago
    • If you need help with the implementation I would gladly jump help out. - Jbr32 7 years ago
      • Got everything updated and having issues with two files... reoprtGridByCategory (TicketOpened/Closed by Month chart doesn't show data) and reportByOwner3Month. (chart also blank) - jayp322 7 years ago
      • Update: Everything is working but the "Tickets Open and Closed by Owner" chart. No errors, but shows no data. - jayp322 7 years ago
      • Jayp332 - send me a direct email (in my profile) for help. - Jbr32 7 years ago
  • this is a real good help for sure, is there a way to change the users to be in a drop down and not across the screen? Ive tried to understand it but as im not very good at this code im struggling a little bit. - ashbroom 6 years ago
    • Ashbroom - I was able to implement that, minus a CSS issue. I placed a version of it in the demo environment (http://kbootstrap.westphal.drexel.edu/) send me an email and I can send you the code. - Jbr32 6 years ago
      • thank you, i shall mail you now - ashbroom 6 years ago
  • Most recent code fork: https://github.com/MattSchroyer/KaceBootstrap thank you Matt for contributing to the project! - Jbr32 6 years ago
  • First off, thanks for creating this. I find it really helps show people graphically what's going on. I'm looking to create a bar graph that would show the number of open and closed tickets per department, not a percentage but the number currently open for that location and the number currently close. Any suggestions? Thanks. - dpogue 6 years ago
    • That should be easy to do, you will have to rework the reportByDepartment.php file to output the data for a basic highchart bar chart (http://www.highcharts.com/demo/column-basic). If you need help, just send me a DM. - Jbr32 6 years ago
    • If you send me a DM I can send you the file. - Jbr32 6 years ago
  • I was hoping to not reply to this thread, but I could not figure it out. We have implemented the Bootstrap solution, which is working great. Thank you !! However, the QC report seem to be blank regardless to what we do. Does anyone have suggestions on what I am missing? - solarissparc 6 years ago
    • Send me an email and I can help you out. - Jbr32 6 years ago
  • I have edited the config.php file and am getting the following error. Any help is appreciated.

    Service Desk

    Fatal error: Uncaught Error: Call to undefined function mysql_connect() in C:\xampp\htdocs\kace\includes\config.php:115 Stack trace: #0 C:\xampp\htdocs\kace\includes\nav.php(2): include_once() #1 C:\xampp\htdocs\kace\index.php(45): include_once('C:\\xampp\\htdocs...') #2 {main} thrown in C:\xampp\htdocs\kace\includes\config.php on line 115 - starka 6 years ago
    • Make sure to use the newest code set https://github.com/MattSchroyer/KaceBootstrap which changes the queries from mysql_connect to mysqli_connect - Jbr32 6 years ago
This post is locked
This website uses cookies. By continuing to use this site and/or clicking the "Accept" button you are providing consent Quest Software and its affiliates do NOT sell the Personal Data you provide to us either when you register on our websites or when you do business with us. For more information about our Privacy Policy and our data protection efforts, please visit GDPR-HQ