{"id":3534,"date":"2013-04-10T00:50:27","date_gmt":"2013-04-09T22:50:27","guid":{"rendered":"http:\/\/contoso.se\/blog\/?p=3534"},"modified":"2013-04-10T00:50:27","modified_gmt":"2013-04-09T22:50:27","slug":"check-in-history","status":"publish","type":"post","link":"https:\/\/contoso.se\/blog\/?p=3534","title":{"rendered":"Check In History"},"content":{"rendered":"<p>Runbooks should be administered using version control. For each version deployed into production, create a package including the runbook and documentation. The documentation should include an explanation of the runbook, including all parameters, global settings and variables. As Orchestrator don\u00e2\u20ac\u2122t include version handling it is a good idea to keep earlier runbook versions as export files, making sure you can rollback to earlier versions easy. You should also have a change management process around releasing new runbooks to production to make sure they are tested and signed off correct by the different teams.<\/p>\n<p>As an additional layer of your change process, or maybe in lack of a change process, you can use check in comments in Orchestrator. In the Runbook Designer console you can enable \u00e2\u20ac\u0153Prompt for comment on check in\u00e2\u20ac\u009d.\u00c2\u00a0\u00c2\u00a0 This is not enabled by default but it is something you should enable at least in your production environment. The result is that each time you click check in in the Runbook Designer console you need to input a comment. It is very easy way to keep track of changes.<\/p>\n<p>You enable check in comments from the Options menu &gt; Configure, in the Runbook Designer console.<\/p>\n<p><a href=\"http:\/\/contoso.se\/blog\/wp-content\/uploads\/2013\/04\/20130410_CheckIn03.jpg\"><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter size-medium wp-image-3546\" alt=\"20130410_CheckIn03\" src=\"http:\/\/contoso.se\/blog\/wp-content\/uploads\/2013\/04\/20130410_CheckIn03-300x205.jpg\" width=\"300\" height=\"205\" srcset=\"https:\/\/contoso.se\/blog\/wp-content\/uploads\/2013\/04\/20130410_CheckIn03-300x205.jpg 300w, https:\/\/contoso.se\/blog\/wp-content\/uploads\/2013\/04\/20130410_CheckIn03.jpg 625w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p><a href=\"http:\/\/contoso.se\/blog\/wp-content\/uploads\/2013\/04\/20130410_CheckIn04.jpg\"><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter size-medium wp-image-3548\" alt=\"20130410_CheckIn04\" src=\"http:\/\/contoso.se\/blog\/wp-content\/uploads\/2013\/04\/20130410_CheckIn04-300x203.jpg\" width=\"300\" height=\"203\" srcset=\"https:\/\/contoso.se\/blog\/wp-content\/uploads\/2013\/04\/20130410_CheckIn04-300x203.jpg 300w, https:\/\/contoso.se\/blog\/wp-content\/uploads\/2013\/04\/20130410_CheckIn04.jpg 363w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>All check in comments are written to the Orchestrator database, in the CHECK_IN_HISTORY table. Together with the POLICIES table and the OBJECTS_AUDIT table we can list all comments with account name, runbook name and date. We can also use SQL Server Report Builder to build a report to show this data. The following SQL query will show all check in information.<\/p>\n<blockquote><p>SELECT\u00c2\u00a0CHECK_IN_HISTORY.DateTime AS [Check In Time], POLICIES.Name AS [Runbook Name], CHECK_IN_HISTORY.Comment AS [Check In Comment], SIDS.Account, POLICIES.Version AS [Current Version in database]FROM\u00c2\u00a0CHECK_IN_HISTORY INNER JOIN\u00c2\u00a0POLICIES ON CHECK_IN_HISTORY.ObjectID = POLICIES.UniqueID INNER JOIN\u00c2\u00a0SIDS ON CHECK_IN_HISTORY.CheckInUser = SIDS.SIDWHERE\u00c2\u00a0(POLICIES.Deleted = 0) ORDER BY [Check In Time] DESC<\/p><\/blockquote>\n<p><a href=\"http:\/\/contoso.se\/blog\/wp-content\/uploads\/2013\/04\/20130410_CheckIn01.jpg\"><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter size-medium wp-image-3542\" alt=\"20130410_CheckIn01\" src=\"http:\/\/contoso.se\/blog\/wp-content\/uploads\/2013\/04\/20130410_CheckIn01-300x186.jpg\" width=\"300\" height=\"186\" srcset=\"https:\/\/contoso.se\/blog\/wp-content\/uploads\/2013\/04\/20130410_CheckIn01-300x186.jpg 300w, https:\/\/contoso.se\/blog\/wp-content\/uploads\/2013\/04\/20130410_CheckIn01.jpg 952w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p><a href=\"http:\/\/contoso.se\/blog\/wp-content\/uploads\/2013\/04\/20130410_CheckIn02.jpg\"><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter size-medium wp-image-3545\" alt=\"20130410_CheckIn02\" src=\"http:\/\/contoso.se\/blog\/wp-content\/uploads\/2013\/04\/20130410_CheckIn02-300x194.jpg\" width=\"300\" height=\"194\" srcset=\"https:\/\/contoso.se\/blog\/wp-content\/uploads\/2013\/04\/20130410_CheckIn02-300x194.jpg 300w, https:\/\/contoso.se\/blog\/wp-content\/uploads\/2013\/04\/20130410_CheckIn02.jpg 927w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>&#8220;Current Version in database&#8221; is a value we get from the POLICIES table. Each time we click check in Orchestrator will add one to that value, so if we check out and check in a runbook 20 times it will show version 20. As we get this value from the current checked in runbook it will show the same \u00e2\u20ac\u0153Current Version in database\u00e2\u20ac\u009d for all check in for the same runbook, so it is not the version that was checked in at that time.<\/p>\n<p>You can download my example report here, <a href=\"http:\/\/contoso.se\/blog\/wp-content\/uploads\/2013\/04\/CheckInHistory.zip\">CheckInHistory<\/a>. Note that this is provided \u00e2\u20ac\u0153AS-IS\u00e2\u20ac\u009d with no warranties at all<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Runbooks should be administered using version control. For each version deployed into production, create a package including the runbook and documentation. The documentation should include an explanation of the runbook, including all parameters, global settings and variables. As Orchestrator don\u00e2\u20ac\u2122t include version handling it is a good idea to keep earlier runbook versions as export &hellip; <a href=\"https:\/\/contoso.se\/blog\/?p=3534\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0},"categories":[60],"tags":[],"_links":{"self":[{"href":"https:\/\/contoso.se\/blog\/index.php?rest_route=\/wp\/v2\/posts\/3534"}],"collection":[{"href":"https:\/\/contoso.se\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/contoso.se\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/contoso.se\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/contoso.se\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3534"}],"version-history":[{"count":14,"href":"https:\/\/contoso.se\/blog\/index.php?rest_route=\/wp\/v2\/posts\/3534\/revisions"}],"predecessor-version":[{"id":3553,"href":"https:\/\/contoso.se\/blog\/index.php?rest_route=\/wp\/v2\/posts\/3534\/revisions\/3553"}],"wp:attachment":[{"href":"https:\/\/contoso.se\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3534"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/contoso.se\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3534"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/contoso.se\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3534"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}