#ServiceNow #Regress ATF Recorder with Paul Morris
hello and welcome to phil goes deep on today's show or tonight's show uh depending where you're watching from we've got a very special guest and we're going to be focusing on a particular subject which is um i won't say close to my heart but something i'm quite interested in something that i think is um often described as the gift that keeps on giving okay so something about atf automated testing but if anyone's messed around with that on servicenow you know that it might take a little while to get things set up and running so this uh this tool this application that we're going to be focusing on is brought by um one of my fellow dev mvps from servicenow and it's going to be i think helping make that process a whole lot easier so i'm going to bring bring the guest in now and i'm hoping that if i've got it right that we'll actually we'll actually hear him so let me just cut this cut this over just setting that up and don't forget if you're tuned in and you're not subscribed click subscribe and click like and tell all your friends right i've got paul morris on the screen um can we hear you paul oh something's going wrong hold on i can hear you i can hear you um let me check right okay so i've changed something should be speak now oh now i can't hear you so try now testing one two three right i think we've got you i think we've got your apologies uh sorry to uh the viewers sorry to you paul um we didn't do the final checks uh just before we went live we were talking too much about uh about the good stuff so just say one more time hello testing one two hello testing one two perfect right we've got yeah sorry ah beautiful well thanks for joining us thanks for joining us uh me and my pleasure coming on the channel uh so do you want to do a quick intro um introduce yourself yeah sure um well while we're sort of talking about automated testing today my whole i guess real passion for service now in general came from going to the knowledge 14 conference that was when we used to have big international conferences where thousands of people would get together and it was great and there was no pandemic no diseases no nothing it was just a fantastic get-together i was just so amazed by how many different people were there and the different ideas i was kind of there on an assignment to learn more about automated testing so back in 2014 there was no atf automated testing was something that not very many people did and i wanted to find out more about it i was just walking around the expo floor talking to all the really big players at the time the big service now partners which back then i guess was like fruition which i think have been sold and bought multiple times since they were fruition just seeing how everyone's doing automated testing um just getting ideas there were some vendors that were making automated testing apps as well that hadn't yet been released so it was really cool to learn about that so after my assignment i kind of built my own automated testing tool that was very crude and then came back a couple years later i think it might have even been knowledge 15 the next year in vegas to present on it and there were i think there was one no there were three presentations in total at the whole conference in automated testing there was one that was run by a servicenow and there was one that was run by um another guy i can't remember his name and then there was myself and that was real excitement about automated testing next thing you know um servicenow had released their own uh automated testing framework and i had was in the middle of writing one for the app store as well so i actually released the first automated testing application in the ecosystem just before servicenow's atf but atf was so good compared to what i could do the project was kind of canned from there but i still kept being interested in the automated testing framework and there were some features that atf didn't have that my application did have that they eventually released and i thought they were the biggest feature that i never made that servers now still haven't made was the ability to record tests because there is a bit of investment involved with creating atf tests if anyone's given it a go it does take time it saves time in the long run but it takes time to initially set it up and with my understanding of the the platform i was pretty sure i could build a sort of crude tool to do the recording and as i kind of went deeper and deeper into it there were all kinds of technical challenges that just came up that i never expected it ended up being a lot harder than i thought it would be but i eventually got um something that was usable and then started putting up putting it up on the servicenow share site and i'd gotten to a point where i invested so much time in it i thought everyone seems to be going to crowdfunding these days due to the nature of the application you couldn't really go on the servicenow store because it requires a lot of api that you just can't use on the store and a lot of restrictions that you just can't get past unless you're in a global app so i just it i'll just stick it up on patreon and um maybe a few passionate people will help support support me and spun up a website as well um and the patreon pretty much just funds the web hosting of course but i'm not doing it for money i'm doing it um because i like doing it and i like um helping other people get the most out of atf and the most head of service now as well and i pretty much built it for me really and if other people can get used out of it as well that's great well there's there's a lot to to kind of unpick there um yes so i was thinking when did atf come out was it istanbul or jakarta yes it was istanbul i'm pretty sure yeah so and it's been kind of get in love every release right they've added new features in one of the things they've done is is released like quick start tests and they're bundled into the applications now so that that takes some of the pain away of getting you started right but it's not quite you know if you wanted to do your own journey from scratch that's where you know you you can copy it but i think from what i've seen and i've only played with um so the application that we're going to focus on today is called regress atf recorder right um yeah i've downloaded it from share it it's free i did see a patreon thing at the top and and shout you a coffee and i have to be honest i haven't i haven't bought your coffee yet so uh maybe i owe you a question um but it looks great and i i kind of feel like it's um i'll compare it to i used to work in at one point in kind of a vba world right automating office applications visual basic um for applications i think it's called so there yeah before you started just writing code you'd click record macro go through all the keystrokes that you needed to do to achieve your like end result and then go back and tweak the the code right and it would just get you started and and you've got the baseline you don't necessarily know the methods that are needed to do those things but then you can go in and plug variables in and everything else so um that that's the kind of thing that i see it see it as it's quite similar to that it's like a macro recorder for for the platform yeah that's it and it doesn't doesn't necessarily do everything four years you still gotta do some add some bits and pieces in it's not super intelligent that it captures absolutely every little thing but what i really wanted was to take like 95 percent of the work um of tedious creating like all the little test steps i wanted 95 of that to go away yeah so the there's only five percent left basically and that's i think i pretty much got there and he's close close to 95 maybe i saw a review obvious i did a little stream last night just um on something completely different um and just mentioned that we were going to be doing this and when i was trying to find i couldn't remember the exact website uh but i think it's regress dash atf dash recorder dot com yeah um jace dot pro um on on jace benson's website jstop pro he actually did a review of it and that was back in april last year so when did you kind of first release this out into into share is it it's version 1.4 now yeah it's been it's been there for a few years i think actually okay um have just been kind of chipping away at it over time and it was only maybe three or four months ago i thought i'm gonna do a nice looking website um i saw inspired from sn utils just had like a really simple clean website i'm like i just want something like that that's cool looks cool and i haven't done any web development for ages so let's just put something up quickly see what i can come up with so what i wanted to check as well was like we've got we've got a good backstory there a bit about yourself a bit about how you got into service now and you know the the knowledge conferences that used to take place in person and maybe maybe fingers crossed they come back one day um but yes it is they are coming back they're coming back right for you though long journey because that accent is not local right you're you're in australia yes so you native australian you've been there yes yeah born and bred yes um my dad is from wales and i have many cousins from england i do often get mistaken for being english for some reason probably because i'm so white okay but that would be my dad's my dad's side being from wales so i've got his white complex i think i'm wider than him somehow there's not a lot of sun in wales um so yeah why what so i was going to say why is this needed but i think we kind of covered that it's painful to get started but how did you approach this how's how's the thing built or should we just get into it should we start to see the tool yeah take a look at it and i can just ask you some some questions from there so uh i think it it first started when i knew there was api in g underscore form to check if stuff was mandatory and like read only it's not in the public reference but it's there so i thought well if i can do that i can just reverse engineer atf so and like servicenow has so many code snippets that are public including the test steps also that code that client-side code was also there so i was like no just what i don't can't work out myself i'll just reverse engineer so whatever atf is is doing to check i'll just do that and that's kind of how i built half of it so i i like to say i've installed it and i've created one one smooth test like click here create a record submit it something like that um and then i just took a quick look at you know okay it's created the test steps um but i have not looked at how how that's actually happening um so yeah i didn't check also that you've got permission to share on zoom if i if i allowed you that and also shout to casey uh for the for the stickers right sndevs.slack.com um yes uh so if you're wondering that's uh that's the slack logo i've got it managed to get it stuck to my microphone so have you got the permissions to share yeah i'm i'm yeah i've got a share screen host disabled participant screen sharing i've gotta make you host okay hold on this is my bad like i'm taking over make host taking over the airwaves it's all good you should be a host now and you should be able to should be able to share oh yes here we go there's a bit of a plug there my website excellent well we dropped that i think it's in the description on on youtube actually um oh that's that's great mark ruff's on the line as well he's in the chat shout out to mark uh sorry i didn't check back on the chat he can hear us both that's good to know because we're 15 minutes in now he said i can't hear you i can only hear phil that would be that would be disappointing yep so i guess i feel you're talking about the version you were looking at was just the one on share the one on patreon i've just added a couple extra features i think i've got the um email notification capture feature so that was another thing i was thinking of like there are system logs that capture all the emails why don't i just look at the email log after the test and then generate test steps based on that so this is for customers customers that are kind of like they want to test their emails but the emails aren't really getting triggered in tests or if they are they go into a group mailbox somewhere and they're hidden so the kind of end user that's doing the testing so is there already a test step for confirming that an email was generated because i i don't know atf as well as i should yeah so i can't remember what version a couple versions ago maybe they just added a test step for checking if um emails have been sent and you can do a variety of different things like check the subject line has certain words check the body of certain words check that it was triggered by a particular notification and as as a developer most of the time what i've personally been using atf for is for testing my deployments if i've got a fairly sizable update if i've changed lots of different things and i want to make sure it works in tests or pre-prod or however many environments you have it takes a bit of time to test all these things over and over again each environment and you might not have a tester able to do it and i just wanted to be able to go commit update set run tests and then confirm that the deployment has worked um so basically that's all we want that's what we all want that's all yeah built built this app because as a developer i wanted to be easier to make those atf tests in the first place excellent so my job a lot easier so there's there's extra features behind patreon so you patreon is is an area i don't know it i keep seeing it on certain people's sites so um there's what you you sign into patreon and then you're like a premium subscriber to you to your channel on there yeah yeah so from there i can post privately where i just upload the newest version just the update xml file and i have a i haven't um updated since i did my last release but i just have a poll of what featured you want to see next and i put a bunch of features that i thought would probably they're mostly just things i would like to do at some stage if i had the time or the motivation hoping that the patreon does give me the time and motivation um so the thing that got voted the most i've only done one release um being a bit bit busy but the last feature that was asked for most um was a test step for creating a user and impersonating them so you might since i'm sharing my screen if i go and try and create a just quickly just creating a test normally usually you start off by impersonating someone every good test starts with an impersonation and that's one of the the challenges right it's the you build your atf's based on these test users that might not really exist or you're not testing it clean so you do need to be able to make sure that you've got a user with specific roles to make sure your tests are clean you're not picking up any permissions from somebody else you get this message here from servicenow impersonating an existing user may cause unexpected behavior for the test avoid potential issues by adding create user step instead so that's the service now that's the service now warning i haven't come across any major issues doing impersonate but that's what they're the issues are pretty much the same creativity that's right sorry so you created the test user for the purposes of testing and then obviously it goes up to prod the test user doesn't and then it comes back down after a clone and that user's not there anymore that's i think where the where the break is yeah and as that message is there but i it was never a problem for me the main thing was kind of what you're saying is you want to remove dependencies on data where possible so in six months time if you don't have those users or groups or configuration items or what have you in this case users you don't have to worry about it because it just creates a throwaway user on the fly and then discards it um so that was the last feature that i put in by vote i need to put up the next poll to get an idea on what feature people want in next um how many people are using in the app how many downloads you've had or how many content um on on share i think it's like 300 400 or something um the patreon has been pretty i've got a very small loyal base let's say of um followers i haven't really had time recently to be promoting it um maybe tonight we'll get some extra fans well we'll have to wait and see yeah i mean i don't know who else is tuning in shout out to ashley ashley sn um i can see ashley's in the chat as well but it looks like we're running you know i don't want to give numbers away but i'm sure if you're watching it you can see there's about five five people tuned in so uh whether they're all potential patriots potentially yeah exactly so um i think developers can really see the power of this as well because you know one of the things i've tried to do with customers is is talk to them about investing in atf in terms of we've built a story right and that's the estimate for the complexity to actually deliver the story but should we also put a little bit of um extra time in to actually build or maintain the atf steps and then like i said it's the gift that keeps on giving you you put that into production and when they clone or upgrade this would take a lot of that a lot of that effort out of it right yeah oh it does definitely does speed that up a lot so um i haven't yet run through an example of it let's see it so let's go let's go for an example let's see it we've got david huang on the line as well so shout out to david he's also uh at some point from from australia but now more on my time zone so he's watching it on his lunch break i guess see it sounds like a plan um so one other thing that the patreon subscribers do get is a guided setup because there is especially if you want to use this for your catalog items there is a bit of setup that's required and i also kind of turned it into a bit of a tutorial as well so um i there found a blog post on the community that showed how you can um create your own guided setups because you can but you have to change some acls to let you do it it's just one of those things where it makes me you think like why isn't this just available out of the box for everyone to use um why do you have to modify so many fields i've got um a share app as well that just creates the acls for you that lets you make your own guided setup so um for those that might think it's a bit daunting to set up especially if you want to use it for service portal for the patreon subscribers i've got a full guided setup that takes you through all the steps that you have to do and then all the optional ones um like if you want to enable access for non-admins that's that's doable as well so i have to have a colleague that was using this to do upgrades and they just had a process coordinator it wasn't an admin just go through and use this app to create tests in preparation for an upgrade um so there's lots of stuff you can do here but it guides you through how to set it up for service catalog and how to go through and create your own test and how how you can show your support as well i'm testing catalog items and such but i'm once again i digress so i might just start off by just going to the properties and just talking about some of this this is a record producer right it's not properties as we might expect indeed this is a record producer in disguise so um again i got this idea i think i might have got it from mark even i can't remember i think it was another mvp or just posted like a a random this is a random idea like you could create your own ui page but i was a bit lazy don't really i'm very good at jelly so i thought i'll just use a record producer because that's already got like all the form controls that i want like check boxes drop downs so is it system properties behind this yeah there's system properties behind this so this is just the user interface for system properties um because the system property interface isn't very intuitive it was the first thing they struck me actually there's a dependency i think when you change you tick something uh it might be the enable when you disable it a load of the options disappear so yeah so i i built it on this idea that there's kind of three different degrees that you might want to capture things in a test so i've got three predefined recording levels so firstly is actions only when you don't care about the fields or anything like that you just want to kind of go through a bunch of actions and you don't really care what ui actions are visible what fields are visible along the way so this one just kind of records actions which is for a patreon feature here recording of all outbound emails that are sent and um oh that's just an extra setting because funnily enough as i was building this functionality i found that the actual test steps to do outbound emails have too many bugs in in paris okay so i just ended up using record query instead to look at um the notification tables that's why i've got that setting there um anyway i digress simple is the one i use the most that just kind of captures the anomalies for example it only cares when fields are not visible when they're read-only or when they're mandatory rather than just capturing every single field that's visible on the form uh same with variables as well paul does it capture them when it's going along and it looks at a form and it says okay short description on an incident is mandatory so therefore when i'm on that form recording my atf it takes the state and assumes that that's what it's trying to assert as a value in the test so it will say that's mandatory it should be mandatory yeah exactly okay so any anything that's mandatory will get sucked up and there'll be a test step created for it and then exhaustive this is the full regression everything imaginable is captured it's a crazy crazy level of detail it's good for upgrades if you want to make make sure or at least you want to know any tiny little change has happened this is going to pick it up because it's checking everything this is not visible menus that you click on on the left so you go to the menu click on the left does it check that they're visible or because i haven't built anything around that it's mostly about the all about the forms it's more of a um form snapshot tool that supports the journey to the catalog sorry so it's like the journey that you're going through so if you're trying to take a record from you know through its life cycle what state is that forming as it goes through the life cycle yeah exactly so we're talking talking about forms a bit so let's just let's go um let's go simple i'll show everyone this use create new user test that when impersonating i should mention as well i do have custom which just lets you pick whatever you want okay um so we might go custom just so i can show off the features that are in the patreon version and show the kind of most basic level of recording so we'll just um save this there's some other options in there as well might come back to them later so i'll just submit that record producer and it's updated all those system properties so let's just start recording so we've got a bit going on in the chat here ashley's saying um yeah the the biggest thing holding folks back from using atf is is that initial time to set up and really looks like regress can can speed that up mark was asking um what do you like what's your level in terms of how much you usually capture with atf because you could keep your test pretty basic or you could go through and and go nuts um checking every field and it's in its behavior but i think there's maybe a slight latency between the chat and what we're talking about because then uh obviously you covered the exhaustive right it's everything nuts and bolts yeah yeah exhaustive for upgrades simple for like your little user stories you just want to deploy it to test and make sure that the basics the basics are all there but would you you know is it easier to start with exhaustive and then go into your test and delete everything out or is it easier to go in and start with basic and then add a few things in what what do you think is the i think i would i would go with simple pretty much all the time unless i'm building tests specifically for an upcoming upgrade or you need for whatever reason you need to be super super specifics so i recently used exhaustive as an example um i have a customer with customer service management and we just started using case types so we needed to migrate cases into two different case types and one of the case types had to be identical to the way case already was all the fields all the ui actions everything needed to be identical which meant we had to copy all the ui actions pretty much everything had to go up to this new table layer so before i created the new case type i did an exhaustive test on case and then i just changed the table to the new case type i created and ran the test and it instantly showed me there were like two fields that were read only before and suddenly weren't read only and i probably never would have caught it no manual testing and i ins instantly got feedback on it immediately and when we did eventually your test failed basically yeah the tests the tests failed immediately um so we were pretty much able to get the new case type like for like because of the exhaustive test but you might not always want to do that because the more level of detail you capture the harder it is to maintain that test because one one little thing changes that might be acceptable yeah yeah your test fails and it could fail early as well yeah so i think this is going to depend on on the audience right who's doing the testing and and that level of specificity because i know even without take automated testing away you could ask the same question in testing right if you're doing it manually how granular yeah how specific do you want to be what's important what's acceptable and that's what i was kind of asking about the menu items as well because i've seen that come up in some test cases in the past you know organizations have said these are the menu items and yeah i guess you don't know what you don't know but sometimes you do get additional menu items that come in um that you weren't expecting and that can throw um that can throw out right so that's probably not not a bad idea for i might add that to the feature backlog just something what i probably would do it wouldn't track what you're doing because that's it's kind of too difficult to be honest but i could probably just by reverse engineering how service now checks the visibility just build a big script that just says what's the current state of my menu yes snapshot the menus that you can see yeah maybe give the ability to pick like a top pick some top level ones or so you can just say impersonate a user just say generate a test based on what the menu is now and that gives you that kind of regression snapshot it's really good for upgrades stick it on the backlog you heard it here first folks uh yep it's coming in the next vlog it's on the road map now it's the next release of something safe harbor yeah yes definitely a very very safe harbor there got a shout out to uh dhruv as well drew's on so um shout out to drew thanks for tuning in and david's also asked is recording atf on the portal possible i i kind of know the answer to this but i'd like you to talk on that one yeah yeah well i will come to that in a moment so we're just talking about install just general form usage before so um let's actually start seeing some results so you clicked start recording i know you i watched you do it we didn't kind of narrate on it but you clicked yes start recording now we see that message in the top right so i've i've made favorites of all of them but in the in the menu you can start recording using whatever default option you set in the settings or you can just go straight to the free modes i talked about the action's only simple and exhaustive and we're using a custom setting which is simple plus the patreon features okay so we've got our incident here um it's a very i think it's completely out of the box so i'm just going to save it it's just letting me know that it's added a snapshot to the test to form snapshot headed to test my pre-generator test is over here just in the description it just kind of tells me everything the recording level i used when i recorded it what version it was recording on and just an output of what i was using in the settings so it was capturing all emails um i'm not capturing as part of the kind of simple settings it doesn't capture fields that are changed by scripts it only captures read-only mandatory and hidden it only captures visible ui actions and it only captures non-mandatory editorial visible reading those for the variable states so this is anyway this is the summary of what you're going to capture it's not actually oh it's got some steps in there yet because you've you've not stopped recording right you've just saved the incident and this is what you've got so far yep so just this far it's like it's created a user based on me my first name second name is basically taken most of the fields in my user record and pumped it into this new record including the roles so those i've got admin so it's just giving me admin and those are the groups that i'm in so it's trying to replicate me as close as possible without being me it knows that i've opened a new form it's done the submit resolve submit resolve save create work order and this is stuff the human could probably never pull off as well because it it looks at every ui action that's there that's visible yeah you'd have to go into the form from every menu create test in the other window okay that should be there that should be there that shouldn't be there but at this point in time and then move forward and check the next thing and check yeah there are some limitations there around what i can and can't do due to i will i've tried to reverse engineer whatever i can but unfortunately a bunch of these ui actions are client-side and there's absolutely no reference in the html for those objects that can be tied to a ui action they have alternative hidden objects in the in the html but it's just not possible to link them together not everything can be reverse engineered unfortunately but i've reversed engineered what i can which is most of them so i think i've got it what you are actually getting from that sorry is it is it the right click context menu on the on yeah menu or is it the callable ones of them yep so it's any um ui action that's in the context menu that's client callable i can't reverse engineer it never worked out a way to be able to do it um but for everything else it's there which is most things um so is that tunable can you say like where your ui actions are does it care about that does it say oh that's a form one that's a related link no it's the test step out of the box is just the i think the only one is your action visibility it doesn't it doesn't care where it is visible yeah all it cares about is his ability i guess that's that's actually all you need right if it doesn't matter where you can see it because yeah you might be in two or three places or just one yeah i also added helpful notes there that kind of tell you what's going on as well so you see that step there it says create an impersonate temporary user based on user who was recorded which is me and then it tells me the incident that i used to create the incident that was created for this one it's more handy when you're opening existing records as well just some of the bleeding obvious your actions were visible during the recording the fields that were populated the field state your action click by user that kind of thing so um that in itself probably would have taken 15 minutes to do at least manually that was just completely instant and or you might have copied it from some some other test or quick start test but then you've still got to spend 15 minutes going through it and re re-jigging it effectively yeah so personally i just go with this um another example maybe let's change the uh impact and the urgency on this one work notes has become mandatory and a work note does it write the test at what point is it kind of recording is it recording every click or it's whenever you submit a form in any way whether it's a save or whatever it's essentially taking a snapshot of the form um i thought it would just be a lot easier from like a application architecture point of view to do it one when you're submitting actions because you again like you could change urgency and then change it back and it hasn't actually changed it so it doesn't count you're not checking one times one is one it's not doing any of that validation because you haven't submitted it but at the point of submitting it it's it's testing that yeah so i did think another thing i was going to put on the backlog ages ago is to have something that lets you take a snapshot like whenever you want so you could just do like a category and a subcategory change or an impact on an urgency change and then maybe there would be something here in the menu that says like take snapshot but when i was making this i didn't want to impact on the integrity of the test that was being recorded i didn't want to have any footprint on the recording because then it would pick it up in the recording that it exists so i wanted to make it as separate as possible so like the view test and stop they're just urls i didn't want to put any ui action in here i wanted to make it as clean as possible you mean yeah if you put right i'm with you so you've got if you put a ui on there it's going to test for that ui action that's only there because you've got regress running yeah so what did i just do here um open existing record so where i did the set field values where i say impact urgency work notes and you can see it's picked up there that work notes is mandatory and that the record has been saved should it be why does it not confirm just curious um you when impact won urgency won and the priority is one but it didn't it's not showing that in the field validation it's a good question so the reason why that is is because i'm using the simple um level of recording okay which i just i arbitrarily decided that you don't always want to know fields that have changed by scripts so i just disabled that in the simple one if we go because we're talking about um this custom thing custom so i can go and enable that and re-record it nice one i was just checking like there's this is configurable it is possible it's just not on this because you've gone for simple plus the the patreon steps so yeah i guess we i'm just conscious of time paul um should we see those those patreon features and the portal yes yes that sounds like a good idea so i'll just quickly show i just um stopped the test just then okay and it's just added to the end that it's picked up that while i was recording there was one email that was sent off um it was the email with subject incident blah blah has been opened on your behalf that was sent during the recording now i just mentioned here that there's currently an issue with validate outbound email triggered from notification that's why it's just a record query but it just looks at the record created in step 12 which is got from the last ui action 12 yet click ui action target table who it was sent to i think i've just got email recipients and it looks at the notification that triggered it so it's not just emails that were triggered while you were recording it's emails that were triggered related to the records yeah because there's there's all kinds of stuff that gets sent in service now that you don't care about yeah i figure all you really care about is the record that you've recorded otherwise it's just noise focusing purely on that what if it threw an event and the and the notification was tied to the event um i do cover events as well it just doesn't look at a notification so it's looking at this email log table yeah so whatever fields on there i think this email log has reference to an event as well notification um yeah event so i do my code in the back end we'll look at events as well but there weren't any events in this particular case so it's possible to connect you can do that yeah excellent okay i mean i'm throwing swerve balls at you you're catching them all so works with it works with works for flow as well notifications triggered by flow it also picks that up as well excellent this is um that was a little more difficult to reverse engineer so so do we want to um go to catalogue then yeah because um so there were some questions going on in the chat and um you know david said his is recording on the portal possible mohammed obviously is using regress knows it quite well because he said it's possible using service catalogs on yes it's possible service catalogs on service portal need to add a variable set ui scripts that comes as part of this utility and you are good to go uh and then he said instructions are available on the utility page in servicenow share um and then i think mark's trying to throw some swervables at you and saying what about virtual agents no not yet that's on the backlog yeah yeah uh yeah i have a i have a day job as well well he said he's also get too crazy here it's not available out of the box so it's not like you could go and reverse engineer it from there if it's not currently available on the baseline stuff where if there's if there's not currently a test step for it there's probably a good reason why there isn't because it's difficult to reverse engineer just before you go into portal actually um shout to rook meaney thanks for tuning in she has asked us is it possible to record related lists so while we're in that form view and obviously we're checking ui actions are possible are we able to check the related lists are there visible maybe checking what ui actions are on the list maybe checking that there's maybe that's another another backlog thing so that's i guess the missing five percent okay you can generate all this the stuff i showed you quite quickly but then the um related list that's the stuff the little bits you have to do manually but you you would go and you do your recording you'd go through the journey that you're trying to prove and then you just intercept like at that relevant point add in a test step for the related lists right yeah yeah that's it you just insert the the test step where you need to put it in basically so most of it's there but not everything is there there's so many test steps that are available now and um i've got a list of what what test steps are and i'm not supported on the share page that you can have a look at but there's so so very many now as with each version they just um come up with more and more stuff it's possible to create your own as well right i remember creating one yes you can two or three years ago and it was to avoid that impersonate issue so i selected the i specified the role so i said select a user with this role rather than i never thought about creating yes sir i said get a user with this role but not one with admin okay so admin doesn't count yeah and try and find that it was it solved the problem for me at the time um but yeah i guess every time you add a custom test in there then you know someone would have to do something on regress to go and access it yeah exactly so one day maybe i would put the whole thing up on um github it's a private repo at the moment but maybe one day probably when i can't work on it at all anymore i'll just leave it up there in the public domain and people can do what they want with it i mean people can do what they want with it now really i mean all the code is visible yeah so i can download it from share and i can go and extend it to my own needs yes anyone anyone can do that realistically if they want to um it's fairly complicated how it all kind of ties together in the back end but there's plenty of servicenow people way smarter than me out there that could pick it up and do all kinds of crazy things with americans i did try and um i thought well let me try and run this through the the uh disco application scanner that i'm working on as a little little pet project uh but because it's in global i didn't i'm dead and scanned global um i i've been worried about bringing my pdi down um so yeah i haven't done that there's a lot of yes there's a lot of api that's not documented that was used okay so there's no support here at all unless we buy you a coffee right if um yeah pretty much well slack is probably the best way to get my support just by messaging me on slack and then buy your coffee afterwards right priority will go to patreon supporters of course so um let's let's just quickly go for a catalog item one so i'll just use the catalog item that i used in one of my community demonstrations i did a while ago before we do that i might just tinker with the properties a little bit so let's let's go exhaustive this time i think let's capture absolutely everything is there any impact on performance while you're going through the forms have you noticed that it slows down a little bit anything like that um there's there is a bit of a weight once you try and save the record because it's got to do a bunch of stuff um and i guess when it loads the form if you've got it active there's some stuff that goes on but it's really only on submission there's a bit of a slight delay um that's to be expected right you're you're carrying yeah you're carrying that weight to save yourself some time but yeah that's absolutely it so i'm just getting exhausted this slowness is because it's a pdi so let's impersonate as well because doing a test as admin isn't really a good idea it's not realistic so how about ito user let's go by tool user so you've set your recording on first and then impersonated or you've enabled itel to be able to record so you've just caught me out there because i forgot to hit record is it like doing debug right when you go debug security rules you're it still knows that you're really in the session behind it yeah it it kind of does it's kind of um the way a lot of um every the the recording that's going on is all stored in session variables but for some reason servicenow doesn't clear those session variables when you impersonate someone so the recording all the recording data can persist in memory and you can impersonate whoever you want and you don't have to worry about them needing to have access to to run the recorder session variables are fine for something like this right it makes perfect sense but don't build things that are sensitive into session variables right they can be absent through the browser um i've done some funky stuff with session variables a long time ago and um i don't think it i don't think i'd recommend it it was a very necessary situation um that probably in the end turned out not to be necessary yeah don't don't try this at home yeah session variables are fun though you can you can play around with them but they're accessible to the browser yes and you know you can you can change them through like javascript console etc yeah yeah absolutely spot on so you could mess with this recorder and completely stuff it up if you really wanted to it's just for recording things like who when did the recording start what level of recording um it's pulled in the appropriate system properties and cased them so if someone else changes them during your recording it still has the same settings and it keeps track of every record that was opened and a bunch of other stuff as well i wanted to make sure i wasn't using any custom tables since um servicenow's licensing has changed somewhat so um now you have to use used custom tables with caution depending on what license agreement you're on of course so anyway i'm i'm i tool now i hit the recording i'll just refresh this catalog item order whiteboard markers does on formload is that a trigger to write to the um the the recording as well is it just to get it's just as a check like i am i recording am i recording on a table that's supported um so if you test so actual user won't be able to see this but i do have another window that has another session open i can find where it has gone to oh they won't be able to view the tests that you're creating so you can't track them as you that's going along right you need that here it is incognito window yeah so i've got another session open here so another way i like to demo this is just to do a bit of a split split screen that was some work i was doing today very small side by side so this time on my itil user just gonna fill out some stuff justification so there's a few different variables we've got raise fours read only um that's mandatory that's mandatory so let's just put some stuff in just thinking here um does it work with ui pages things like taking assessments it's just it's just um catalog items and glide records like glad form it's so that's because i guess the way you've exposed the yeah the functionality that you can't go and put it on every ui page because it just wouldn't be yeah yeah um but it relies on the glide form api okay so it doesn't know what's been submitted so if you've submitted a record and created the records on the server i'm just thinking when you take a survey um or an assessment then it creates lots of other records i don't know how much you know about the assessment instance kind of data model there yes it's hard it's it's hard to report on it's hard to report on it fun to play with um let's put it that way so at the point that it saved it to the server you're not getting hold of that you're doing it all in the client side right yeah essentially um there is some stuff that happens on the back end but but not much it's pretty much entirely just passing data from the client and then processing it and turning it into test steps so um i've got this on the right just to show what just happened so maybe i'll go back just so people can see the form it's it um detected that i was i2 user that i was using the order whiteboard markers in service portal portal so pick up the service portal you're using pick up the catalog item pick up the variables that change value which is sorted justification it will validate all the read-only variables so there it's checking raise four is itil user i tool user and then it's just doing the variable state validation of absolutely all the variables that were there what was visible what was hidden what was read-only what was mandatory all that kind of thing and then picked up that i ordered it so it's somewhat limited in what it can pick up on it's only just picks up on ordering doesn't pick up on quantity or anything too fancy it's just kind of the the bare bones can does this item work can i order it don't care so much about quantity because that's pretty out of the box quantity is always going to work one would hope so and um that's that's catalog item in a portal and i think from gleaning from uh like the conversation on the on the chat the the that's a tricky area to build your test for so this is this is really great stuff for people that obviously are using a lot of catalog items on the portal um there's other places on the portal that uh that needs testing sometimes right the the actual glide glide record so viewing the task or maybe doing something with a task on a portal is is any of that available here or is it only catalog items in portal it's only catalog items is all i've built i haven't looked into like checking in an incident view for example um i just kind of focused on the areas that i found that i needed to test and that's what i built for yeah no and it sounds like that's for a lot of people um that's probably the main use case for the portal i'm just thinking of other cases that you know things i've seen where the portal's more than just catalog uh that's why i was asking about taking assessments uh that that's something yeah yeah it does happen um in in the portal so i need to get absolutely a pop filter i think every time i say portal um you can you can use atf to do those things you just can't use regress to automate it absolutely at the moment yeah yeah let's go with that um so just continuing on where i was before as well um sometimes you might want to do the whole end-to-end process um including this particular workflow i don't think i built approvals into um it does handle approvals but only in the back end not through service portal um i've got a got the request here that i opened that i raised the catalog item from so i can go into this and just save the report submitted a catalog item and have you now impersonated a different user to go and do the approval yeah is that um i i could well do that in this case this workflow doesn't have an approval so it's just um still using the itil user but it's just just showing you guys that it's automatically related that record here to uh test step six so the thing was automated yeah the thing that was submitted actually got generated something valid as a result of it yeah and then it's just gone and done the exhaustive testing on the form so this is where you can really see how exhaustive exhaustive can be there's a lot of ui actions that are not visible because there's a lot of potential ui actions in there so it knows what is available on the table and says here's all the ones on the table but these ones are not visible that's it so look up all ui actions on task or the whole kind of table hierarchy that are um active and if they're not visible then they must be hidden not checking the conditions checking that they it's logically deduced because you can't check that something isn't there if it's not there unless you know it's not supposed to be there yeah yeah it kind of worms this stuff um there's some good stuff coming into the chat about um yeah so mark said nice nice with the notification checks okay so that's that's getting some some love i'm not sure exactly which point um ashley was referring to when this came up so that might have been about notifications but just generally i guess around citizen development those who need atf for their service catalog uh but don't know how to use atf so i think this is uh yeah maybe around the fact that this is a biggest use case for for um atf and the ability to leverage regress yeah catalog items are like probably you know on the pareto and now one of the one of the features i do have on the backlog but i sometimes like i might be having a shower or something and i just think like what if i built this feature kind of thing and one of the things that occurred to me was that i could build a silent recorder for catalog and then you just you could just have it running and people wouldn't even know that atf tests are being generated wouldn't that be something so that's one of the things i had in my backlog a silent recorder so something that's sitting there and you just say to everyone like go and play with the portal for or the catalogue whatever for you know the next half an hour or two hours or the whole day and then you just gather all of the tests all of the the types of things that were generated and and back kind of yeah record them yeah turn them into tests yeah exactly i mean good meaty um or high in protein um results that you can then turn into something useful i guess but you you might get a bit of noise there yeah you probably would get a bit of noise um so let's just see if this how well this is working this is this is the instance i actually built the app in so sometimes if i'm like in the middle of building a feature something might be broken um but i think it all seems to be working pretty well at the moment so i just went into a catalog task i could change a variable let's just change the preferred color to black for example close the task now we've got 21 steps so validate theirs at least looks like it's all working so the recorder keeps track of every record that you take a snapshot of and if you open every time you open a record it just scans the whole thing for reference fields and if it finds one that's kind of in the history of records you've gone to it picks it up and just substitutes it with a test step marker so i guess for every record you open and that test step has a output of a record it keeps this big list of records and test step markers so it can refer back to them in related records so it knows that so it's so different it's not hard-coded value it's the record that was in test three or the one that was generated in step four that's it so i went to a task and it's just um picked up that parent and request item both those fields were where the request item of the catalog task so it's just linked it to step 13 which is just the way i coded it was just look at the last ui actions with that output and link it up um so it's just done that so when i clicked your action step 13 that was the ui action of the ratm and i've also got a on top of that there's also a record likeness algorithm as well that um also adds the values of particular fields that are in the i think it's in the um based on what was mandatory i think it was his description even mandatory here doesn't even fulfill all those requests i think on the in the ritm and then we go to the catalog task is the description populated but not visible oh it's the description it's there it's been a very long time since i built a lot of this functionality because i actually started building this tool like probably two or three years ago so in in the settings you can configure what fields you would consider for likeness so if you open an existing record rather than trying to pick that static record that might not exist when you run the test it just builds a likeness query of i want to get a record that was like this one that i was recording because chances are that record will have gone by the time you run the test again for reusability in this case it's not really necessary because it's picked up the existing record so you could just get rid of those but if i didn't pick up the reference if i just opened a random catalog task it would just put in here give me a record that has a description of that in a state of that if if anything that i'm saying makes sense it's complicated it sounds like you've thought about so many different angles and problems and i guess that only comes from from using atf yeah it was something i i didn't even consider when i was building a recorder that you can't you don't want to literally say i opened incident yeah one zero zero zero one because that incident isn't going to exist in half these systems what you want to do is say i want an incident that is as as similar to that as possible based on certain criteria we shouldn't be hard-coding cis ids right and that's effectively what happens if you've got the reference so uh and that combines yes in in testing as well absolutely your test fails but actually everything was good it's just that record that specific record doesn't exist um just i'm a bit conscious of of time paul uh i think there's one more question that we can probably get to because i mean this looks amazing i don't know if you're getting that from my i'll just keep asking more and more questions and does this work what about this i'm excited about this uh it's amazing and thank you for making it available to people of course so mark has said maybe i missed it i think we did touch on this but what if you build custom test steps like they shared in the creator toolbox or platform academy from the past two weeks um i don't know the references of those creative toolboxes but if you're i think i need to check that out as well because i've been meaning to create some tests some custom test steps myself but i haven't got around to it it was what was going on go on sorry sorry i wanted to build one that was just auto populate all mandatory fields because sometimes in a test you don't care about what fields are mandatory but one additional mandatory field can just stuff up all your tests because you haven't built yeah you've populated the record it's not haven't yeah you haven't built that into your tests so yeah test depth just says i don't care just populate the field enough for me to be able to submit it um but i just never got around to doing it if anyone's ever watched a developer do a demo um yeah it might be ffff or it might be xbox cx cxe or whatever no one cares what real values are in there we just want to get through the process just let me get this record created and move to the next step because that's where the fun is so yeah being able to just pre-populate um mandatory fields i think sounds like a real valid use case from from testing because yeah the records get deleted afterwards anyway so my question is based on mark's question if i built a custom step or if i've got something that i think is really necessary for me in regress yep where would i start if i wanted to go in there like where's the starting point to extend because i looked at the script includes that are listed on share you've got quite a few of them um which is there's a lot of the there's essentially a script included for every um test step okay i think that's great because you you then don't break other stuff yeah there is some that are very common and they inherit some of them are so similar they just extend each other with a few other bits and pieces but this is the kind of stuff i like like to hear because this is really kind of going more deep into the architecture of it as well so i've got all these it's all based on test templates so i've got all these different test templates pretty much one test template for every scenario i didn't want to hard code this i wanted to use out of the box tables there's some different ones for different versions and such um like i've got one for multi-row variable sets didn't cover that it does capture populating multi error variable sets um nothing too tricky like removing them just like adding them for your basic kind of test um when i was in the incident before creating a new record or just opening an existing record all kinds of things um we could go into well we just showed service catalog so when i was just in the service catalog sp when it does its server side processing it needs it decides what what scenario am i in and it will work out that i'm in the scenario of a catalog item in service portal and it just generates um using mostly out of the box code actually it just applies this test template to the test these test steps in this order so if you had a custom test step that you wanted to add in you could come in here and you can just add it in there and then there's only two scripts that you need to update i can find them it's got a generator in it so those test templates those test templates are out of the box atf stuff so you use them to create common journeys in atf that say you know your your default baseline impersonate user create new record click ui action right that might be a test template you've built test templates for different types of recordings that you like common yeah common journeys this this is a good way to understand what um regress can do you come in here and it can only do what's in here okay anything outside of here it doesn't do um so that's based on the application equals regress oh premium so is that scoped but it's it's a it's a global app so it's all packaged in an app it's just not scoped um i've not played around with global scope it still has an application yeah and um yeah for a start within an application scope you can't create a test record so that just makes it straight away impossible right yeah and you can change the permissions but you're not supposed to do that in a store app you'll have to assume out of the box configuration so from the start this could never be a scoped app on the store just purely for that reason straight up let alone all the other complications um anyway i was trying to of course they've all got the word generator in them but the the monster here test step generator it's probably going to take a while to load because it's really big that message at the top warning this record has also been modified by open update set where's that coming from yeah um that's a little utility i built um to stop me from putting things in the wrong update set basically it just checks for any open update sets and if the record you have opened has been is in another open update so it just tells you um so you try and keep your things in only one open up that set at a time so someone doesn't accidentally pull something you're working on to another environment anyway um so there's this using i'm using a lot of system properties here um i actually did have someone ran like a best practice scan and pulled me up on it and said can you please replace your sis id with system properties so i created i personally controversially maybe think that i know hard-coding society is a bad idea most of the time but sometimes there's nothing wrong with it in my opinion test steps will have the same cis id in every system in every instance in the world unless they're a custom one it's always the same it's never going to change ever so it's just kind of like pointless busy work to me but i did it anyway so you're going to get to obviously you're getting a prophecy to get a cis id that's never going to change so you've actually added you've added kind of um extra processing when it might not be necessary so one best practice is kind of causing you to affect on other best practices there in in some way yes i've i call it a sometime i feel like when a best practice is misused it becomes an anti-pattern if you've heard of know of the concepts of their software patterns and stuff there yeah where endo patents are generally things that people think are good that are actually bad i think best best practices can sometimes be a hindrance rather than help if you don't understand why it's there we know why it's there is that sometimes records have differences like system ids and different systems so you don't want to hard code it you want to make it so it can be changed by a property or something right but when it's always going to be the same like there's just no point in my view in esl that's right i don't know if you mess around with linting at all eslint and creating your own style guides and stuff like that but you can you can kind of define a rule for instance you might say camelcase um and then you might have something that is not camelcase and what you can do in eslint at least this is in vs code i don't know about it elsewhere but you can kind of comment and say ignore the next line because i'm going to break the rules now and i'm going to document why i'm breaking the rules it's okay generally i want my style to be like this but you know right now i'm going to you know wear a different color hat for this requirement so it will be good if instant scan i don't know if um if this is possible yet but it'd be good if you could excuse yourself in some way on comments and then say look i know hard code in cis ids is bad but please ignore the next 10 lines because i'm going to do it for this reason yeah i like i like that because you see how many system properties i've had to create these sysids are the same in every servicenow instance in the world right one benefit is they they get cashed right so i guess in some way you may maybe there is an argument to be had on that on that level um yeah we need someone like travis uh travis thompson to come in and get his yeah i'm i'm more than happy to be um challenged on any any of the views i have because i know there are a lot of people that are a lot smarter than me in the servicenow ecosystem and i'm more than happy to be gently corrected it's just my opinion you know it's about being it can end up being counterproductive you're like following all the rules blindly because there's an impact here um and it's counterproductive i'm curious why you set your constants that way um and not within the object it's oh you're doing it with all of them okay so you're not using the standard pattern for the script includes right you're yeah i'm not actually i think it's just one of those things where i just always did it that way for some reason i'm it's might be bad i don't know it's just i don't know if it's good or bad but i think you can't extend this script include in the same way that you can use like class.create and objects yes i know what you mean yeah probably because i have actually ran into that before um even with some out of the box stuff some service now the box stuff that declared it in the same kind of way kind of like static yes yeah when it traverses all the the functions to the extension it doesn't it doesn't grab those yes it's fine no point actually do it by design there's there's not only one yeah you don't need to refer to these um outside i actually yeah sometimes what i do i create a core i know we're gonna we we're gonna get too deep and run out of yeah we're supposed to be doing this we've got some food to put on the barbecue i was just thinking that uh there are many other ways of doing script includes um and if you go to codecreative.io uh you'll find that uh travis has explained quite a few of them on um yeah i do use a singleton pattern for my for the object that contains everything about the recording that's a singleton object okay because i only want one instance of it at any time um that's slightly going off topic again so basically all if you've got a custom test step this get test step worker um method here it's called from code that just cycles through the test template that i showed you before and it's just saying if the test is a impersonate user test run this code if it's create user run this code okay if it's the depreciated record query or record query you run this bit of code so all you need to do is um add in your own one here for your custom test step and all these also extend the base class which just has a bunch of common functions to do a bunch of stuff most of it is just find me the last test step of a particular type or range of test steps and doing some other stuff so maybe we'll just go to let's just go like create new user and uh i don't pretend to be a amazing coder if some of this code burns your eyes everyone's got their opinion on it i think the the main thing is to have a convention and kind of stick to it it's it's if you're building your own app you can do what you want right but as long as your app is kind of consistent between different things it's fine right but if you're working in an organization then you really want to be able to work collaboratively with your colleagues and i think you do need to have a convention there but if you if you've got one bit of code in your app and then another bit of code over there written completely differently it just it becomes harder yeah harder to read you know consistency is the main thing having a defined standard and having everyone follow it i mean i'm yeah i'm a fan it works it looks like it's amazing who am i to criticize all you need to do is you create your own script include that extends test step generator you um do a check so when your custom test step comes up it does your thing and then um you just kind of set set up the step as you want so what are these all those here this dot gr atf step is is the core atf api stuff that you're using or um yeah so the test step generator object has a class variable i guess you could call it called gitf test step step which is just what the current test step is and it has um see if i have it referenced here i don't have a reference in this one there's another object called regression object which just contains everything that was sent from the user interface or the the calling code up into it so you just have a generate test step and then you just put whatever code you need in so i think that bob's your uncle that's i mean that should answer mark's question i think if in terms of can you build custom steps yes uh but then you or can you record custom steps yes but only within the limitations of what is possible from recording wise anyway like you said virtual agent might not be um some of the things you just haven't built because it's you know the right click context menu stuff or client callable ones in there something like that can't reverse engineer every everything yeah so within the architecture is extendable um i needed to make this maintainable i saw some of the latest release notes who said that refactoring um to yeah there were one or two like almost complete rewrites where it was just like this is a mess i need to fix it and i would just kind of restructure the whole thing but i'm fairly happy with where i landed on the architecture some of the client stuff i'm not a hundred percent happy with but there are some limitations around um extending classes in javascript that servicenow just does some really bizarre things that i wouldn't expect likewise just as an example of the top of your head just uh not inherent um methods that i was expecting it to in service portal so i i had like a monstrous i had like two monstrous ui scripts and i wanted to separate them so there was kind of like a base ui script and then every user interface just extended it and then i could just override the methods as i needed to as i had um different html structures and whatnot and i just kept facing an issue in service portal where it would load a script include before its base script include and then when it tried to extend it it couldn't find it and then the whole thing just went nope and then some other cases where it wasn't picking the override method and unfortunately i'm not good not strong enough in javascript i think to get to the bottom of it but i eventually kind of cobbled it together and that's why you have to add free ui scripts to your um to the service portal theme to get that to work um okay i still i saw that as well that's necessary that's necessary to make it work so um yeah that's i mean if if i get stuck on something in javascript i'd put a breakpoint in and just go click debugger and follow it and then get lost uh the stuff you've said there i've not experienced that so um sounds a bit scary should we should we go back to is there anything else you want to show because i'm just conscious of time and yeah absolutely for me my my work day's finished and for you it's in the middle of the day i've got the day off um i've got the day off um oh i don't feel so bad anymore oh that's right you just i think it was great uh that we were able to do this because i know we've been talking about trying to do this for for a while um and the thing that i took the day off for no longer needs to happen so i i had a i had a free day so it was really good timing because any time i looked at doing something out of hours like would have been 1 2 a.m for you or it would have meant me getting up yeah 5 a.m to to do the the session so this workplace perhaps if i was to to summarize um i showed well to what you get on the shared version versus what you get in the patreon version um you've got the guided setup that takes you through the whole setup and this also includes a lot of um nice things as well like ever all some people have got lost and stuck trying to get this working for um service catalog and service portal because you need there's some steps you need to take but within the guided setup i've got some fixed scripts and some filters and stuff that just make make it work for all your catalog items in all your portal just by running a script um and it just takes you through kind of how to use it for some basic use cases as well so you get that you get the notification recording that i showed at the very start i'm checking your email notifications to get sent sometimes that's good just to understand what notifications are getting sent out it's pretty hard to reverse engineer but you can create an incident and go all the way through to closure and then stop the recording and you can see every single email that gets sent out for and who it goes to what notifications get fired that's that's a premium feature is it that recorder designer yep that's a premium thing and then the other one was the create user step that i showed at the start where it mimics whoever you were impersonating at the time in a create user step so which one would that have been two hours ago an hour ago i think it was probably this one i never actually went into it just to show exactly how it works so i just i just uh put regress in front of it and take the first name last name bunch of field values good for testing your vip users as an example title service now dude the roles and the groups and impersonate so that's a i guess those are the key free patreon features and you get to vote on what features you want to see next as well um yeah so sounds good um paul let me just check on the settings yeah i've got the link in the description for the website right regress dash atf-recorder.com so yeah anyone who is interested and wants to know more then you can get to the link directly from the description and this is the page and you've got the patreon links there you can always shout me a coffee if um not willing to go all in is there any benefit that was that just literally like i'll buy a coffee mate there you go thanks yeah yeah that's that that's all it is just saying thanks yeah um i guess but obviously there's no obligations so um yeah this just covers some of the basic web web hosting and um gets me some good feedback on particular features and that kind of thing so okay yeah that's really nice stuff thank you for joining us on the channel should we stop the share and just close out um because i want you to know obviously we've talked about um you know the intros your back story how you kind of got into um how do i hide the participants view there just yeah there we go uh how you got into service now you know where you first started and then we talked a lot about regress atf um i just wanted to find out and make sure you know beside regress is there anything else that you're doing paul that is um of interest that people might want to know about or indeed you just want to plug any shameless plugs any shout outs um i'll be i'm writing a blog article at the moment related to service catalog and um making variables mandatory on closure was something i was thinking about just musing the other day um it's a pretty common kind of service catalog requirement where you've got your variables and you populate your variable in a certain value and then that determines what task gets generated next but there wasn't really a clean way out of the box to say i want this variable to be mandatory on task closure and every time i looked on the forum or asked my own developer cohort how how they did it everyone has a slightly different way and i've seen some of the other mvps as well post different solutions as well and my everyone has a completely different solution for this and i have never seen a customer not have this requirement that has a service catalog so i find that quite interesting so i'm writing a blog about that in the community forum which i'm about 65 percent written um i see only really other things um um i started a few days ago i just had was doing some service catalog stuff for a customer and then i just i just get these random bits of inspiration and then i'm like i really want to write about this and go home and start writing about it i assume it's probably the same for a lot of the mvps that put like um i'm sure mark must have these moments of inspiration every five minutes i think the amount of blood some kind of automated um blog writer i mean the guy's output is ridiculous in terms of um the the amount of output that comes from mark on the various different topics like i've talked to him on instant scan he's talking about virtual agent um ui actions on a form now i don't know where absolute machine that guy i think any blog post i've ever written is probably about 65 percent finished like i i can't finish them that's why i do this channel it's literally put press uh go live just see what happens and it counts as content yeah you know i get a sticker so i do know what you mean like i wrote half the blog in one night and then it's like oh i'm it's so close to finishing it but you just kind of sometimes you just completely lose motivation in something that was fascinating one day and the next day you're just completely ambivalent about it yeah and i i think that i'm too particular to write stuff like i i love the english language i love other languages as well um but i love like the power of word and i would spend ages getting one sentence right you know thinking read one sentence and then the whole thing is just i lose yeah where's the point i guess when when you're a written content creator the really important skill to learn is when to let go like you can never get anything 100 and you just have to sometimes you just have to release it even if it's not perfect otherwise you never get anything done yeah and move on and i think otherwise otherwise regress would never have been released i still would be like not happy with something yeah at one point you just have to get it out there it's really hard to let go sometimes take an agile approach to writing content as well yeah one thing i learned actually minimal viable products exactly yeah just get it out there i mean you want to make sure it's kind of factually correct i guess you're not giving people kind of uh yeah bad advice or telling people something that's that's wrong um but one thing i got taught when i was first starting my career and it was about you know writing and or delivering presentations so you know go away do a presentation come back present it to the class and get some feedback and you find out that you spent the whole time playing with coins in your pocket or clicking the pen you know you get that kind of feedback but the one thing that was taught to me was don't you can't say i've been playing with this the whole time you can't see it's fine you know these zoom uh zoom things are fine um the the one thing was don't get it right get it written that was the advice that i was given so that means you've got something on the page yeah i think that's good advice and uh well maybe we'll leave it there yeah on that note yeah on that killed it killed the vibe thanks to everyone that's tuned in paul thank you very much for coming on the channel really enjoyed that and i think regress i've got it on my pdi i'm definitely going to be playing with that um a bit more uh and i know that from the people that were on the chat there's a lot of people that are interested in this stuff and it could be very helpful um what's next for it final four what's next um it's a good question um we'll see how the patreon goes there we go inspiration because i know the service now space moves so quickly next thing you know no one will be using ui 16 and service portal will be a thing of the past and everyone will have fan-dangled ui builder stuff and it's now experiencing the backlog then is it it only has a certain shelf life really so in ui 16 and um service portal catalog items so we'll just see how it goes i guess it's been pretty quiet lately so it would be good to see more interest in it i guess because like it's it's hard to be motivated to work on it when like no one's interested in it kind of thing so show your interest otherwise it will probably just kind of stagnate i guess that's that's fair enough i think so we've got the link in the description regress dash atf-recorder.com you can go on there join um paul's patreon and then you can hit him up for support ideas feedback and get some premium features as well so um paul thank you very much for joining me on the channel thanks to everyone who's tuned in don't forget to like and subscribe check out the sn dev slack channel as well if you need any assistance in the service now space um and you know you can hunt down somebody that might be able to get you a sticker but i think they're all gone um we're very lucky we just need some swag now uh shout out that's all the 2020 stuff isn't it so uh 2021 i think i'll get it next year um but just okay shout out to brad because i know he i know he's enjoying this yeah continuous oh mine mine got accidentally put with the employee mvp stuff so i only just got sent yesterday for last year though for last year yeah everyone's received theirs except mine because they accidentally didn't post it i'll have it soon i'm not going to comment on that but um you know it's great it's great being part of this cohort and really enjoyed the show thank you and there's a live code in happy hour later i can't remember what it is exactly is it lady coding i'm not sure um but then i think it might be i saw something about that i can't remember the date so uh the 15th yeah so everyone check out this servicenow dev channel as well um let's wrap it up because otherwise we'll keep talking thank you so much paul take care um and everyone please stay safe no worries thanks for hosting me at this odd time for you no problem i think it was a good time for everyone yes thank you you
https://www.youtube.com/watch?v=FlIEkWEx4p0