logo

NJP

ServiceNow Developer MVP: Upping my game

Import · Feb 06, 2021 · video

[Music] okay good evening and welcome to phil goes deep i just need to make sure a few things are working uh thanks to everyone who is currently tuned in um maybe i'll catch away from the live code in happy hour uh and all the people that have tuned into that so if you've just been watching live code in happy hour then uh that was pretty pretty amazing seeing all the og's back today or tonight however um i'm hoping to try and do a little bit of work on something i was doing last night in the background while i was watching uh james neal doing some portal building for his unifi integration testing application so the problem right now is there's too much content um on on youtube and stuff with uh with all the servicenow guys so um yeah as part of the mvp selection i've said well i know i need to up my game and what i'm hoping to do is uh try and utilize something i was building last night to try and make the live stream a little bit more interactive so i can see seeing some numbers tuning in if you can just hit up the chat and let me know what's going on i'm hoping for uh well i want to first of all know everything's working all right but yeah i've been toying with some um toying with some features so shout out to raph as well uh he hit me up with uh the little stinger interest let's just try this [Music] so i literally just knocked that up last night so shout out to ref he gave me the template for that um i've got a couple of other bits that i'm going to try and work with and what i'll do i think is just get into let's have a look just a little bit warm now yeah i've got a i've got a bash script i'm just talking to chuck about this on the chat in live code i'm happy i've got a bash script uh and that's making a call to my new rest uh scripted rest api um and then that is producing a local json file which i'm passing to python to create a text file okay so what i'm hoping is that the uh the stuff that i'm doing on the live stream never switched back hold on so another youtube channel started kicking in there uh yeah so i'm gonna pull down information straight from my servicenow instance from my pdi and then i'm going to push that onto the live live stream that's the idea so i can show you roughly what i'm working with i just need to fire up postman i think and get my get my new token because i haven't filed it up and i was watching live code in happy hour so in terms of timing i'm going to be going for i'll limit it to no more than two hours i can easily get carried away so it's got to go to 11 here let's just see if i fire this token so just need to do that in the background of course you don't want to see that or you might want to see it save shouldn't be anything so let's just switch over to my screen okay down to one viewer now so um i've lost the room even so if you do tune in just hit up the chat and let me know if you've got some some ideas for what we can do here what i've got here is the a few other scripts i don't need but i am going to just close these down basically going to open my json file and i'm going to write to my json file this string here so current update set i'll pull down that display value application type of xml count etc so let's just see that working in the instance if i go to scripted rest api scripted yes okay so i built this scripted rest api last night um while i was watching as i say james do some bits and i've just created a new application as well it's not in that scope but explore this rest api right so when i hit this what it's going to do is going to look i've hard coded my id in here um uh that's mid what's happened here where have you gone global is it because i mean oh okay maybe i'm getting confused with my application name and my api name it was late last night i had a very late night so let's just hit this and see what we get back user not authorized okay so let me see if i run this if i run this script locally i've got a hole in every 10 seconds so it does it in here yes update excellent so that is updating you can see here that's getting updated in my json just descriptive rest api is not working so what we'll do then um is on this lower right if i start to show this just use one of my transitions so i'll create the transition it's a bit of a joke but just throwing deep across the screen you can see now scrolling along the bottom is the name of my update set okay which is instant scan 3 the scope it's in which is global and then the update counts that's the number of updates that i've got in my update set right now okay i've got one update in there if i change to this update set i've got no updates in there look at this the scroll along the bottom okay so you're getting a live feed from the instance while i'm working on it and that's all coming from my scripted rest api but it's not just coming from my rest api i've got a few other things which was nice to play with i've got a bash ship a bash shell script which is running i can't really show that on the screen um because it's got my bearer token in there what we've got is a shell script file okay and that is doing two things it's holding to my scripted rest api which is doing a query okay in servicenow this is going up here making a query and that's coming back so that's coming back in here gets that back and then dumps in a json file okay the bash shell script then triggers a python script which reads that json file and produces a text file text file in here okay so and then i'm using software called obs right which is what's putting me at the bottom of this screen uh doing all the all the transitions you know little video overlays the green screen all of the the audio i mean it's free software it's open source and it's available and a lot of people that you see doing stuff on youtube are using obs so it's very powerful stuff that scroller that you're seeing at the bottom of the screen probably if i use my mouse here so yeah this uh this screen here that's just taking a text file okay so that text file here i don't know how you present a obs song on this i'm going to put it in big box right never use that in my diagrams my obs is then reading that okay now the other bit i've got is i've actually got a an executable right so that's a file that it doesn't have an extension i've done the change mod on there made it executable i've put um let's have a look at it is it called vampire yeah so basically i put this little interpreter at the top oh you probably won't see that on the screen it's cut off slightly um yeah so you can see this little interpreter at the top last 10 minutes kind of executable and how to execute it and then this is command line so this is basically just like running it in terminal um that calls my my shell script so i don't actually have to run any code i just double click the file and this has got a little timer on there i'll do timer yeah and at the moment it's running every 10 seconds so you do have to be careful you don't you don't want to leave that running on your machine and hitting up your your servicenow instance but that's effectively what it's doing it's going off to servicenow and asking it get me some information pushing it down into a json file and then i'm using python to just turn that into a nice uh my script along the bottom so let's just see that again in action if i change my let me change my uh update set and you'll see that that should change in a moment here we go it's changed i was just watching live coding happy hour and they're drinking some really nice really nice uh beers and stouts and um sours i think uh dave was drinking i'm drinking an audi special scent etienne um premium lager beer 4.8 so that's my that's my happy hour but yeah you can see the numbers coming in here update count six so let's take a look at the actual rest api okay because maybe we can enhance that maybe we can start to do some stuff that um i don't know i can make some changes i can create a new um let's have a look if i should be able to duplicate so i like this scene so what we've got in obs is the concept of scenes and you transition between scenes so um what i like to do is for example maybe i just need to go off camera for for a moment i've got a new scene here but i haven't put the scrolling text onto this screen okay so i'm still here but i'm just not in the scene and then i just you know pop it back in so i've got a little stinger animation used adobe after effects to produce a little animation with transparency and then you know it's got a transition time and so on the the scene is what i'm going to just be playing with um everything's locked on there of course so what i'd probably need to do if i look at this one yeah so unlock this just for an example i don't know how it's going to look on the video so i don't know how small i can make it before it ruins anything so let me just try that out if i transition that i've got another transition i can use just cut that across okay so you can see i've made the screen a little bit smaller now i've got some space kind of you can't see my mouse now as it goes left that's my monitor everything on the left of that that black space is um obs right so i can put whatever i like into there so i can see we've got a few people tuned in just hit me up on the uh on the chat if you've got some some ideas some information that you think might be useful to get from from servicenow while doing a live stream so the sort of stuff i do i explore and go deep into things like grc specifically but also some of the platform features things like instance scan so you know i was thinking maybe i can connect uh instant scan to grc maybe scan my update sets and then create a score kind of thing on the left hand side uh and then we can write a script to interpret that so let's let's see what other information we can put into uh oh sorry i need the resources i've not created a scripted rest api for a little while this is in the global application so you'll see as i switch the application here and i'm just curious did i put this um now i'll put this in default see so a pgd example instant scan let me just create an update set i wouldn't normally create stuff in global to be honest i don't know if i needed to be in global i was just very much rushing trying to build something and just see how it worked i need to check that the screen at this resolution now i've shrunk it does that actually look okay on uh on youtube so if you can just even just let me know that or if i've ruined it when i look at this it's looking very pixelated but i think that's just because that's the preview so i think that at that resolution you can still see my screen okay i try not to show too much you don't need to see things like the uh url bar so you don't see the number of tabs that i can end up with but yeah that resolution is still looking okay right let me know if you think it's not um maybe then i can start to put some stats up into some of this space on the left and you know let's just see okay so we've got a deal with we've got to deal with python um let me see if i can open the directory as well i've got the directory open here let's do what i need to do if i start with a text file and i'll just call this like update name okay so that's just uh if i save this save this file into my counter files and i'll call this pgd update set so i don't know how it's going to deal with line breaks in obs so we might end up with lots of different text files but i think python should be able to to handle that so if you see in here we've got f open okay so i'm gonna call it file underscore update set equals that's what i want so if i copied this i'm going to open the file and it's called the pgd update set so pgd update set text file and i'm going to write a text string into that at the moment this yeah okay so i haven't got any plugins installed so i'm going to write the file but text strings wrong i want to set let's call it text update set i i don't really work with python to be honest i just googled everything here um it makes sense but it's not natural to me it's not that difficult you know if we just grab this for example i know one thing i learned is you can't put in you can't combine integers and strings and stuff it's very hard oh deaf programs tuned in excellent thanks for for checking uh checking in on the screen quality so with python you can't put um different data types in the same like non-strings in a string to concatenate them so what i'm going to do here is just take if i just take that information i've already got i've already got it up current update set display value so if i write that value into here and then i close my file you'll see a little bit slow if i save that okay in within 10 seconds this file should be updated okay if it's working right and i haven't really changed anything i've just added to my python script if it doesn't work then i might need to restart my application i don't know whether it takes anything into into scope i would have thought that changing my script there let's just check i've named it correctly that's plain text yes i would see that um i'll just show you quickly what this looks like so my counter files directory i basically if i put this on the list view you'll see i've got a this is my main shell script okay this is the one that's got my uh rest api call in it i don't really need to change that i just get a response and dump it into my json file if you just remember this is what's going on okay so i've got my executable okay so i've got my executable here this is run pi calls the shell script and that runs the shell script every 10 seconds it just keeps running it's on a sleep because i'm scripted rest api get my json file calls the python script and creates text files what i want to do in here is create multiple text files because then i can start to layer them up in obs okay so that's what i'm trying to do right now now i've stopped running it if i run it again does that change anything in here if it doesn't then something's wrong we'll just play with the scripted rest api and i'll maybe try and figure out afterwards unless it's changing a different file i would expect it to give me an error actually it doesn't look like it's airing that's working so what did i call it this one it was just updated then 2304 there we are it is working okay perfect so theoretically we are good so we've got update set let's just do it let's just break it into different pieces for now um i think they've expired anyway why have i not got my explorer open let's open editors scope um i'll call this application just so we know that that's not been written yet and if i copy and paste again and we know our enter will do it so this will be update set xml count perfect so then in my python script i can basically just copy this out and i'm going to rename that to scope i know my variables are not named very well i think james isn't watching uh text xml count see i can't help using camel case um update set that's name and this is going to be scope so this this right now has just given me a model for adding other things in oh that was a definitely a typo i need to just change these names count before okay so that is going to give us current updates here that's current scope there and this is current xml count xml count might be a little bit um uh obtuse is that the right word uh you know what does xml count mean but it was the best name i've come up with at the time so i need to string it so look i've got three different files then getting set and if i go to obs just check let's see what's going on no one in the chat we're a little bit quiet but hopefully this is uh this is useful for anyone that's uh mucking around producing content and competing for those prime slots on on youtube to talk about all things service now so uh shout out to everyone that is producing content whether it's blogs um writing on the community answering questions uh making calls for creatorcon is it calls for let me just check this out and get the information for you on that because it is relevant if you want to speak create a con and knowledge call for speakers just trying to find the link here it wants me to sign in okay i'm just gonna share that link yeah so [Music] through friday i think today is the last day for the create com um and if you want to present a session then it closes monday okay so i'm just going to share that in the link because uh maybe it'll be useful if you if you think about being organized enough to put some content together i just turn the camera on and make sure my green screen doesn't fall over but yeah shout out to everyone that's producing content the live coding happy hour guys um as i said at the start of this were it was great to see them all back together i've certainly been tuning into that for a number of years um james neil's just started doing something regularly on a on a thursday uk time 8 pm roughly so make sure you subscribe to his channel as well um yeah so maybe this is useful for for people that are producing some content what i'm going to do then i've got my files what i'm going to try and do uh maybe i'll show you how this is looking in obs i don't know that's a little bit painful then isn't it if we start going i don't know i can't cope with that and i feel like that's going to break me um so what i'll do i'll try and just very quickly everything's moved hold on let's just just test out studio ah okay it's because of my resolution and you can't see the difference there because my black screen background okay so i want to keep this um pink ribbon um at the top left so if anyone was tuning in to any of my videos in kind of october you will you'll know that that pink ribbon is for breast cancer awareness and you can see just the remnants of that i dyed my hair pink in in october and i haven't been able to get my hair cut since so hence you'll see me wearing all kinds of different hats which i need to jazz up this one is is very old-school doesn't quite fit properly but does manage to cover up the hair situation so um yeah i'm going to try and keep that ribbon going um and let's see if we can get some some text in here so what i have to do is create a source so if i create a source of text and i'll call this update set name okay and that is going to read from file and that's the key here is that you read from a file and that's update set text there perfect from the size so that's very big bring it down a bit that's too small so and that's goldilocks right there so i certainly haven't got enough space in my my screen at the moment to to fit this thing on directly so what i'll do is put it on and then scroll it i think or i could make the text more static so don't write out um current updates there or i could just write out the actual display value there perhaps and then use and then use obs as a separate source yeah that's changed instantly the problem is the number of sources that are going to get built up so you know i'm not very advanced at all with with obs so i'm sure there's a better way to fix that name title and this is where again naming conventions become important so update set name now i'll just show you what's going on there i've got this going on okay so that's that's happening in the background it's too big so if i take that down a bit and put this over here now i'm not sure that you know i was talking to raph about this and he said why does anyone want to know why would anyone want to know what bets that you're working on i said well i don't know they might not but the point here is that i'm able to use my local mac terminal because it runs a bash shell to make a call to a rest api using call pull some data down from servicenow live and update a text file and pass that back into ibs so it's more a case of more being a bit of a poc than than anything it's not that i think that everyone really wants to know this stuff but i think it should be interesting i think what's going on i need to sort my layers out let's put large screen further up yes and then update set name and title should go under my last screen i think then what i do with my properties no i add a filter to the text and the filter is a scroll okay so that's what's going on at the bottom so let's just see fast and let's do what sort of transition we just do a fade there we go okay so you notice there's no space in there so let's put a space in at the end so at the moment there's no space and hopefully when that next process is in around 10 seconds time that should still work and just give us yep as the space okay that sometimes doesn't give you enough of the delimiter so you might want to put something like that in there so you know it's finished and starting on the next one so i don't know what that looks and feels like for anyone that's watching okay so andrew's just giving us some comments oh my god you are doing dynamic text from python script from your instance i was just looking at dynamic text from file in obs today planning to start using it next friday excellent so i mean learned by someone else failing here andrew if you're looking at doing it i mean i can share these scripts with you absolutely um basically yeah this is what's going on and now i've got my uh update to set name data set scope updates i don't if you remember when i was doing the community service kind of series that um yeah so this this is definitely uh um a large t-shirt i thought i drew that um yeah we're doing community service and saying oh a large i actually went on the back of my estimates i think hold on medium i noticed that the medium was done in green and that really screwed up the the uh the green screen yeah so that's i said 20 minutes for a medium oh yeah large i said that's it that's a whole series that's a whole episode in itself so i set a timer uh i couldn't find a way to dynamically update my text file for timers now i've realized what i could do with with that i used to play with unix back in the day i never really played with python apart from with my raspberry pi um out of necessity um but it's close enough to javascript to be able to pick that up i could run a file that updates my file locally and produce a timer for example i mean you can even take like inputs from the standard in and so on so you could run a timer if you wanted to maybe you want to have a break on your stream and say well back in five or something like that uh i just went full bore and said well if i can fire a cold command chuckle like that if he ever watches it um that will hit the api and just pull down json it's literally that simple so if you can get the json then i'm using python to just interpret and produce my text files this is uh count what you can also do so at the moment i'm layering up um you can see just underneath the ribbon there i'm layering up different text elements and then that's going to get very busy on my scenes so one thing i've seen other people do is maybe have a static graphic file that will have like the nice yeah nice ui if you like um just and then you can either have the text hard coded into that or it's just got the frames stuff like that and then you can just put your dynamic text in there and just scroll it and as long as you've got your layers set up correctly and your transparencies in you know whatever i you know use it adobe or whatever but as long as you've got those things set up your layers will handle it so you can kind of frame your screen um let's just see this again in action right so if i change i was i was going to start updating my scripted rest api and then i got distracted by what update set am i in and then i was going to create a new update set so let's do that i am in global let's create it in global so i'm going to call this pgd up in my game i called this and there's a little play on words i don't know if you picked up on it but i said to raph uh when i was talking about this that it's a little bit like gamification so if you're following along and maybe maybe i'm doing a series on um instant scan or something and you just start seeing that number just start ticking in i'm thinking also we can start to pull some information from elsewhere now maybe like i said i can pull some stats down from things like i don't know grc make sure that my instant scans are running correctly on the update sets that i'm building at the time and you can see the controls on the left hand side perhaps so let's see so i yeah you can see that's changed instantly um i'm up in my game so yeah anything i can do to to help with that andrew i'll be more than willing to share some some stuff on what i've got going on i won't share my bearer token with you but i will share the rest of it so uh right now i've got nothing in my i've got nothing in my update set so but you can't see that let's just put the copy and paste duplicate so i'm going to change rename this and that's different we're talking about this and you can't see it so this is update set count that source is not i don't need that to scroll actually before you maybe you'd put it on a horizontal let's change that to zero just do that on a vertical scroll just just for a bit of difference and then if i change the property and point that at my other text file okay so yeah i'll never really play around with are you um okay i'll never really play around with obs while i'm live on the stream because it feels very risky to me um so kind of doing that in the other window potentially while people are watching it's a bit risky okay so string count is coming through as is that is that the wrinkles nice there okay i need a bigger number in there if it kind of works let's just put that in the middle um i'll just fade that in you can see that it looks a bit weird with the with the zeros maybe let's put something in my update set so right now i haven't got my scripted rest api resource all my api actually captured so if i just update this this is name is that going to break it that's reset spot definition okay so if i call this um get results save that hopefully you see that one change sorry zero change let's have a look in our yes there we go just changed to one it's happening roughly every 10 seconds depending on how long it actually takes to do the round trip the script's running every 10 seconds going off getting the information and then updating the text file um we do get some stats on kind of round sorry the script then sleeps for 10 seconds that's what's actually happening um so we're getting some speed here yeah it's more like getting closer to kind of i think that's 20 seconds by the time it's actually updated the file so that's what's going on right whatever information do we want to try and pull down and like as our maybe think about jazzing up the uh the graphics around it i don't want to load up my my scene with all different text files it's getting a little bit messy but now that i've got that information coming in and so i haven't got the scope in on the top left at the moment if i go and update my rest api i can start getting some more information in that um and then i can start thinking about putting that in and where to put it on the stream so just checking in looks like we've lost everyone and it is getting a bit late so i'm going to probably go for another hour um thanks for anyone who's tuning back in now i want to where do i go where do i go with this let's think about it applications so let's go to entity types i'm going into grc now and what i'll tell you what as well worth talking about just then i'm in an update set i i'm a big fan and i know chapter page duffy and and let's get the link for the women now is it called women now i hope i've got that right yes straight off the bat women now. um you know shout to i changed is just tuned in yeah i was going to paste this in the link i was talking to paige one of the mvps for this year about batch update sets um i'm a big fan of them and you know i was looking to try and fix that up in the instant scan so i've built instant scan to be able to scan not just the update set but everything in the batch or everything that's a child of it i'm just going to call this one um glc data what i'm thinking james i don't know if you can see the uh what's going on it's looking a bit messy on the stream i'm pulling down um i'm using a bat shell script to get to so this is all service now stuff over here basically where's my style i can't see style let's start said okay so it's not green nowadays isn't it so yeah this i'm hitting up my servicenow instance and i'll just show you that so did i submit and make current yes you can see my count has gone to zero um if i change this to what is that refreshed yeah james um i said well i'm gonna go in after the live code and happy hour i just really wanted to do this so i was building this last night while you were streaming about your unified portal stuff and i'm like i want to try it out i'm going to see if this works okay so i've got my i've got all this built but i didn't have it plugged into obs and yeah i didn't know what it was going to kind of feel like to be live and have this changing over so if you see on my uh top left it's telling you that this is the uh up in my game underscore grc update set if i and i've got a zero scroll in there when i switch this okay that's going to within 10 seconds or within 20 seconds i think we've worked it out you should see those those details changing don't worry about the interface side there we go and you see at the bottom as well that's all the details um in different strings so i'm using um yeah bash to keep running i've got an executable that fires that and it runs every 10 seconds calls my scripted rest api dumps a json file python then interprets that into various different text files um and then i'm using them uh plugging them into to obs the thing that i'm missing um at the moment is the kind of the graphical overlay so i don't really want to load up too many values in obs and i need someone to sort out some some graphics with it but yeah that's what's going on and then i figured well everyone dropped off the stream you can kind of see the numbers although it's gone back up um i figured well i'll try there's two things i want to do i want that number up there to handle the yeah at the moment i'm hard coding it i want it to handle batches basically and it is dealing with my current update set but i feel like i can do it a little bit differently um in there so i want to get account of all the updates within the update set now remember that's only going to deal with the if i go and change that script resource it's only ever going to be one it's not dealing with the number of hits the number of updates so i feel like that's another metric that might be helping to kind of gamify the stream when you're when you're working through things i can just show that things are changing things are happening beyond just watching a stream happening um you know you can see what's going on but it's a sense of progress and kind of gamification that i thought might be interesting to to bring so i've got the batching that i want to do like you can see here update set in batch um i don't want to get into batching too much now but i'm a big fan i'm going to go into this one so you'll see that if i make this my current update set um if i make this my current update set that should go to zero and then i'll start to build this in have i got already nothing in here so if i call this service now apps what i'm going to do i want to get into instant scans but i feel like that's a different that's a different session so i want to set something up that i can connect instant scans into later okay so i'm going to try and bridge the gap but if i just start building some uh some controls now so i think it's cis app no cisco i know i can did i have to fix it sorry uh james portal page for for what kind of thing there because i might have missed the timing on it um it's been a long day mate tell me about it i went to bed about 2 a.m last night and let's just say i said that i would only go for no more than two hours yeah so why can't i access this um i appreciate you tuning in mate i've got your talking here uh if these come from i want to get i want to get hold of these apps and i have scoped against them in the past um have a good evening have a good weekend thanks james so let's just show scope yeah that's a field let's configure the table just take a look at the structure of the table trying to think i've done this in the past do a browser overlay oh i see what you mean yes yeah i've got that actually let me if you you haven't gone yet you're replying um i'll cut this uh this one let me i'll just i've got a uh the kind of intro thing that i just knocked up literally someone raph my good friend colleague sent me uh a template video thing for uh adobe after effects and i just went to youtube got the free music actually i was supposed to play music tonight i forgot um just to see what uh i was gonna put some classical literally classical vinyl one in the background anyway there was a six second template clip and i'll grab it off of youtube free music [Music] so yeah come up with the logo myself and everything so that little pomodoro timer in the bottom there is a browser overlay so some of the dynamic text that i'm dealing with um right now is because i couldn't figure out how to get dynamic text working so if you want things like timers you can do that for sure um you just need to create a little script that will update a text file for you and set the start value um yeah browser overlays are cool but that pomodoro timer thing it served a purpose it was a little idea i had that didn't work out but yeah browser overlays um are certainly an interesting way of sharing some stuff on there um i can't remember how i was scoping against entities so if i want to scope in my entities against application so it doesn't look like maybe i change the entity type filter entity type let me just see if oh this has got a funny attribute if i configure the dictionary is it that did i have to override something base or something base start yeah it's that one so just switch it up to profiles and i'll just put this in defaults i don't want to capture this change but if i just change that to false from here okay won't let me change it at all but it will only take that out okay so maybe i'm slightly yeah breaking what they intended there i know why it's there you don't want to be scoping against things like uh yeah some of your system tables you wouldn't want to do that this is a slightly different use case i feel like it's done i've done right maybe it's not that much of a problem why is it still not letting me in is it because it's cis because of still not letting me in i've done oh let's put it back in hasn't it it's gonna delete it from here when i open it and explore and delete it that's always a good question is it loud on the audio yeah thanks james i haven't tested it man uh i just thought that uh i tried but you said your officer don't don't reply nothing wrong with doing a delete mark is there sometimes we do have to brute force things but i'm not recommending this approach just really proof of concept stuff just want to show what is possible without being bound by some of those restrictions let's see if that's helped me all right still not getting it what is it it's locking that down definitely scoped by application before table choices show table names on label let me just get rid of this one as well i didn't need to do a three i should do it as well last chance sysap that's not really advanced chance because i know what else i can do no it's not having it okay so that there's that's that's one type of application all right there's also my apps right so go to this table here that's obviously a store app that's a store app let me just configure that table because that extends this app if it doesn't know we're all list there we go all applications for 344 of them then we go back to try and create a new entity filter sometimes the easiest things are the most difficult things that should be easy take ages you tell a customer oh yeah that's uh that's easy and you end up spending it down and you've got to explain to them why did that take all day you said it was easy so if i just save this very quickly i got filled in just get rid of that for now let me down the field on what i'm doing anyway if i've got an entity filter i should probably go and put that attribute back in afterwards but i'm not going to gr dot set value let's just see g r let's just explore the record and then g r dot set value is cisco if i can do this before the job runs then the laughing scope let's just reload okay so you can see it doesn't like it because it's kept the underscore okay it's not giving me the label so it shouldn't really be in there it has recognized 344 in there can edit application in studio [Music] application administration we should probably put active is true on there let's just refresh the condition not sure why i would have applications in my instance that aren't active 344 is quite a lot um let's just take a quick look at the list get this one 304 yeah okay still got a couple of people tuned in so just uh let me know what you're thinking i know i've got some um pretty rubbish uh looking stuff on the street maybe i should switch it back to maybe i should switch it back to this one you get the full screen there um just for now just because the other one's kind of a proof of concept but here you can see what's going on i'm in there the default grc profiles i've got 11 updates in there if i look at these apps then is there anything in here that i'm not going to touch licensable folks i feel like i don't want to exclude anything but in case i miss stuff but i don't really want 344 things in there either let's see what let's fill out the licensable stuff we've got 62. that's a little bit more manageable obviously global's not going to show in there so let's go and tweak our filter and say licensable is true or name starts with global this will give us something of 63. yeah okay uh use owner fields i'm going to just say empty owner use default just put myself in there now actually i'll tell you what i would do because i won't use either field well asked because of that ui policies just got a little bit chipped up with each other and if i click update hopefully that takes me back to my stack was wrong there if i look at my entity type i haven't got the entities yet let me just update entities from filters okay this should not take too long there we go okay so now i've got some entities we've got 63 entities now available and let's just create a control objective i don't know if i'm going to lose people going into this detail but what should i say instant scan pass active okay so i've got control objective and i've mapped it to my entity type which means i'm going to get 63 controls i probably shouldn't have done this yet i should have gone and selected the ones that i want to have owners with or in fact tell you what to let me just let that run let me make sure that's finished processing it's still running what you don't want to do is while it's running you've mapped it in and then you map it out it's two asynchronous processes they don't really know about each other if you make changes let let it settle down and then once it's finished processing then make another change okay that's one good tip especially if you're dealing with a lot of volume in glc don't yeah don't tease the system put it in take it out it's gonna get messed up you are asking for trouble let this just right it shouldn't take that long to be honest okay let me just try to do something yeah so i just took the entity type out that should have triggered the process to to retire those controls you should be getting retired if not it might well be because i've i've broken something with my full flow uh with my full flow so i don't want that many controls open a new okay i don't recommend doing that oh god being compliance yeah okay don't recommend just doing that on your instance um especially not if you're a customer this is my pdi i can break it if i want it's my party shouldn't be taking that long to delete multiple gr query let's just refresh that it's 41. okay that many controls we could test this against a background script actually and see which is it shouldn't take this long 20 seconds let's just count to that see how it's done there you shouldn't take that one to delete multiple it's not you can imagine um if you create a lot of records in grc we're talking like get your entity filters right first use that check first okay once your entity types are mapped to statements and you've got a lot of entities in your entity types these things are going to multiply it can very quickly get out of hand okay that's what now so i'm back to not having any controls for my control objective and now maybe that's what i was holding up what i'm going to do is scope in okay i'm going to add entities in here so this is just going to create the ones i want but in fact before i do that let's make sure that my the entities i want i've got names on them so go to my entity type look at my entities i see something's got stuck in here when things get stuck um let me just turn this counter off just fade that okay and i'm going to try something here let's create a highlight video is it from now i know okay so that's okay i can bookmark it but when things get stuck in grc right you can see this entity type is telling me that something's happening but it's not really okay i know nothing's happening it's because i've deleted stuff because i've mapped things in and then unmapped them it's also because i've customized this instance with the full flow series that i did to try and convert everything to flow designer basically this content this entity type is track retiring but there's no retiring items in here so this doesn't have something the last retiring item to go and clear out and delete that the same thing happens for track running okay things can get a little bit caught up don't just delete stuff out of here um use it to investigate as diagnosis but i know what's happened there through i guess probably many years of pain uh that is a little a little secret there sngrc item generation table i'll just place that in the chat as well it's not documented but i've had it a number of times where things have got stuck and it's what controls that message at the top so i'm just gonna put another marker on there and maybe i'll remember i might click that out um let's put let's put that back on display and fade it back in so of my entities which ones do i really care about so the ones that start with grc all of these ones that start with grc and i edit it from here oh okay so do i feel right let me go to all the entities i don't need to do it because there's a many too many tables is that one in sn grc profile dot filter okay that's a quick way to do it and just put name taking ownership something that can be you know probably one of the bigger problems with grc is not it's not always the technical stuff um i need to sort classes out it should really have a class for your entities there's more information available on that yeah you could you can have the perfect technical solution um all the scoping everything it all makes sense getting somebody to put their name in a box that's a bigger problem okay so i've got an entity type i've got ownership against them i've got a control objective that says an instant scan pass is my control i'm going to add entities where um well class is empty owned by is not empty and maybe i'll see my name 17 what is this i've got some some stuff i don't really want this is where classes would be good right you'd filter not class empty but class equals service now application scope add those relationships okay 15 new controls created excellent let's go to my instant scan quickly and look at findings my source table no see this is missing for me actually the application in here i don't think it's i think it shows source source table but you could have a record on the ui action table that belongs to a different scope for example i wonder if i switch this back to grc to global up in my game that's grc data so i can go and populate yeah let's put let's put those things in here right we've got my control objective add to update set okay you can see that's currently on zero um add to update so that's going to go up to one i've got my control objective in here i'll go to those entities with my entities here there so i want that class itself add that to my set okay you can see those numbers going up um hopefully you see them going up yes up to 17 now in the stream so i've got some data in here what i want to do in my update set i'm going to go and try is my mic on yet so just for some reason before before i'm viewing myself ah the glc data if i go to this one instant scan is in global i'm going to create a new one scan if i submit and make current should see that change and if we change we're going to crack a beer oh it's changed there we go cheers to that right so instant scan what i want to do and i don't even know if i'm going to be able to do this i know the apis are locked down but if i look at my findings where have they gone yeah just can't find it if i configure this table and ideally in an ideal world i wouldn't do it in global i'd add a scoped field to the table but it's not an ideal world okay this is quick and dirty right now i'm going to add a type will be reference it has to be referenced otherwise this isn't going to work and it's going to be scope and reference 2 is going to be cis scope there we go okay so that is what's going to give me the connection i'm just worried about performance right so the look up now if you if you're with me and you can think about what's going to be happening i'm going to create a business rule uh that business rule i mean i could create a flow etc but as i say just want this to be pretty quick it's back to the table itself um configure if i just add a business rule in it's here to be ptt update um okay it's only going it could run on inside it could run on an update but the important thing is when the scope field is empty okay make this advanced you can look at a finding table and if i'm start building a script i'm not going to just write the script in in the business rule without understanding so this is a good one this is a business rule where i know that it extends that's this metadata yeah i'm going to kind of look in here and go right what can i get from here so so i've got my finding we've got my finding in here we've got product family source table says script we had access to the api we'd be able to populate this back but basically if i do a gr what's it called source rtr source equals table and on our you know just thinking here about condition for business rule the other thing is and source table is not empty and source is it's not empty okay i'm just going to save that so i don't lose it you can go because you're james has gone but if i put something on the backlog maybe i'll log into his github actually it'd be good if you could somehow i don't know how it would work but like rename but explore and have a title little just a little text box here that just updated the title because i end up with multiple explorers open and switching between i know you can't see my tabs at the moment that will be useful to me um this is what gr source looks like yes okay so gr source is going to have cis scope and that is a reference now because the records that matter i need to get i need to get global okay if i go to my entities i need that as a default so just copy wow wow look at that sis id it's actually called global that is amazing love it i wish i had some some sound effects for that i kind of knew that but i don't think i've seen it when i when i cared so much for it so that's good i don't need to get this id for that so what i'm going to say is here var id equals that or global right because if it hasn't got a cisco i'm going to assume it's global that will do for now gr finding i'm going to var gr finding current and i'm going to do a current dot set value u underscore scope scope id if i do that before then i don't need to do an update it's probably going to slow things down because i'm about to write a record i already had the record i've already scanned the record and now i've gone off and looked it up so if we had access to the api we'd be able to do things a bit more efficiently don't be surprised when this runs does that look good so current's coming in that's what you are finding get value source table your value source you need to wrap the gap there otherwise we'll be getting this showing up in our own scan results they should have seen the number go up actually on my update set right when this went in but i don't have a counter that updates the number of right records so i'm going to build a few things that maybe do that i just want to see how this will work and i'll tell you what we can do on that record right now oh okay look at you scope it's populated global what is it it's a business rule how could that be how could that be scope id no let's not do the set value there then something's wrong i did work but i'm getting slashed commands get mixed up a bit okay so are you coming back dr source get value cisco oh okay there it is oh so it's a business rule but it is a global business fine i didn't trust it i thought so gr funding dot add finding dot next we're gonna get let's do this see how long that takes that's right okay sorry i was looking away checking on the uh checking on the other screen i thought i had an extra viewer tuned in but it wasn't it was me in a different browser window so that's uh slightly disappointing but just hit up the chat if uh if you are joining and i'm going to wrap it up very shortly i just want to see if it's possible that's good scope on findings yes okay got some stuff in there that we don't want to see but let's do now a indicator template what is the life cycle actually of finding and this might tie with this might tie back with um something mark ruff was uh talking about with regard to knowing when a findings been addressed so is there a way in here so say this findings gone this is a well that's so i've gone into the check i need to go into the actual finding itself that's a finding right if i open that finding oh it's nice there's a task against it i didn't know about this scan task let's just check this one here if i just not look that there's no task shown in the menu but there is a scan task interesting count one so what does what does count one mean the number of times a record so that says increment exponentially there i've gone back to table check i didn't need to do that now so there's a target against the table okay we've got no findings in there that's interesting count one result i'm just curious about how do you know when a finding is resolved four minutes ago okay so that's been updated four minutes ago and it's still count one but does it go because there's something on here that says it's been dealt not mute i know there's mute on there it reason risky change not priority that's muted can't see i have new reason not a priority i am muted not applicable what does i've not read the docs you have unmuted the selected findings for future scans okay so from an indicator template perspective let's look at it this way scan findings i just want to do this quickly indicate templates i'm going to say this is instant scan we've got a few people uh joining back in so thanks if you're back um give us a shout see what what's happening collection daily type basic past i'm gonna look for the bad stuff so i'm gonna fail it if my finding scan finding yes that um good update okay um and i want to say updated created on or after last week or let's say and it's false seems good enough to me reference field is going to be our new field that we just created for scope and you cannot select more than that's the uh i keep seeing these messages in quebec but scan more than something fields it's just a message the get message has not been populated correctly minor tweaks to get that sorted i'm going to attach this to my instant scan control objective and they're being generated that's fine i'm going to move back into my grc data okay i'm going to add this to should see that changing all right let's come back to 17 should see that part to 18 after that um what else it's a mini record yeah 18 19 happy friday to everyone that's just tuned in and hopefully you caught the live code and happy hour earlier where they were doing a scripted rest api call um using the well scripted rest as a trigger into integration hub very exciting stuff but just be aware it is asynchronous what i'm doing i thought i could leverage that for this because i'm doing a scripted rest api call but because this is synchronous and cloud designer isn't um yeah the stuff that you see scrolling along the bottom of this stream is all coming live from the instance so what i was trying to do what i was thinking is if i look at i mean this is a good place as anywhere if i not updated my this layout let's just personalize so last result passed status actually as well status previous status [Laughter] i've got an update set on share actually that that does this for you if you just want some quick wins there's some stuff on there um check that out if i just go to profiles i'm going to do it in default um back to the default scope you can see that flowing so in here oh you know i've got the control risk i don't have the entity so therefore i can't tell them apart and that's literally all i've got going on in the share but as a version 11 you will also want to consider on your indicator and any list that's got them in there putting in status and previous status and you'll see these in the list at the moment it should probably be if it changed it on default view then it should pull through here maybe i've not done that in the best way yeah you can see that status previous status so i just want to execute these indicators i'm sure if i just go into the indicator jace what's up yes thanks for tuning in i'll tell you what i'm doing mate i'm getting carried away here um i've gone down a rabbit hole and i said i was only going to go for about two hours i haven't got long left um what is going on you see that scrolling stuff at the bottom of the screen um that is coming live from the instance so i'm just adding the ui action onto this choice just doing that customizing grc right now on my pdi because i can i own the risk of that breaking in the future upgrade but some of these features are just necessary things that make it easier and some of the stuff i have put on share in the past just little click quick wins like list layouts or so i'm gonna indicate a template right now and that's got some child records i think my update set on share i've customized this list layout probably what i should have done is customize the default list layout for indicator and then it would be shown everywhere but the thing that makes these indicators different is the entity and the entity is not showing out of the box so if i looked at this it would just say instant scan passes okay so what am i doing i've connected my in grc i've scoped against my application table my cisco application table um i've got a control objective that says that my instance scan will pass and now i've created an indicator template that's going to go off and look at the scan findings table for anything that's been created or after last week and is not muted where matches my scope i've added a custom field to the finding table to actually say that that what the source scope is because the source field is a document id you can't walk it um this is a and it could be many different records in the system right i assume every record that has a scope is called cisco so i've got a very tacky business rule that just populates the scope field on the finding table which will allow me to connect my indicator template into that and i've got some indicators but i want to run all of them i don't want to go into each one and click execute execute execute i don't want to go to the schedule job and run all indicators i just want to run these once so i've just gone in and modified that and changed the ui action to be available on the list choice so that's what i was doing i think when i saw your message those stats that are coming in along the bottom excellent so i've got the message here that's taking me into the last indicator result i'll tell you what i don't know if anyone knows about this uh i only saw this recently so if i go into a controller i hope that's in draft yes the way so because i did a list choice there this choice action and effectively it's a server action that's running against each one and then you've got the action.set redirect to currents so obviously current is the last record that went in this ui action used to do the same thing but now it adds this field this condition in here and for me this should be in every condition uh every ui action so that execute i'm gonna nick it from there from a test i'm gonna put it into here and it just says oh wow i forgot of uh my grc full flow has kind of messed with everything in here so i'm going to get loads of stuff it's broken out of baseline but look at that execute there that's a pretty standard set it doesn't care about that so anyway you've got set reader action set redirect url on your action it doesn't actually hurt to just do this test because if it can't get that list then it's just going to be a no anyway that's perfect i'm just going to update that i'm polluting my update set with all sorts at the moment um i don't mean default perfect cool polluting the default not a problem how's my stats looking on the stream 13 in this one okay so i ran some indicators i am jumping all over the place jay so hopefully you're following that what i was actually doing today is this okay this is what i was just mentioning on one of the channels earlier is basically i've got a shell script running on my local bash shell interface the terminal on mac is a bash shell that's probably as much as i know about i used to play around with unix that's firing a coal command getting the scripted rest api which i built last night i've actually built most of this last night that is getting me some stats is actually looking at my user preference table and it's saying what current update set are you in and then it's going and getting the information about that update set pulling it down into a json file locally on my machine my batch shell script then runs a python script which then chucks that out into various different text files these are all text files and obs which i'm using to stream all of this stuff around um you know it's putting the breast cancer ribbon up in the top putting me down in the bottom right um it allows me to do some you know little call animations things like that um that then embellish the the stream a little bit and make it a little bit more kind of a bit of a gamification so if i'm then doing a future stream and i say right i'm gonna do this you can see those numbers going up but that's that's the plan that's the idea some of the ui i'll show you one of the things that i've built um i don't know if you still tuned in mate i hope you are chatting to to you directly and you might not even be here but let me just show you what i've got um it's the best way i'll use this transition okay so the same information that's flowing along on the bottom that's just kind of what way that way that way yeah that information over there that information is then split out into various text files that you can see that way over there up there so 13 is a separate text file that's broken out from adjacent it's the thirteenth at the bottom the update set name the scrolling default is the default that's sitting next to the brackets grc profiles which is the scope so the thing is it just looks a bit messy but i was doing this earlier and that's what's happening then i thought well it might be fun to have some and yeah you can see this these are my kind of files and this is my executable that's running and it's polling every 10 seconds and i'm producing this so dynamic text files for obs that's what i'm doing right now then i've run these indicators i hope they ran refresh list pass false excellent so it failed that's what i sound excellent i need to go into the indicator result here so which scope am i in if you hear that indicator i don't know global okay so global's failed because global has got 166 findings so my control that i've got that says your your application that you're responsible for should not have any failings then i've got 166 here and this indicator doesn't care it's if you've got one you've failed however the condition on that indicator it's giving me an opportunity to recover okay so i've got a timely factor that's always important um i'm only looking in the last week and i've also got the option to use the muting so maybe we mute it i don't know the life cycle enough of the findings to be able to know when it's gone but that's the approach i've got so you mute it but for some reason i'm not seeing status populate down here even though the indicator it's definitely run and produce a result you can see here this got non-compliant so if i look at my controls now my controls which are and i can filter my controls and say well state not retired and show you that record your entity dot class is cisco if i run that these are the controls that i actually care about for the purposes of what we're doing now instant scan passes is one other thing i could filter on that and then what i could potentially do just to round this off so now i've got some results on my passes what we've got audit management's non-compliant global is non-compliant do we want to list each of them i don't think we do you know how would we display that was percentage um account it's group let's be grouped by 2 divided by 13. okay if i open this list in explore i don't really want to do that query and the table name if i change this to a guide aggregate control i'm not very good with guide active just because i don't use it enough i don't need any of that stuff you can add encoded query to glide accuracy i just wanted the list okay so so ga control dot add aggregate um so account and can i count the status i think i want to group by add is it add group why is it grouped by status i'll forget what comes out of this message it's going to be ga control.get let me know if you if you're in the chat yes i've got 13 and i need to get value what do i need to get on there is it g g a oh yes right okay cool so what i'm going to do there is don't know do i have to i like to use number i know there's a conversation on fixing stuff yesterday that's a raw okay back and forward this is gonna be an object okay and i'm just gonna go object dot status this is how i like to construct an object sometimes is equal to objective status or initialize some people would like to test if it's undefined and all that stuff well that is a test okay especially with this in front of it so if it is undefined then it will instantiate itself then i can say actually set the value of it now i'll set the count of it so you at the front there you'll be string status of course i'll try to be consistent with my name and conventions and forgot to be consistent okay got an object compliant 13 so i'm back oh you don't need a group bye thanks andrew you know what i i have to google this stuff every time and i'm not googling it right now so i don't need to you're here you're better than google um did you see uh jace was here and then he like messaged me asked a question and then never replied so i was talking to him and i was showing i don't know where you got to where like the ui that i've built here i was kind of showing that to jace but it's a bit ugly um a bit busy with i think busy is fine if it looks good but at the moment i was just doing a poc so i'm just going to cut it over that way thanks for coming back i just want to test out you know like you know you've made something and you want to show it and get some feedback as long as the feedback's good um although james neal was tuned in earlier and he said it was a bit loud but let's just see what you think of this [Music] just trying to jazz it up a little bit i've got a free template and just stuck a free audio tape on there so there we go that was all i wanted to show you but that's a little bit of uh up in my game trying to put a little bit of quality into the stream i've had lots of feedback from mostly from the same person telling me i need to change my logo and all that like well it's fine it works if i change it then it's going to look different and people won't recognize it now so i'm i'm not going to do it maybe that's just because i'm stubborn so this should be i just want to say far in compliance object dot compliant or zero just in case it's not there and this will be in non-compliant equals objects or zero uh i don't really want to divide by zero but i want to say var decimal compliance equals divided by compliance oh way too loud mug okay right thanks for that that's what i need to that's what i needed to know um i literally don't know how to turn that down so i'll just have to go back into after effects or something fix it oh you rewrote the aggregate pages okay i don't know when i last looked at them but yeah that's a it's a great way to learn you must have been naughty or something okay 15 feels like that's the wrong way around better than that i'm not 650 compliant either what am i doing wrong here let me just look at those numbers again object so compliant how do i get the i want 85 basically 85 85 compliant why does it work one way and not the other what am i doing wrong okay missing variable name oh yeah okay 15 but that is 15 non-compliant so where's my 85 surely if i just switch that around i'm just being a wally and i can't think about to get a percentage bbc bite size that's when you know it's either too late but you're having a really bad day i'm not going to watch bbc bite size i've done enough home schooling i just want a quick reference this looks way too advanced one minus so what it is mate i literally can't think right now one what there yeah there we go is that what we wanted that looks good so dot floor round yeah i said i wanted 85 i've got 85 got 85 but i've put the one minus there i mean it's working but is that robust it'll it literally it will do for me if that's what i wanted i wanted 85 ah so grab this there's anything that's obviously some hardcoded systems in there and grab these and switch up my update set to global i don't like working in global too much that's grc data i think it's this main one there hopefully that's switching up in the stream and then go to my all the way down um this is a bit dirty this script i'm literally just trying to dump some values in and pull them into um obs so you can see what's going on here so that's count it's object is already defined of course it is object [Music] clients i know that's not the most performing query or at least script in total and i'm holding it every 10 seconds so that can't be that performant either so what we should see look at that compliance not a number okay interesting got string it before json deck compliance should i string that see if that changes i don't know if that's refreshing in here oh fun the compliance of the scan of what you're working in the stream yeah i mean glutton for punishment mate so yeah what i'm working on it's not quite there yet but yeah what i'm working on scanning it while i'm working on it and feeding that information into the um live stream while doing it so if we start breaching some some of the controls then that's going to flag up instantly why is that not coming through it's not a number it was a number before and now it's not a number let me just re-run that back in here sometimes explored can be imagine look at that too sometimes explore can give you a false positive on things so that what oh look type java object is that what it is so it just tell us that about anything would it ever tell us that it's an integer it'll tell us it's a string let's do a two string why did i string the whole thing instead of java object but notice that's gone to 85 not 85.00 that should go pretty convinced because i'm pushing it into json but that shouldn't be a problem what else is going on here set the body yeah i was hoping that what you were doing on live code in happy hour with flow designer trigger i was like that's perfect and i was going to you know put it in here but i think the async bit caught a few people off guard there i can definitely see the use case for wanting to do that just to trigger it yeah you know i could i could send a thing that goes off and say well go and run the scans and then kind of pull against them so that i'm actually triggering the scans for example i'm thinking about all sorts he's still coming through not a number i don't understand it that's the joy of life coding happy hour though i'll tell you what when i was kind of it was great to see dave and josh back on there um when they first started doing that stream and you saw them failing it was like wow i'm human they're human uh it's it's been great watching that series kind of evolve but yeah when things go wrong live yes this is that's real life what am i doing wrong here why is that going not a number in here i don't understand it i don't really want to log i can't catch this to debug you can't follow it through what am i doing wrong round is it saying something saying here it's not one of them going to be zero i've got something wrong scared yeah so i just get rid of let's just get rid of the math round let's just get a number in there take some of the complexity out of there let's just see if i can get something in there there is a number even if it's not a number yeah exactly that's the thing sometimes you know explore is great for building stuff but it's the same with anything you need to test it in the environment that you're going to run it in so just because it works here isn't a guarantee you need to see it working in your own environment in exactly where you're going to use it still going through my number though tell you what let's push some other stuff into the object so i don't want to start polluting the log files and i really want to wrap this up it's gone it's nearly 1 a.m by their name throw it in the background script yeah that's that's my next got a shared variable because i should have called that income i didn't id query status hard coded control let's see what comes out ah it's because it's dividing by zeros of course zero divided by zero i thought about this earlier and then didn't handle it why is that not coming so that means my aggregate's not running correctly because i know okay let's grab never run things in the background script making me do things here i'm gonna do it out of the fact that you could well be right i just never use i mean it just looks horrible for starters ah so these things don't exist now that doesn't exist now does it you think it's the dynamic is me right oh yeah i mean to be honest i don't need that because i'm going to hardcode sysids i forgot to return gs.inflow json. stringify hold on a minute it's working why is it failing here then it's not in scope why would is me fail oh because of who's running it because it's relying on gs. get user the person that's running this ah luckily i've got my sis id already hard coded so let me put here user id calls boom good spot ma'am i hope it's that if it's not then it still makes change still makes sense to change it so owner here equals that there yeah that's the dynamic yeah exactly oh did i not paste and stay that makes perfect sense i wasn't even looking at that so i can put this back in and actually that's not a bad thing because now i've got the count of the individual controls because it's great to see a percentage but it's you know one percent or something 10 percent or something it's like okay what's the volume so here i'll get the volumes as well so we've enhanced it look at that we've got our number there compliance 85 perfect man amazing ah if only it were true it's just a false that's a false positive basically the thing that is true on there is the stuff that's failing the stuff that's not true is just basically probably hasn't been scanned but we'll roll with it so what we've got then is we've got our json so in my python script let's create a few more of these steps and i'm sure we could do this actually one more let's just put compliance in there for now text uh compliance percentage file yeah update set compliance it's not strictly true it's basically application pg update let's just see now i've got yeah i'm sure there's a way to make python a bit more reusable build a function and you can see here where you've got repeatable code in any any language it doesn't matter what you're doing anything that's repeatable can be pushed into a function that's a fact i don't know whether this will create the file for me or whether it will fail because i don't have the file in the first place it doesn't look like it's creating did it just create it yes it did why is it giving me a one i think there's a stronger term it's made five white text er xml count plus value in so if i knew python better i'd make that a little bit tidier as well here that should go up to 85 yes 85. so then i don't think there's any way to conditionally like color it in in python but you can get certain things to trigger but there's a remote somehow there's a remote api that's available in obs as well so i don't know if you've ever seen people with the um like it's not um it's a deck it's called a stream deck or something like that and it's programmable so you can change it so like if i if i press the the um you know a certain key just straight in front of me i could just get that roll in i could have sound effects etc it's possible to somehow i believe it's possible to trigger that for example that says deep i don't know how well that comes across it's just playing around um from a rest api so imagine that your control just failed or your scan just finished something like that something happens on your instance that you're working on while you're working on it and it somehow sends a rest from servicenow to your obs and makes a transition or something play i think you can even make it follow like this transition to that scene to that transition you can kind of group journeys together i don't know enough about it to be honest well that's what i've been playing with so i'm going to just get the compliance into this and then i'm going to wrap it up and play my final clip too loud finish my beer and i will surely regret this late session in the morning so this is compliance score percentage 18 maybe thing is you have to put the size correct and then scale it down offline on here so compliance score i mean obviously you could just put it into the ticker at the bottom that would be an option but that's almost too easy so if i just duplicate oops just going to change the properties of that file percentage and stop the scroll just need to change the actual text itself for some reason it's been sized down and then increased let's see what this looks like right so we've got our compliance score percentage sitting at 85 right now what can we do to fail some stuff we need need some findings so any of my findings so i've added i don't know if you saw this bit um andrew because you went away but i've added this scope field in here um and a business rule to populate it as well so that when the findings come in and i ran the script against every record when the findings come in we know what the record is because this is a document id and i can't access that information and well we care about things based on application normally so that should be in the base in my opinion how can i get let's go to instant scan ideally you'd have a suite in here right of specific stuff that runs if i just go to checks and do a execute a full scan how long is that going to take it should take a lot longer now based on my business rule because the api is not down go and get the record come back and that through the scan populate it i know what my record is and then when it comes in to write the finding i'd go off in the business rule and get the record again just to get the scope so i know that it's not very performant there ideally this will get baked into the out of the box code and maybe even open the api up a little bit so we know what we're playing and playing with or you know keep some of the core stuff protected for sure and then expose maybe a front layer of it so we we know yeah we at least know where the engine is in comparison to the fuel tank for example if you want a car shouldn't really use car metaphors so i'm not a mechanic but um yeah we're just a complete black box at the moment so i know that there's quite a few of us kind of unpacking what is going on with instant scan i've put a little attribute on there so that i can yeah make it meaningful i've definitely slowed it down put some go slower stripes on just let that run for a moment just messing with some of these when james was tuned in he was talking about embedding like a browser overlay so that you know if you want some visualizations on here that would actually be quite nice so rather than just having um those things over there i think that's where they are um we could put some pa charts as browser overlays in there as well some visualizations and stuff like that so they could be coming in a bit more static you know i'm just thinking there james is talking about kind of creating a service portal page or obviously we'd use ui builder to build a visualization for your obs stream so maybe that's um that's a next step it's now components over on the right-hand side i don't know how much real estate we need for this browser window to be like still useful i'm just going to go to the result now and just see what's going on what sort of numbers are we looking at 196. let's group them by scope task is something that's not exposed on the menu but task is then is it's called an insta scan task and obviously that's for handling the what we've got remediation i've got no access controls on my ui page yeah that's um that lld file app with something i'm working with that i think might be a useful dev tool so i've got profile showing up now ui action visibility so i added a cancel in here so that then should if i rerun my indicators if i go to my in my recent history my control objective yes so my control objective is just a template for the control um and then i've got a control down here for profiles if i go into this control it says it's compliant right now i've got an indicator for that which i should be able to execute from here hopefully that's gone down to 75 percent look at that so not quite real time and i've talked with um talked with a customer before about the concept of event driven indicators so don't just run indicators daily weekly etc but trigger you know maybe one indicator if an indicator fails then that causes another indicator to run so you can kind of get more and more granular in your checks from a grc perspective so you can say well if it looks good at the top then it's fine we know we know that's good but actually if it looks bad at the top let's then drill into it and use some event driven kind of logic to say well i'm only going to run this indicator if this thing happens maybe we can tie in you know the scans completed runner run a grc check but yeah we've just seen that change now because my profile app is now well is that why it changed yeah non-compliant um my instance is probably getting hit up by my um api that's getting pulled at it by every 10 seconds that's gone non-compliant guess what i've got an issue i need to go and fix this thing so if i go into this issue so what's happened here then because i would have received an email telling me you've got a failure i've got an indicator result in here when i go into this result i've got oh this is me customizing the form a little bit ui action visibility and i should be able to yeah view live records that that'll take me to the finding that's a snapshot of the finding at the time when the indicator ran so i can come in here and mute this now and say it's even not applicable it's a risky change if i mute that and go back to my control okay and so i've fixed it look at that in look at that issue at the moment that issues in new the control is non-compliant i'm not going to it's not a big thing here i don't need to go and solve that with an issue right and use that to track my work i've just gone in fixed it if i re-execute i'm very happy that my oh i thought that my list action was working doesn't sound very happy about that i hope because that's muted maybe my all conditions wrong so you did that ah did that run again i should see activity on here probably my condition yeah that's one second time to indicate template i think my indicator template is got the condition isn't all so it's created and that should have lost there should have passed i don't know my status isn't showing up basically i have broken some stuff on my instance with the um with the full flow stuff i was doing i've noticed some some areas in here so that's fun again even though i'm muted to find it [Music] i'm new that's strange isn't it so my condition is not hold on right what's going on here so my condition saying muted is false reason so if i look at let me just configure this is the thing another thing i want to do is try and map out the data model for the scans i'll just go to form layout yeah that check you rule so don't walk into the check so the check itself ah this is frustrating not understanding it so i've muted it for next time it runs but i haven't muted it this time let's just look at that indicator template i just want to pass it i don't really want to get into the details too much now it's getting far too late i just can't let it go muted let me show show related on here in fact let me put that muted this false or check the reason is not empty if i update that that should update all of the indicators night you're saying night i don't know what time is that mate yeah thanks andrew i am gonna call it quits after this oh yeah it's getting very silly but thank you um it would be nice to have a little browser widget yeah i've not looked at these other stream stuff does that just run there they're still failing i'll tell you what i've done enough tonight thanks everyone turn your audio down okay a little bit turn your audio down because um let me just switch this over thanks for tuning in um really appreciate anyone that's watched it tonight i did say i was going to keep it to two hours and i've been going for nearly three hours so ah i'll regret this in the morning i hope i get to enjoy my saturday um but i really appreciate everyone tuning in hopefully this has been useful and andrew i will share those script files with you if you want them turn your audio down because i'm going to play this intro outro one last time and say goodnight so thanks for tuning in don't forget to subscribe [Music] bye you

View original source

https://www.youtube.com/watch?v=3jWl2ADlyjQ