logo

NJP

ServiceNow GRC/IRM: Full Flow (Part 4: Issues)

Import · Oct 09, 2020 · video

okay good evening uh welcome to phil goes deep i'll just give you a little warning before i switch the video on you might be in for a little bit of a shock just to let you know um you will see the pink ribbon in the top corner so i'll let you uh work that out but just to let you know i will be sharing links to explain a bit more okay good evening welcome to phil goes deep and i am phil this is the grc full flow series and it's part four where i am converting the grc application suite in servicenow over into flow designer so far we've done indicators part one and two and part three was starting on issues so we'll be continuing from there and you will notice that i've got pink hair so i will be sharing a link into the chat and into the description just to let you know a bit more about what is going on there but just to say is breast cancer awareness month it is october and i am raising awareness for breast cancer and i'm just going to shun this link into the chat you can read a bit more about what's going on but if any of the customers or clients that i work with are watching or happen to see this video before i get in touch just give you a few moments to get over that shock but it's all for a good cause so without further ado let me start sharing my screen okay so here is my diagram as i say it's part three now part four we've done part three uh we started with issue management so i do need to tidy this diagram up a little bit the grc profile apps is where we're starting so the sngrc scope we've done indicators so far as the run all indicators and run indicators and gone through the tables we found some topics to to kind of mull over around the before previous and delete kind of operations and objects and all of this is described in the grc community article which is also available in the description okay so i've got some findings in here and things we're finding out along the way so grc indicators we got stuck on the point where we wanted to close and update issues or where result passes and create issue when result fails so we've moved over into issues and looking at the issue utils api so far we've converted find existing open issue get issue source update or create issue update or create indicator issue and i believe there are 11 methods 11 public methods within the issue utils so we've done one two three four and generate issue is not really perfected yet so that's due to the type of input that i'm passing into flow designer and i think i will need to revisit this but i will be moving forward let's just take a look we've got a few people tuned in so good evening and welcome let's get to it flow designer fire this up and i also need to get the script includes so issue utils face if anyone's got any comments or feedback please do feel free to add them to the comments or get involved in the chat um shout out to rj yeah rj who thought that this was uh a filter on my hair so it's actually real hair uh shout out to creations hairdressing in dunstable as well mario and laszlo have done a fine job let's just get a copy of this script and we'll move this over into code and we can see that the dog see the rabbit come past it i need to set up my defaults on here so methods we've got find existing open issue get issue source generate issue update or create issue update or create indicator issues so we want to start moving the remove source or close indicator issue method in i believe that's our first one let's take a look in flow designer how we're looking under actions under grc profiles let me just show matching on here update or create indicator issues so if we compare this update or create indicators okay so i didn't publish that one last time let me get that published auto create indicator when content associated that's still draft as well when you create an action if you don't publish it it won't be available to your flows and subflows that's the main thing so i'm just going to go back and publish this one i believe we tested it in part three uh what did i oh they i just published it and i've got no inputs no script you can't unpublish no you can't unpublish an action okay interesting update will create indicator issue so let me just take a look what i've got here update or create issue update will create indicator issue i was sure that i had built this and tested it last time otherwise why is it green but it shouldn't take long to do that sorry i'm trying to get to grips with my tabs so this one update or create indicator issue go to definition go to definition indicator result what we're going to return in here don't return anything in here okay we're going to pass in indicator results which is indicator result is a reference to the indicator result create a script action uh there's no return in there whether we return this actually returning anything so my input's going to be indicator result and the value will come from my input my input variables new issue utils dot it's going to be inputs dot indicator results there's no output save that so if my result is a fail it should create the issue i believe let's just take a look at what this method's doing again so my indicator result get the item look for an existing issue and update it if it's got one if not create one okay so that's four look for issues get the last updated one this one's got no indicator results so if i go to the item it says it's non-compliant obviously i've got an issue i think that's a manually created one yes i've got an indicator in here hopefully there's an indicator result ah no indicator result let me just execute this it's going to give me a task so if i fail this and close it that will give me an indicator result complete and then this can be used to test my action it says it was completed successfully let's go and look what we should see that existing issue we've already looked at which was 2025 yeah you see this second one here system if i test that again what we should see there we go see that coming back so that's working and i'm going to publish that so we're back on track update or create indicator issue next in the list remove source or close indicator issue mark this blue while we work on it now i am going to add a new action grc profiles and my category is issues result indicator result so that's going to be a new input in here indicator result which is a reference to indicator result script step let's just see if there's a return if there is a return on here then obviously we want to pass that back out now some of these methods i think it was maros shout out to maros who told me and something that i kind of stick by and consider it almost gospel that a function shouldn't be more than 16 lines okay once you start getting beyond 16 lines now obviously if you get to 17 you know who's arguing but if you get into how many were talking here that's 75 lines pretty sure if you looked at this it could be broken into a little bit more functional approach and then debugging maintaining etc would be a lot safer and a lot easier however what i noticed in there i'm not sure if you noticed with me there's no there's no returns so why would you not just return the update and then you know if it's successful or not you're just throwing that down a black hole at the moment keep fingers crossed so come back up remove source you see look how long that string is in here okay it just doesn't display that much that's cool i don't think i renamed remote remove source or close indicator issue okay we want to give it a friendly name so that it looks good when we're consuming it from the flows and subflows hopefully i can just reuse same indicator result i had just giving a shout out to people on linkedin um so if i click test and paste this in here and run test i don't think it's going to do anything it says it's completed which means it's successfully called but because that indicator result was not a pass i don't believe it's going to actually make any change to my issue let's take a look get the indicator result and we use that to get indicator we're not wrapping the get you know we should be wrapping gets in case that fails we get the indicator type and check all of that stuff so a lot of this is repeated as well and this is another reason that you might break those functions down make it a little bit more modular so if the source is indicator and check that property here you know if you're running indicators and you want them to automatically close upon success then there is a property you've got to set just make sure you're setting the right property as well so there is something i stumbled on there for indicators i'll just show you this this properties dot list if i go in here for indicator auto create auto indicator issue closure okay doesn't seem to be relevant so moving on so basically if you've got it set to true then it's going to do this thing if it's not it's just going to bomb out which is great issue source not indicator so it has to have indicator and hopefully i'm just looking to check if the indicator last result passed should be checking for the indicator result active okay it looks at the indicator result and checks for the indicator having been last result passed because my indicator result hasn't passed on this occasion or at least the indicator that is checking against didn't pass it's not going to do anything with my issue let's just validate that oh it says issue automatically closed okay so it's not actually checking i think the condition of the business rule that calls this is only going to do it when it's changed to past but because we've passed in a indicator result it's checking for any other indicator that might not be passed it's not going to close it if it's got two indicators running and one of them is failing which makes sense but it doesn't actually check that the current indicator result that's being passed in is true so fine in terms of flow design and conversion is working it's like for like um we'll move on let me just get that published play designer we'll publish that excellent um new action update or create control test issue so change scope update we're passing in control test so i assume that's a glide record of control test again naming conventions would be nice control test get value okay so you know the good thing with flow design when you're passing in the variables is that if you don't have defensive code within your methods we don't really need to check control test and make sure that it is a glide record and do all of those checks because flow designer from the action perspective does take care of this and not only does it take care of the object it also has to make sure that it's of the right class as well so um we're passing in control test it can only pass in control test you get the defensiveness within from kind of flow designer natively which is great we're going to pass in a control test and this is going to be new issue utils dot so my first question as always is going to be do we return anything no return okay simple as that update or create control test issue now this is a bit more complex to be honest with you uh control tests when you're looking at issues in grc um you've got kind of two sets of automation that are consistent you've got the attestation process so somebody asks you is this control implemented yes or no if you say no the control attestation fails is an incorrect answer an issue gets created the control goes non-compliant if you then take an attestation again it's going to retake the attestation it's going to pass the attestation and therefore the issue that was created through the use of issue source which is recently introduced or refactored in i think london maybe maybe madrid when you remove that issue source of attestation it's going to close the issue for you okay we just saw one of these methods was called let me mark that green i'm going to just say the one we're looking at right now so remove remove source okay by removing the source that could close it so when an attestation fails you get the issue when it passes it will close the issue automatically for you so long as that issue is only an attestation issue same with indicators when an indicator fails it will create an issue with the source set as indicator so when an indicator passes as long as no other indicators are failing it's going to automatically close that issue aside from if you've got attestation failing and indicator failing an indicator passing can't make the control compliant if the attestation's failing you can still manually close it and override it that way but then the indicator might keep keep generating new issues so that's that's no good so those two things kind of honor each other very nicely when we look at control tests from the audit module things get a little bit more complex okay so it's just not a straightforward that's all i'm going to say for now we're going to look at this method and see what we what we need to do but there's no returns in here we've got the input we're in a pretty good position update or create control test issue so let's just take a quick look at the code parsing control test okay so we get the issues going to be assigned to the control test assignment group and assigned to uh the parent of the issue issue parent equals control test oh okay sorry parent issue parent where there's a field called parent issue you know i also talking about design approaches i would very much like it if and i'm up for discussion on this topic if anyone thinks that the parent field should be restricted by class what i mean is within the task kind of um hierarchy if i've got an issue then the parent of that issue should only be able to be a parent it shouldn't be a different class if you want to relate the issue to a control test create a field called control test and make sure that the field can only point to class control test so when we're looking at things like parent we know what it's going to be it's going to be something of the same class and then we can be explicit imagine if you did it that way then you wouldn't need to have created the parent issue field anyway uh control so we've got our issue and we've actually it's an object right now okay so we're going to pass that into generate issue method i assume we've got a control test we check that there's a control we check the controls valid we check oh we wrap wrap the get lovely check that we can get the controls new guide record okay obviously you might not have ins okay it's talking whether it's installed or not as well uh so you might have the module you might have audit enabled and not have policy and compliance enabled so it's checking is the table itself valid um and then we try and get the record so issue short description this is good if we're creating a new one but we might be updating at this stage okay so if new issue no control equals this generate issue okay so generate issue will return if we've got one or if it's already got one then we get a different result so control test this is what i mean so the control test belongs to the issue so the control test has an issue field to it so when you look at an issue you can see all the control tests that are failing against it but when you look at an issue you can't see all the attestations that are failing against it you can't see all the indicators that are failing against it you just see the latest indicator result that's failed so it's a little bit different and this is difficult to explain to kind of newcomers okay so this is if the issue is being created and this is create if you issue if control exists but it's an existing issue if it's not an existing issue then we're creating okay either way control test dot issue either way we're going to attach an issue to the control test but we're never checking that control test never check the control test to make sure it's actually failing and so on so that should mean we can from testing purposes ah there weren't there's nothing for control tests now they're audit tasks okay so if i look at all audit tasks i should be able to get this control test it doesn't really matter which one it is test this review backup procedures what's the display value the number is it there we go so it says it was successful when i look at the control test i should see an issue against it no why not oh they can right okay controls not valid this is the problem with working with demo data um we've got anyway we've got a valid control let's say filter where we can use dot walking to our advantage here and show fields let's say control what oh it's audit task okay so control test i see the extended tables what am i missing there okay how about sn audit control test.list and now i can filter where control name is not empty that should mean i've got a valid control excellent this one closed complete there's already an issue against it um this one's in review so it shouldn't be let's have a go at this flow designer and i'm using a new control test no i still didn't like it says it completed successfully curious what's happening there so we've got a control update what we can do we really want to debug this stuff is fire up debugger some people don't know that debugger exists um it came in istanbul i believe um start using it if you don't know about it um grc profile so i'm going to say new effect forgot a trick check out the duke's link i'll try and link it if i remember um explore vid link let me put a highlight in there if i try and remember so i've got explore installed i don't want to go and mess around trying to instantiate that i just come into the record i want and opening explore that's great that gives me access to current so when i say new issue utils dot what's my method update update or create control test issue well guess what's coming in there it's a glide record i'll still just pull this from glc profiles and i need to put a before i do this i need to put a break point in issue tools i'm going to put it in at control test issue there let's just make sure calling the public method boom okay let's see why this wasn't working i know the control test wasn't closed it really really shouldn't have worked i don't think we were testing that okay so control test don't get value oh okay see if i can't do that i can't do that i can't do that so i can do that i have got a valid control control is valid so create issue of control exist yes do we have an existing issue it wouldn't be a problem if we did have an existing issue it would just attach that one to the control test record so you might have got an attestation failure still active control test comes along and says okay i'm going to attach my control test to that issue it doesn't go and create a new issue existing issue looks valid so let's just take a quick look in that control test the control should be non-compliant yes it's already an issue it says it has a control test value and that was created 24 days ago that's funny okay so it wasn't mine so if the existing issue which is true i've got an existing issue i haven't checked the profile but we've got one add an issue comment add the issue source we haven't gone to the issue control test failure so we already had a message in there from me a few moments ago let's just go add issue source well we've already got the issue source that we want so we should have jumped over that from a debug perspective got the issue source id oh we're talking about attachment issue comments and we've updated the issue there it should mean okay not done it yet we've been caught by before business rule could still abort that's not going to happen i don't think what we should see oh okay let me start jumping over these functions because it's very nice to see this sometimes if you really want to go deep and that is the name of the channel but right now i do want to focus on converting flow designer uh converted glc to flow designer and i've gone right down in the weeds here come on js utils you're very nice i just don't need you right now hopping over these a lot of this coming from planned plan task as well okay talking about scheduled dates and so on especially for control tests audit tasks a lot of that stuff is planned planned to task not directly from the task table which does bring about some complexity and extra business rules i'm pretty sure i can just click play here and let it run i don't have another break point to kind of just see before it goes so i am here we go add issue source i am sticking with it i'm persevering has that updated it yes there we go control test issue so this is where it didn't work last time i wonder if the business rule that calls from the cause flow designer to update that issue i wonder if it's a before so if it's a before then the script includes getting called won't have an update in there see that does the issue update i don't think we do a control test update that update control test because control test is coming in from the business rule as current probably running before let's take a quick look at that if i go to control test configure business rules be something in here to create the issue get rid of plan task get rid of task i don't even want audit task i want control test here we go so create issue if test ineffective closed this will be the business rule that runs and it's before so so when the state is closed closed and complete skipped and control effectiveness is ineffective update or could create control test issue current so therefore running as a before is going to populate that issue record but because in flow designer i'm running it after or asynchronously then that's going to be a problem so the code works the kind of transition over is fine i um what we're going to mark that as what have we done so far for our color codes just bright red where have we gone sorry yeah that's got to be a red one should be bright red really but i need to then add a comment and say in here that expects and i don't really know how that works from a design decision i've seen it a few times where the method's perfect but because it lacks an update you can't reuse it and obviously you wouldn't want to put the update in the script include because if it's getting called from a before business rule then or sometimes any business rule updating itself is going to trigger more processing and that's bad practice bad performance so um i'm not really sure what the what the right thing there is um straight off straight off the bat but kind of gut instinct is that it comes back down to design expects to be called from a before set by flow designer that's a for me that's a really good finding i know it's not what we want so in terms of a method being converted to an action i'm happy that that's kind of done but really the problem is going to come when we come to trigger it it won't work script debugger good to me thank you i'm just going to close you so next on the list how are we doing for time 45 minutes we're going 45 minutes and we've done a few kind of two more but we have we have started exploring a bit more detail let's go back up to the top so we've done this one update or create attestation issue this is i'll be honest one of my favorite methods because one of the first ones that was built with the concept of issue sources i'm pretty sure before issue source came in everything just went through generate it would just generate the issue it would look for an existing one but it wasn't dealing with indicator sources so there was you know no real complexity in there so we're passing it in the control in the attestation it's gonna fail okay we don't pass back the referencing control the creation of the issue should set the control to non-compliant so there shouldn't be any danger on this one we check for an existing issue but we're still not returning anything this should be very quick and easy which is quite often the famous last words i am pretty confident we've moved through issue utils then we can start looking at some of the challenges oops let's start looking at some of the challenges of triggering these things reference yes okay update or create attestation issue so my input variable is just called control and that comes from the control guide record this is new issue utils dots input control you know if i was really shooting from the hip here i could just save that publish move on but we do want to test it although i'm confident unless anyone in the chat wants to tell me otherwise tell me to hurry up um we're passing the control let's just take a quick look at the logic what's going to happen pass in the control issue source attestation existing issue look for one if we've got one if the current profile exists we use that in our message else just pure assessment failure add the issue source so that if statement is if existing issue else we're going to create one and issue object just checking the scope of that one yeah issue object set the short description description what's this else for okay for dealing with profile or not description item boom boom boom so it gets always the owning group is always getting passed down from control we saw it earlier in the previous one from the control test passes in the group from control test to the assignment group for the control here it's going into the issue so that's quite nice if you are using only group on your controls then that's going to get pulled in this is not going to be created manually new issue and if we can't create it see i just expect just to return the issue id and return the error message you know there's a lovely method on glide record called get last error message um let's just double check that under reference server scopes get last error message yeah so you can test you see here it's saying okay it's not because it's passing it off but when you do an update when you do an insert you can actually wrap that insert or update you know or even delete you can wrap those functions into uh a conditional statement and say if i didn't update then use the glide record and get last error message and actually pass that back and tell you know report back why it failed give gives you know even if you just put it in a debug log it can be useful to do that it depends obviously on the application just know that that is available so in here we're not checking we don't care if the control or the attestation really failed we just need a control and it will create a controller attestation issue against it so let's go to controls and i'm going to pick on one that hasn't got a status flow designer test run test look at that it's gone non-compliant i don't have an issue against it and that is an assessment failure that's beautiful this is check says it's been executed completed successfully and we've seen the results so let's publish that one update or create attestation issue update or create attestation issue so this one's going green we're running out of space a little bit here and some of that was indicators let's put our oops let's put our greens down here over here get a bit more space actually and this is what we're working on just trying to tidy it up a little bit so in terms of issues yeah there's a there's an api for ajax we said in the last one that's not going to happen i don't really think flow designer is meant for ajax to be honest doesn't make any sense unless anyone's got any reason that you think flow designer in ajax would work if there's any reason to use ajax methods within flow designer they do run in the foreground so it's possible but i don't think they're called from the client maybe that's a way to go in the future i'm not sure put your comments or join the conversation in the grc community in the link in the description okay so update or create attestation issue i'll remove oh this is nice this one is almost going to be the opposite so that issue i just created that for that control we can watch that get closed in the next one control this okay i thought there was a duplicate there duplicate name my input i assume i'm assuming it's control yes so create an input this is gonna be i wonder on this one should i should i be duplicating existing actions is that is that a better way to do this control and we're going to do a script input is going to be control mapping in here definitely feel like duplication you know duplicate the last action would have been good i'm going to assume this doesn't return anything and then be shocked when i find out it does nope doesn't return anything therefore don't need to do anything other than remove source or close my station issue save that copy this display name again and test run test it's gone compliant come closed complete issue source got removed when you remove an issue source it automatically populates it back to ad hoc based on what it belongs to if it belongs to risk then it will be called a risk assessment it's a different type of issue i can give it an explore for now just tidy some tabs up a little bit using that issue flow designer publish and on the diagram we are going green what are we doing on our list now removal close attestation issue lovely item has open issues okay that's gonna be blue and get my issues okay these look like the last two public methods and we've reached the hour um i think i feel like i want to just get these done okay the last few sessions we've gone over an hour i'm not particularly strict on timing i don't know if it has any effect on your inclination to watch videos if you think that they're if it's an hour if it's an hour and a half you won't watch it but it really should only take me about 10 minutes to do these two based on the kind of velocity for the existing one so if i don't end up talking too much let's see as well if we can duplicate can we copy copy action look at that item has open issues and it's called items so it's passed in item id interesting so item has open issues i'm going to put item has open issues i'm still going to pass in the control okay from the action but because it's getting item id i am going to say bar item id equals input dot control dot i like to use get unique value okay and then passing item id now this is going to return something okay it's a check has item has open issues i expect to return some sort of boolean value here so i am going to shoot from the here and say output dot look at that new happened again okay what would we call it output start it's already called has open issues i'm just going to call it as issues don't be too creative as issues and that's going to be true false [Music] mandatory i need my output false this feels like repetition i mean i think when i save that that's when i can set it no when do i exit edit right there we go has issues there the only thing i don't really like is the fact that i've capitalized issues um as issues has issues let's check if that's actually gonna happen return yeah oh it's down here that return has next it's going to return boolean what we thought item has open issues save that um well we've got an item here which is a control called item because items the central table that's extended into control it's extended into risk so risk and control are both items this should be false i run this test it should run successfully but it's false is it looking for any particular type of issue just active ones okay so let's create an issue it's gonna be a manual issue so i'm creating it by hand manual manual issue submit that run my flow designer test again and it should be true this time yes it's true excellent so that works as an action the next one i'm going to copy is get my issues is this going to work we got access we'll have to run it as it's gonna make that one green i assume it's gonna access the glide session and look at the current user who's logged in and flow designer is able to run as from a trigger perspective let's see here it says executed as so i assume the glide session when it runs work but i don't really know the application for that method so i'm going to copy the action and say get my issues get my issues copy um there's no input here i don't need an input okay get my issues there's no input in here this is new issue utils and we have an output but what output is it get my issues my issues is an array look at that variable name it's an array of objects of issues okay so what's it called my issues once you've created an output variable you can't rename it i think all these different types of arrays are i mean it's an array of objects create structure manually i don't really want to create a structure it's not just an array hmm because it's an array of objects i don't know how to solve that in flow designer right now so i'm going to put you up there in the good in the good field and i'm gonna put you down here in the naughty field okay so this one is trying to method returns an array of objects but the return type of so i don't think this is something wrong with with flow designer maybe you know some of the other things are stuff that's not wrong with flow designer it's just what we call a picnic error problems in the chair not in the computer but right now i can't convert that because i don't know i don't know how to so you know it could be that it's falling over and it's my fault i'm going to save this because it's got a bit stuck can we just pass in an array string does that work my issues item has item no this is get my issues and there's no input there let's just see what happens if we test it i cannot read property zero of undefined yeah that because i've mapped something to the output edit outputs delete my issues array string you see it constantly wants me to build this you know some of the why would i have to specify i don't understand why would i have to specify the items in an array i don't know how many i'm going to have i might have one i might have the x exit edit mode no it doesn't like it i've come across before with objects you know quite often if i'm building an output as an object or an array it's because it should be able to kind of grow and expand not because i have to look at that i don't want a hard code it feels like hard coding um i'm getting rid of them outputs i've recorded that in fact i can't get over this one item has open issues i'm going to publish because that works and i did mark it green i think right now i've gone i've gone over the hour i didn't say i was going to stick to an hour but i've got to a fairly natural kind of break point where of all the public methods within the issue utils api and i do really like the way they've structured this you know all the public methods at the top let's just check is there any public ones hiding i'll call them shy method shall we no no shy methods in there so apart from this and get my issues update create control test issues yeah generate issue i need to go back to that one let's just refresh again what happened in generate issue if i go generate issue this one it's the same problem i was talking about you know with um the growing and so on what what we should do here i think my inputs do this now actually we'll call this a short description that's a string make it mandatory okay item item isn't which we could item id or we call that item and make that a glide record to the item table okay make that mandatory the item short description description which is string lovely recommendation string and then if that actually is mandatory then we can bin off these fields object right i feel like item belongs above there yes okay and then in our script step we don't pass in that we pass in item short description description and recommendation okay and that's item short description description recommendation and in fact we could actually pass in here item id and from item we can get the sys id okay and then fields we say var fields and i big fan of having some structure in here do it a couple of ways but doing it this way can be easier so that's called item equals input dot item id and this will be a short description description okay recommendation is going to come in this way input recommendation therefore i can pass that object in so i think that's a neater way right you're being very explicit when um when you're calling your action let's have a look what that looks like if i go test very explicit what's expected what's needed rather trying to bury it in an object because we can abstract that complexity to the action script uh what is this called actionscript step this will be called here let me name it generate issue yeah so generate issue although we pass in here fields as an object we still pass in fields as an object but we've abstracted that kind of setting of the object and then we make sure that we've getting an item and then we only passed in the cis id of that item we made it mandatory up here so we can't call this function without it so that was why that one was marked sorry switching screens update or create issue yeah so i haven't tested it actually test indicator let's go to our control here there's a manual issue against this short description calling via flow action okay mandatory run test it says it completed successfully that's nice and we get an issue id back let's have a look down here boom calling via flow action that does that's created manually hmm and i think we said in our documentation update or create issue this method i'll create manually when it passes that in i'm going to leave that for now let's just say created manually it's just a question mark but i think we can mark that green and we will look at our stream a bit quiet on the chat today but thanks to everyone who's locked in thanks to everyone who's watching this on demand anyone who's sharing it please join in on the grc community conversation i'll give you a shout out we are nearly complete in terms of the issues at least issue utils now we need to go back in the next session is going back and looking for those calls okay so let's look at our conversion steps we've identified the api calls we've gone through at least the issue utils api looked at the public methods created actions okay we're in a very good place we've done most of most of that couple of uh findings in there next step will be to um actually identify the calls so i haven't identified the calls i've identified the api methods and now i need to go and find out where that's getting called i'll use script search for that or code search for that otherwise have a great evening stay safe and don't forget to check out the links in the description but in fact let me thanks everyone for watching i hope you've enjoyed my pink hair this is phil's goes deep and i really appreciate you watching the channel don't forget to subscribe down in the bottom down over here somewhere and click the bell join in the comments add comments uh joining the chat on the conversation click the links in the description and look out for the next one okay thank you very much and good evening and good night you

View original source

https://www.youtube.com/watch?v=A1SzMtIiw_k