Mobile App Academy: Mobile Classic Migration pt.2 - Creating Actions
good morning good afternoon good evening everyone welcome back to mobile app academy where we show you how to build and configure mobile apps live on the now platform i hope all of you who celebrate who follow had a wonderful valentine's day yesterday uh and my name is always charlie steiner and love love to see you all here again with us on mobile app academy um so in today's session we'll actually be continuing on from our previous installment of mobile app academy and continuing our mobile classic migration series so if you did miss out on the previous installment two weeks ago i will link that in the chat shortly do be sure to check that out to get the full context but we will be diving a little bit deeper into mobile classic migration today if you're joining us for the first time i do want to welcome you to mobile app academy which is a live building series that focuses on managing and building out mobile apps in real time we have product experts on hand to provide guidance best practices and answer any of your questions you put in the chat we host these sessions every two weeks here on zoom at 10am pacific and you can find this recording in all our other recordings of previous app academies on our youtube playlist that will also be linked in the chat shortly and you can expect this recording to be posted thursday morning pacific time in that playlist as always before we move on i do want to just shout out our mobile community that has just so much great content on today's topic classic migration and so many other topics since deployment best practices implementation guides a few webinars we've done in the past a few upcoming webinars that i do want to promote including our san diego webinar you can sign up for uh and just so much more and on the right you can see our mobile app academy playlist that like i said will be linked in the chat where all our recordings are posted and you can find them in their entirety in that playlist in order but doobly do please subscribe so you don't miss out on any recordings that may happen in the future and one more thing to just call out are our sister academy series and if you like this one do be sure to check them out if they're appropriate or if they're of interest to you and we have sessions in hr uh platform foundation just a little bit more developer focused and platform performance analytics which is all all encompassing of now intelligence and analytics and reporting and our sister team and virtual agent and all these teams do fantastic work so like i said do be sure to check them out if they are of interest and let them know you came from us and you can check them out by navigating via the forums tab on the top left of the community homepage so with all that out of the way i would like to hand it over to david haw to take away today's session awesome thanks for the intro charlie hello everyone and welcome back to another mobile app academy my name is david haw and i'll be your host for today and we also have a handful of hopes of the folks representing our mobile team stick we have mark copper ian kiener adam and charlie of course uh anyone else uh nope that's everyone but they're all on to help answer questions um along the way so feel free to let us know in the chat if you have any questions and to kick off today's academy we're going to show you how you can build action functions using mobile app builder as you prepare for your mobile classic immigrations in last week's session we showed you how you can configure a list and a record screen and how you can you know add fields to some of those out-of-the-box experiences now we're going to take it one step further and we're going to show you how to configure actions okay and just to quickly review for today's schedule this will be about a 45-minute session we'll start it off with a quick 10-minute overview for our goals for today what we're going to implement and how to get started and then we're going to jump into the exercise which will cover the basics on what it's like to build an action from scratch for asian and then show you some tips and tricks along the way and then we'll open up to some q a okay uh also if you if you're looking for more hands-on training i do recommend that you check out our now learning course we have a new course that we built in past three months called mobile using baseline functions and it was a course built on a rom instance and you'll also get a a test a developer test instance to use as well and then we also of course have our earlier app academies which you can find both on mobile community and these are great resources to get started with your mobile implementations and get that hands-on experience and then charlie if you can help throw a link in the chat as well um so definitely check those out if you haven't already uh one other um big announcement if you look at our featured um links you'll see that there's a new resource that's available to you it's called mobile migration office hours and this is something that we're going to be hosting every wednesday i believe at 9 00 am pst it's going to be a weekly series where you'll have our mobile gurus on such as adam mark myself and ian and we're really there to answer any questions that you might have on mobile classic migration we know that you know mobile app academy gives you a basic look into how to get started but if you have those deeper implementation questions we're going to make ourselves available to you so definitely check that out it's going to be hosted tomorrow at 9am pst make sure you register and to take advantage of that okay and then going back to today's session um let's start with the overview for our mobile functions and if you're not already familiar mobile functions are what we use to define what actions users can perform inside of their service download blocks in order for a user to execute any action whether it's to update a field create a new record or any crud related operation then the system admin will have to configure an action function for the user to do so okay this is very different than mobile web or what you might be familiar with on the platform ui we build mobile with the intention of building this optimal mobile first experience for users and what that means is that we're not giving them complete access to their entire instance but it's really about defining what is it that they really need to do on mobile and building out those specific use cases what are those you know three to five most important actions that a user would need on their mobile device and then building those up and by creating an optimal mobile experience for users they will then actually want to use your apps to access their servicenow records and then you'll actually improve your app engagement and retention of the time okay and there are three main types of functions that you're going to want to configure for end users these are the three main types they are right back actions on your left navigations in the middle and then smart buttons on the right right back actions are the most common in which they're used to make any changes to records during instance this includes things like creating new tasks updating tasks maybe reassigning a task to yourself and so forth navigation functions on the other hand those are what we use to navigate users between screens and most commonly used to navigate users with record contacts meaning you know where that user ends up landing will depend on the information of that record and to give an example you know a user could open up instant number 20 and if they want to pull up more information of the caller on that instant you can actually have that user navigate to the profile stream that will pull additional details on that caller okay so that's just an example and then the last type of functions are what we call smart buttons and typically you use smart buttons to interact with the native applications of your mobile device such as your phone map or email and you can create smart buttons so that you know if the user taps on the location field of a record it can actually pull up your apple maps and navigate you to that destination uh or you can also use smart buttons to navigate to urls so if you wanted up uh to open up let's say linkedin the linkedin website of a user you could do so or maybe if you want to open up your corporate website on safari um you know those are just a couple examples okay but to focus in today's session um we actually want to focus on write-back functions since this is actually the most common form on how users perform action state such as creating or updating records and this is just a quick screenshot to show you you know how your buttons and actions from platform ui might migrate over to mobile you can see on the left here that this is a work order task form and there are a few buttons and actions at the top right um you know the ability to update record time accept or reject the task and so forth and most of the time you'll actually be leveraging once you'll actually uh actually be leveraging the um out of the box apps that we have on asian right um and in this case field service mobile captures the work order and work order task um as an out-of-the-box experience and so you'll be using that as a starting point since you already have access to your accept and reject actions uh update work order tasks and create new so it's really about figuring out what does the out-of-the-box experience not captured and then prioritizing your users you know absolutely you're figuring out what actions they need on their mobile device and then filling out the gaps for them using mobile app builder okay majority of the time there might already be an action built for you that you can leverage but there might be some missing inputs or some inputs that you want to change and so for today's example we're going to build an update type of action from scratch so that you can understand the fundamentals on how to create and modify your inputs okay and this is uh something definitely worth noting in case you aren't already familiar but as we moved into rome instances and beyond we actually introduced some new features that will change the way that you build your right back actions um if you have some experience building mobile today you might be familiar with what we call item parameters and ui parameters these were essentially inputs that were used to build a write-back action okay and we're going to call this the old method of building actions if you wanted to create an action that allowed users to update their their short description and priority fields then the old way was you know you would create two item parameters you would then create two ui parameters and then you would map them together and that's how your action function would work okay um so that's the method of creating native writeback actions in quebec in earlier instances but as we move into rome we released a new feature called input form screens and the fundamentals are still the same with input form screens this will provide an interface for users to change and update record information into mobile but there's been a lot of improvements that comes with this things that could not possibly be done with the old way of actions in quebec and prior with input form screens we can now build a more streamlined experience for users to enter in their data you can actually organize your inputs by different sections of information and you also have the flexibility to paginate your inputs into multiple pages so that no you don't just have a super long list of 20 fields that the user has to fill out on a single screen you can see that there's this next and preview previous button that can take you to different pages in which they fill out their inputs okay and i'll show you that in today's example as well of course um and then there's a lot more things that you can customize like the header um of your input import form screens you can also change the labels of the buttons if you wanted to rename name this for submit or cancel um and then how your just your inputs appears on the screen you just have a lot more flexibility on where they're placed and so forth okay and we're also supporting a lot more new use cases that couldn't be done before um things like autofilling variables with script supporting multiple attachments as an input and then field value calculations but i think the most important takeaway here is that we've released a new way to build native actions for mobile and it's going to allow us to further expand into other use cases as we get more feedback from customers okay and it's going to be a much more improved way to build your actions compared to quebec and earlier okay um and this question comes up a lot we're not deprecating any of your old actions if you built it the old way you can still use them today uh but just know that input form screens will be more dynamic and you'll be able to create a better user experience with them moving forward okay and with that said i think we can jump into our exercise for today um for today's session we're going to use the field servicing technician as an example and of course use the out of the box field service mobile app and our priority is to be able to create an action that allows my users to update fields on a work order test um you know although we're given one out of the box i'm going to show you how you can create one from scratch that way you can walk away with fundamentals on how to build an action and then be able to modify them however you want depending on what your use cases are okay so we're going to build an action that allows my field technicians to update their work order tasks we're going to create two inputs to allow them to modify the short description and priority fields of their test so let me pull up my mobile screen i can show you where that will live so this is my out of the box experience for um field service mobile right and here i have my work order task if i tap into a record in the top right here um out of the box you actually have this edit function that allows you to edit the short description um and then the long description as well but you know maybe you want your field significance to be able to also edit the priority field so we're i'm going to create a brand new action just to show you how you can add and modify inputs okay so um let's jump into our instance and the first thing i'm going to do is i'm going to pull up mobile app builder okay and then i'll close this intro i'm gonna jump into the field service mobile scope okay and in my field service mobile scope this is going to give me access to everything that's built on the field servers mobile app um thankfully i know exactly where i want to put my actions right i want to attach an action to this work order task record screen okay so that it lives in the top menu function um but before we do that we need to first create the right back action itself so on the list this left hand nav here i'm going to click on functions and i'm going to create a new one and we're going to rename this to you know update or porter task for the type it's going to be an action item um you know we talked about navigations which is here we also talk about smart buttons and there's four different types of smart buttons you have url to take you to any url that you want you have phone which will open up your phone app address which can help technicians navigate to that destination location on their native maps and then email to pull up you know your email browser or email app upload attachment is something that we've covered in earlier app academy this is used to launch agent chat natively as well as your virtual agent um whoops uh chat launcher and then upload attachment this allows you to upload attachments so what we want for right-back actions are the action item for context um we want record because we're updating a specific record but if you were to do something like um you know create a new work order task on a list that is a global type of action meaning we're creating uh this doesn't apply to a specific record but since we are updating a very specific record we're going to use record contacts okay and then we want this action to apply to the work order task table so type in work order test okay and then of course you can apply any conditions that you want on this you can also do a few things and modify the behavior of your actions too um you can apply roles and actions on you know which technicians can get access to it um you can make an acknowledgement message as well as success in failure messages okay um and then at the bottom here you can see there this is ui this is the old way of building actions um if i wanted to build this the old way you know i would create this i'll create the action item uh create the item parameter and then i'll map the c wire parameter to the item parameter um so i'm going to ignore that because that's not how we're going to do it we're going to use input form screens so next we are going to create the action item i'm going to click new here and then we'll rename this to updates work order tasks i would always advise using unique naming just so that things are easier to find later and then once you've finished building your action uh you can always go back in and rename it exactly how you want okay uh the type is going to be an update type of action um and the data that it's going to write back to is on the work order test table okay and then i would also advise saving as as much as you can um just so that you don't lose anything and now we see this table called input form screens right so this input form screen table this is uh basically a container which will allow me to then fill in my inputs okay this is will pull up this screen here if i complete the configuration this is what we call an input form screen okay so we're going to create a new one uh and we will also call this update recorder task input form script um and then we're gonna scroll down here so you can modify the header if you want to rename things if you like uh you can make it available offline um you can change the buttons uh by default i think uh you know you can change the submit to say something else or cancel and so forth but what i want is i want to actually add inputs i'm trying to create two inputs for short description and priority so let me go and save this and i'm going to scroll down and create a new input i'm going to first start with the short description um best practices just so that you don't run into troubleshooting issues or errors um build your inputs one at a time um and usually your string type of inputs are the easiest to build and i'll show you why in a second but we're going to start with the short description so let's create one for short description we will call this short description the label is how it will actually appear on your mobile um we'll scroll down we'll make it a mandatory type of field i'll explain these autofill variables in a second but now let's go ahead and save this input okay um the next thing i want to show just to help explain what attributes are and um uh variables so input attributes determine where data comes from and how to manipulate an input if i were to create a new one i don't need it for short description but i'll show you what you can modify for string type of inputs um you can change whether it is an inline field and the max length of um you know how many characters uh your technicians can type in so these attributes will allow you to modify the behavior each of each component okay and if you're curious what are all the attributes that are available for different types of inputs i would start with checking out our product docs this will explain everything if you look up input form screens i always just use the latest docs just because there's more information but our san diego docs are now available so feel free to check that out i'm going to look up um [Music] attributes for input form screens configure input form screens attributes okay so if i were to look up string inputs um you can see that these are the two attributes that are available to you for inline this is whether the input is shown inline or opens up in a separate module and then max link for the maximum number of characters okay um i believe that's maybe we can add this to the docs but um for string inputs you don't need this to make it work um you don't need any attributes for the configuration to work so that's just an fyi okay so i'm going to delete this for now and i can change it later i just want to show you that this works um as is so i have just to recap i've created my action function this action function is a write-back action type which i filled out here it will update the work order tasks table i've created my input form screen and i created an input for a short description the last thing i need to do is i need to uh actually map my input to my action item because right now the the right back does not know what field to write back to it knows that it's coming from the work order test table but i need to map the short description field to the input that we just created okay and then we'll save now my action is fully complete all i need to do now is associate this action onto my mobile screen okay and i want it in the top menu of my work order task so i'm gonna open up another mobile app builder just to save some time and i'm going to open up the field service mobile scope again and because i already know what exactly is what screen that i want i'm just going to use the search bar and look up work order tab okay and uh it tells me that there's two work order tabs there's a list screen and record screen i want to put it on the record screen so we'll open this up give it a second to load uh my instance just much lower because i've done some chaotic things on it and i probably have every single scope enabled on my instance so that's the only reason why it's slow but on your own instances mobile app builder should be much faster okay so i have my record screen popped up i'm gonna scroll down here to my top menu functions this is where i associate it i'm going to create a new okay and then we'll name this uh update work order task what label do i actually want technicians to see um we'll just call it update icon's not needed here um since you can't see the icon um but function we're going to now associate the function that we just built and we're gonna uh it's called update workbench task okay so now if i save i should be able to see my new update action we'll do a refresh from the home screen and then we'll take a look at our top menus so now you can see that there's a new function for update if i tap on it this will allow me to update my short description so let's say what's the current description network outage let's call this uh network outage issue issue knowledge issue and then we'll submit and then you can see that it's updated that one field okay so that we've created one input to allow users to update your short description field so now let's go and do the second one and we'll use a different input type um and you can see that i'm going to be highly leveraging product docs as i build out each complaint uh and i would recommend that you do the same um this will probably answer most of your questions if you have any questions on user input form screens okay so let's create a second input for priority field i'm gonna go back into mobile app builder i don't have to create a new action right because this is the same action so i'm just gonna go back into my input form screen the container and i'm going to create a new input okay and we'll call this input priority the label will also be priority uh i won't make this mandatory um and then we'll save for now okay so what i'm gonna do next is i'm curious if there's any attributes needed to make this party film work so i'm going to look at product docs to confirm okay so i'm going to go to the choice input and it's going to say i'm seeing that there is a field in table uh attribute which is a good sign or it's a sign that i'm going to need this because if i want my users to pick from a a choice list it needs to know what table and field it comes from okay and it looks like this multi-select is optional so the only two attributes that i need are these table and field attributes okay so let's uh build out these attributes going back to my input i'm going to scroll down and create a new attribute here um oh you can see that you know why is my table and field actually not showing and the reason for that is because i'm going to delete this when i created a new attribute oh whoops uh when i created a new input i forgot to change the input type from string to i want choice okay and how you select your input type will change what attributes are available to you so that's a nice thing for mobile app builder you know if you were to build this on platform ui um you would have you just don't know what would be available um so this kind of minimizes the amount of errors that you might run into okay so i'm going to save and then i'm going to create a new attribute again and now i'm going to see table which is going to pull from the work order tasks table we'll save that's our first attribute we'll go back into the input and create a second attribute called field and then i guess it wants us to map the table again which is fine uh and then for the value it's going to be priority and then we'll save okay so now that my input has those two attributes this should work um input choices i want to call out that you know if you don't want to reference any data from the table so let's say you know you want to have your own options to pick from then you can use this input choice to totally create new ones okay but my priority field is going to pull from the actual priority field from work order task so i should expect to see five different choices for critical high medium and so forth okay um the last thing to make this work is i need to map it on my action item um which is weird because i thought i mapped short description earlier but we'll do that again we're going to map our short description to the short description input and then math priority to the priority input that we just created and then save okay so now if i do a refresh refresh and then tap into my work order task and tap update so you might be thinking where is that priority field um so let's fill out short description for now uh we're gonna say network issue and you're gonna see that there's now this next button to take me to my next input so this is not something that was previously available prior to rome um you can actually paginate your different inputs if you want to take them through you know a streamlined experience before you know you would see two uh two some customers would have 20 plus different inputs and those all on the same screen it can be quite overwhelming so you can now create um you know groups of related inputs and then put them together on a single screen so this could be short description priority all things related to the work order task and then if there's like completely different data that's not related to this you can create this paginated experience okay um and then i'll show you how to revert back to the old experience and just use one page that is also something you want to do but for now let's uh let's update this to hi and submit okay so you can see that it changed from critical to high and that the short description changed as well so the next thing i want to show is how you can uh control that paginate pagination behavior and that's actually available to you on the input form screen this container here uh if i scroll down you can see that there's this input form screen page display and this will determine you know if you want one page two pages multiple pages it's completely up to you but right now by default it is uh it's creating one input per page i want it on a single page so if i were to save this let me show you what it looks like i'm gonna refresh the home screen and then open this up and then now you can see both inputs are on a single page okay now let's say that um i wanted to create multiple pages with uh with this custom page setup um i would leave it at custom page and you can actually create individual pages whether it's one two three or so forth so forth um and then for each input you can uh define which page that input belongs to so i'll just create one just to give an example i'm going to create two pages um we'll call this page one give it an order of 10. we'll go back to my input form screen create that second page call this page 2 order 20. okay and now let's say that i want priority to live on the first page and then i want short description to live on the second page to do that i would go into the individual input if you scroll down there should be a field for page input one page and i'm going to set this to page two save and then the priority i think it's already oh no it's set to none so we'll map this to page one and save okay so this is gonna make a lot more sense when you have you know more than two inputs but i'm just using this as an example to speed this up okay now i'm gonna refresh again and pull up that input form screen so now you can see that party was the very first um [Music] input that gets pulled out and then if i click next there's a short description okay so you can see that you have much more flexibility on how you um you know move your inputs around on this input form screen lots more flexibility on how your users will engage with their actions and fill out those inputs okay um another couple things that i want to show because they come up a lot i want to show you the variables autofill variables how do you autofill um for short description for example uh we're going to click update thanks right now it shows me a blank short description but uh maybe i just want to add a couple words to what the uh you know what the current value is so how do i autofill that current value um so to do that i'm going to go back to my input form screen and i'm going to create what's called a variable okay variables are what's used to uh it's collected from the user to automatically or define default information as an input so we're going to create a new one and this variable is for [Music] short description variable the variable type you have all these options um it can pull information from the user the database field date um with input form screens date variable has been drastically improved um it's something you'll be able to use much easier uh you can also pull gps coordinates set it constant what we want is the actual database field itself so we'll set it to that um and then we'll save so this was just the container for your variable now we create the variable attributes um and you might be wondering what is a variable attribute we'll go back into product docs and we define each variable on this page if it loads come on oh i was on the same page uh variables let's do control fine oh here we go okay so these are your four types of variables uh you can script it can be a constant value it can just pull from the the table itself and then also the context field okay just for example we'll stick to the most basic use case which is the field name so let's select field name it's going to pull from work order task and then the value is of course going to be short description okay uh and i've saved okay and now my variable is done i believe i don't need to map this variable if i remember correctly um because on my action item i already have the input mapped for short description and this variable uh was built on my input table so this should already be announced so if i were to refresh i should see those see the change oh um maybe another refresh oh it's not refreshing okay so let's check to see what happened here uh we'll troubleshoot live um if i click into my variables let's see what i'm missing it's a variable type of database field i have my variable attributes which is pulling a short description from the table uh maybe i do need to map my input well let's go back here oh yes so uh i'm i'm mistaken um you actually once you create your variable it doesn't know that you create a variable until you map it on your input which makes sense so now that i've mapped my short description variable we'll save and then we'll do a pull to refresh and it should work and there it is so now you can see that it's going to automatically pull in the value that that is that it currently has okay so you know i can update this to [Music] network um outage issue and then submit so now you can see that it's been updated okay so i think those were the main principles on building your user input um sorry or input form strings there's so much that you can do with this we just covered the fundamentals but this should give you uh you know a starting point on how you can start digging to the product box [Music] okay uh adam cherty ian are there any questions that we want to highlight from the chat any good questions um the the biggest question i saw was really around the ui rules and how we used to have the ui styles that could be set in studio which no longer work with mobile card builder so it doesn't really matter studio versus mobile app builder it's really um if you're on now i can't remember my alphabet whatever came before rome when mobile card builder was introduced first paris oh my gosh i'm sorry my my um the alphabet escapes me so when mobile card builder was introduced we really kind of lost um ui styles the the application of ui styles and so anybody on um quebec or uh quebec or or more recent is going to need to use ui rules ui rules are being moved into mobile card builder which will make them easier to um apply and utilize yes uh and just to clarify um any starting on quebec any new screen that you've created or what we used to call applets that you've created on quebec instance will then need to require using mobile ui rules for your ui styles as well as your ui policies okay if you have an old legacy screen prior to quebec you can still apply the old old um because it's using the old uh card types of item views but uh so but yes i don't think you can edit it because when you go to try to edit it even if you're using studio um those legacy views got converted to mobile card builder and mobile card builder doesn't allow the application of ui styles within studio so you still have to use boom boom ui rules on quebec or later even with the older cards um because of mobile card builder we lost the ui styles with mobile card builder and replaced it with mobile ui roles that's a great point and you're probably going to want to migrate over to mobile ui roles sooner or later anyways um but you know if the customers have to use cy styles you probably can't do it on the platform ui yeah and i probably that it was probably me that confused things with regards to styles versus ui rules i think the root of the question really is around how to build the condition and for that um i was just suggesting in the chat uh to go into like just a regular platform list view and build the condition and then you can just right click on the breadcrumb and grab the copy query and then you'll be able to see because often it's just you know a choice value versus the label or field name something simple like that and you can easily build those out using the list views that's a great tip uh that's awesome ian um i also want to share some good news uh we predicted that mobile ui roles would be a big question upcoming and so as a part three for our mobile uh classic migration series we are covering mobile ui rules and how you can apply them for your ui styles and uh ui policies so definitely check that out next week's session uh for mobile ui both uh but with that said i think we can probably wrap up as well um uh thank you everyone for joining us today uh it's uh we still have lots of more sessions on classic migration uh building your expertise with mobile builder and then deeper dives into asian workflows um so and and a great way to share feedback with us is to let us know in our post session survey there's going to be a couple questions asking you what topics he wants to explore in the future such as today with mobile ui rules we love getting feedback from all you just to make sure that we're covering topics that are relevant to you so definitely make sure to let us know in the survey um also if you're new to our academy series just a reminder that we do upload these uh sessions onto youtube which you can find on our mobile community site so make sure to subscribe to our community forum register to our mobile app academy series and then you'll get notifications on our latest updates uh last pointer um because we really want to make sure that you have this resource available to you it is a completely new series that we're doing um it's called mobile classic migration office hours it's basically an hour that you get free time with our mobile gurus we'll answer any question that you have around uh mobile classic migration as we get closer to the deprecation date and it should be the the first featured link on community i'm not sure why i'm not able to go into the community site but maybe just me but if you open up that first link make sure you register it's going to be tomorrow morning at 9am pst and we hope to see you there okay but with all that said thank you all for joining and we hope to see you again tomorrow as well as two weeks from now in our next mobile academy all right thanks everyone and cheers
https://www.youtube.com/watch?v=UWLqVFtl5f4