We appreciate you taking the time to vote and add your suggestions to make our products awesome! Your request will be submitted to the community for review and inclusion into the backlog.

We recommend reviewing what is submitted before posting, in case your idea has already been submitted by another community member. If it has been submitted, vote for that existing feature request (by clicking the up arrow) to increase its opportunity of being added to Cireson solutions.

For more information around feature requests in the Cireson Community click here.

Cachebuilder Status & Timeline Display

Tony_CollettTony_Collett Cireson Support Ninja IT Monkey ✭✭✭✭
As we know the Cachebuilder is an integral part of the Cireson Portal. 

It would be really awesome if the Cachebuilder had a status & timeline built into the Admin Settings on the Portal

Could be a new tab titled 'Cachebuilder Status' which would be in the Admin Setting display. 

It would display the following information: 
 - Current status: Running, Stopped, Starting, Processing. 
       - Running - means it's performing normal operation
       - Stopped - could mean something went wrong and it was stopped, or it's been stopped manually
       - Starting - means the CB was restarted recently and is still performing the first run operation
       - Processing - means it is currently actively performing an operation (could be detailed with the timeline)
 - Timeline of events for the next 24 hours, for example: 
       - Work Items -> next in 25 seconds
       - Configuration Items -> next in 45 minutes, next in 1 hour 45 minutes
       - Users and Groups -> next in 45 minutes, next in 2 hours 45 minutes
       - Enumerations, Scoped Access, Service Catalog -> next in 12 hours 45 minutes, next in 36 hours 45 minutes
       (Information from https://support.cireson.com/KnowledgeBase/View/1176#/

It could enable decent troubleshooting to determine where something might be off, or to determine what process is coming up if the system is slowing down at a certain point. 
It would also be useful to determine when users access might be next available, using the timeline. 
26 votes

Submitted · Last Updated


  • Leigh_KildayLeigh_Kilday Member Ninja IT Monkey ✭✭✭✭
    edited February 20
    Good suggestion, Tony.

    We have a tabular report showing the cache area (ConfigItems, EnumLookup etc.), last cache run DTG, minutes ago, the refresh interval, next cache run, thread name and table name that it affects. We have a report parameter for the refresh interval too.
    We also added some information on what is cached and what requires an app pool / SCSM Health Service reset, so admins and stakeholders know what to expect.

    At times the cache doesn't start one of the areas and the Minutes Ago value is blank. It would be nice to drill into a log (separated by cache area) for further information. I'd like to see the current status of each cache area as well as the overall status of the cache builder service.
  • Mike_StormsMike_Storms Customer IT Monkey ✭

    Leigh_Kilday is this something you could share?

  • Tom_HendricksTom_Hendricks Customer Ninja IT Monkey ✭✭✭✭
    This would be a great time saver.  I would love to have a button to force one of the sync categories to run on-demand, as well.

    Perhaps that is a separate feature request, but it made sense as part of the same FR when I first envisioned this looking similar to the SMA dashboard.
  • Leigh_KildayLeigh_Kilday Member Ninja IT Monkey ✭✭✭✭

    Leigh_Kilday is this something you could share?

    Sure thing. It'll take some time to export from our network.
  • Ben_TeyBen_Tey Premier Partner IT Monkey ✭

    Leigh_Kilday is this something you could share?

    Sure thing. It'll take some time to export from our network.
    Great ! that really help for administrator
  • Konstantin_Slavin-BoKonstantin_Slavin-Bo Customer Advanced IT Monkey ✭✭✭
    That sound very nice, we would also greatly appreciate if you share it!

  • Leigh_KildayLeigh_Kilday Member Ninja IT Monkey ✭✭✭✭
    The important data is just coming from ServiceManagement.dbo.LastModified. Here's our stored proc:

    CREATE PROCEDURE [dbo].[usp_CiresonCacheBuilderInfo]
    WITH cte_LastModified (ThreadName, TableName, Modified, MinutesAgo)
    as (
    CASE Name
    WHEN 'CI$User' THEN 'USER'
    WHEN 'ConfigurationItem' THEN 'CONF'
    WHEN 'Enumeration' THEN 'ENUM'
    WHEN 'ServiceOffering' THEN 'CATA'
    WHEN'Access_CI$User_WorkItem' THEN 'SCOP'
    WHEN 'WorkItem' THEN 'WORK'
    ELSE Name
    END as ThreadName,
    Name as TableName
    DATEDIFF(MINUTE,Modified,GETUTCDATE()) as MinutesAgo
    FROM ServiceManagement.dbo.LastModified
    p.Name as CacheType
    ,p.RefreshInterval as RefreshInterval
    ,l.Modified as Last_Cache_Run
    ,l.MinutesAgo as Minutes_Ago
    ,l.ThreadName as Thread_Name
    ,l.TableName as Table_Name
    ,p.LastUpdate as Last_Param_load
    ,p.ServerName as CachingServer
    ,DATEADD(MINUTE, CONVERT(int, p.RefreshInterval), l.Modified) as Next_Cache_Run
    FROM CiresonMaintenance.dbo.CiresonCacheBuilderParam p
    LEFT OUTER JOIN cte_LastModified l ON l.ThreadName = p.ThreadName
  • Leigh_KildayLeigh_Kilday Member Ninja IT Monkey ✭✭✭✭
    CiresonMaintenance.dbo.CiresonCacheBuilderParam is automatically generated but I can't find the stored proc at this time. Fields required by the above stored proc could be manually entered.

    It contains the following columns:
  • Tom_HendricksTom_Hendricks Customer Ninja IT Monkey ✭✭✭✭
    edited May 25
    I do not see CiresonMaintenance.dbo.CiresonCacheBuilderParam anywhere.  This search also came up empty:
        WHERE ROUTINE_DEFINITION LIKE '%CiresonCacheBuilderParam%'
        WHERE [text] LIKE '%CiresonCacheBuilderParam%'
        AND OBJECTPROPERTY(id, 'IsProcedure') = 1
    SELECT OBJECT_NAME(object_id)
        FROM sys.sql_modules
        WHERE OBJECTPROPERTY(object_id, 'IsProcedure') = 1
        AND definition LIKE '%CiresonCacheBuilderParam%'
    So that suggests that the SP you are looking for is not OOB.  Something custom, perhaps?

    I am not sure if you were implying that from the start, so I wanted to clarify.

    In the meantime, the part of your query that targets dbo.LastModified is still quite useful, so thank you for sharing!
  • Leigh_KildayLeigh_Kilday Member Ninja IT Monkey ✭✭✭✭
    Yep, that's right, it's a custom table. I'm my last post I included the sort of data we store in there, but you could easily enter it into the query or rdl definition.
  • Brad_McKennaBrad_McKenna Customer Adept IT Monkey ✭✭
    @Leigh_Kilday Looks like you all are grabbing the CacheCommands (configuration) in the CacheBuilder configuration folder. Then enumerating this into a table...I like this! Easy way to know what the configuration is on your servers. 
    Also out of curiosity, any other cool things you can share that you all do with the CiresonMaintenance dbo that you are using?

  • Leigh_KildayLeigh_Kilday Member Ninja IT Monkey ✭✭✭✭
    @Brad_McKenna That's right, but I didn't design that part so I'm not sure how it's occurring. The only other things we store in that DB are:
    1. Info on the core folders to backup by server group (e.g. Cireson portal boxes need CustomSpace backed up), file types to look for (e.g. *.dll) and some flags.
    2. Audit info, like last audit DTG and some stats on process DTG, rows and duration.
  • Konstantin_Slavin-BoKonstantin_Slavin-Bo Customer Advanced IT Monkey ✭✭✭
    Thanks for sharing, it looks great!

    But - could someone please explain in more detail how to implement this? I'm not really a SQL ops guy; I know the syntax and the concepts, but I'm not really sure on how to implement this.

    I need a new database, CiresonMaintenance, which should contain a table CiresonCacheBuilderParam, which has the columns Name, ThreadName, RefreshInterval, BatchSize, LastUpdate, ServerName (all of type nvarchar? Or should LastUpdate be a datetime field?)

    The cache builder service account should have read/write access to the new DB / table?

    Then I need to create a new stored procedure, right? Under which DB; CiresonMaintenance or ServiceManagement (I'm guessing the former)? In SSMS, it's just right-clicking on Stored Procedures > New Stored Procedure, and replaceing everything in the query editor with what Leigh posted, correct? I'm getting a number of errors here, e.g. 'cte_LastModified has fewer columns than specified in the column list', 'Invalid column name "Name"' in the CASE statement,  and  'The multi-part identifier "l.Modified" could not be bound'.

    We're running SQL 11.

    Thanks to anyone who has time for this :smile:
Sign In or Register to comment.