 I am Marta Villa, I'm going to present the Android settings, well the Android web apps, but here with me are Jose Garcia and Marcos from the Android team and up there we have George. I'm going to be probably differing questions to them at some point. So we are four people here. And this session is about introducing the three Android web apps that kind of extend or support the configuration of the ties to all the implementations. Through web application so it's for the admin. Normally, there are three Android. We only had Android settings for like three years. So now and now we have three. So I keep saying under settings but no, it's the three of them. So we have the Android settings web app, which is the first one and the oldest one and then we have to new APK distribution web app and use case configuration web app. I'm going to present the three of them. And then I want to hear also, we want to hear also from you. How can they keep growing or which other ideas you think we could take to this level of web configuration. So I'm going to start by the Android settings web app. I'm mainly going to review the menus and functionalities that they offer. So if you have been using any of those and have struggled or everything is unclear, please stop me right away. This is more like a, let's explore the apps together. Because probably if you have a question someone else is thinking about the same or I didn't explain it properly. So, so that's mainly what we are going to do. So the first one, sorry, I'm seeing a bar here that you are not seeing, but I want to hide. Yes, okay. The Android settings web app is mainly meant to help you define the sync process the data and metadata to control the, the, the number of TIS that you are mainly we're worried about the, the amount of data that is downloaded. So, for that you can use the under settings web app it will also let you run tests per user you can estimate how it's going to be the download process for a specific user. You can also customize a little bit the appearance of the, of the Android in the phone of the app in the phone. It's also the app that lets you configure the analytics that you can add offline in the in the device. And also this safe parameters in data store. This is that it has a new authority you know this is what we mean with this so until now to use the Android settings web app. You need the admin had to have the all permission and we know that we don't want to give all to everyone. So now there is a specific authority for for this app you don't need to give the old permission to your admin anymore. The first thing you find when you open the Android settings web app and let me show you where it is. Normally you have to install it from the app hub. So you go to app management app hub. And you find it here. This one is a. I have it installed. I think, yes. But yeah, normally you go there you install it is not bundled by default when you install your DHS to, or when you run your DHS to server. And this is what you see. So I'm going to go through this menu, we are going to start with general. So in general, what do you find analytics report and I'm not going to go super in detail with everything, but I will share the documentation in the end and wait for your questions as well. So here's where you tell the server where to send your analytics if you have a Matomo server, and you want to see how your app is used the volume of users we are not tracking much of the user flow itself, but you can get some statistics from your own implementation by adding here the URL. So you need to add analytics reporting URL and the ID. The next two are for in case you are using SMS. So you're using the app for when there is no internet connection default to sending the data through SMS here is where you add a few parameters about your gateway. And it's the everything that you put here is centralized for the whole implementation. The next one is the reserve values. I don't know if you use that but if you have pre generated unique identifiers in the test tool and your users work offline. You can easily see how that is a problem, because the app can be generating ideas in theory if we don't take care of that that can be duplicated. So what they are what what we do is pre generate a number of values and reserve them in the device so the server is not using them. And the app keeps on consuming. So this functionality when it reaches a 20%. So if you write here 100 when the average is a 20 will reserve 80 more if there is internet. So it keeps on reloading. Unless you are offline. If your user is offline for a very, very long time, we don't really have a solution. You might want to increase this number. But of course that can have downsize like if you have many users pre pre reserving ideas. So you can increase the number of ideas and depending also on your pattern. So many things have to be kept in mind for for using this but this is the solution that we have for now. And here is where you configure how many values you want to pre reserve and download in your, in your app to work offline. Then we have the encrypt device database. So you can encrypt the device, the database in the device but you have is not by default. You can explicitly tell through the setting that you want the device to encrypt the database and this has impact on the performance, but of course increases security so it's a decision to be made carefully but definitely important. And the next one is. Abit unknown but very useful. Do you know that the app doesn't allow the users to take screenshots or share screen by default. But if you know that your implementation doesn't handle private information or personal identifiable information you can disable that limitation by this tick on the on the screen. So I don't know if any of these was new for you, but we, we think is useful to present it, because we don't think is widely used to be honest and it gives a lot of flexibility for how you configure. So I'm going to move now to the synchronization. What can we do to kind of shape our synchronization process. Whoops. So, there are two places where you can set the sync parameters the user can decide how often the app is going to sink, etc. In the device in here, unless you configure it on the central server. Once you decide on the central server that the devices need to send the data back every hour, every not every hour, every day, every week. The user cannot change that the user can only manually trigger the sync if for any reason they want, but the scheduling will follow your configuration on the server. This is important to know that from 2.8 the last version of the app. If the server that you are connecting is for the HST version 40. It's going to use the new tracker importer. By default, it wasn't like this at the beginning. At the beginning you had to enable it or before this version you had to enable it. I don't know why twice. But, but you had to enable it now it's going to be by default from 240 and 28. It's not a big difference, but important to know when you report errors or anything. And then this is a new parameter in 2.8 we support the file value type. The files can be very big. So we are controlling the download only this is maybe something to be expanded. But the maximum size that you are here is going to be limiting the download when the user sinks. If files are bigger than that size the file will not be downloaded. So preventing from if you have maybe you want to use you have also web users that can upload things. Then they will not be downloaded on the Android app. Then the settings for the sync process itself. They can be set at different levels. So we have been hearing global. Now we are going to the settings here so you can set. Everything that I said the metadata sync and everything is for the whole app but then. If you specify different or. Yeah if you specify parameters for programs you can do it for all your programs. Or for specific programs and this apply everywhere in the app you can do this you can do things everywhere in the web app. You can do things for all your implementation or specific per program in this case you can define. The maximum number of days you want to download in the first thing you can set that. You can say based on what right because if you say give me 50. Yeah but which are which are the first 50. I cannot edit but here you can say based on what last update. I think or enrollment date you can also set a limit for the event downloads. And you can set also the you can set a date time for the events that you want to be prioritized this is all about helping the server prioritize what do you want to download. And then you cannot. Specific settings to your. I don't know why I don't have. So this early. Yes. Yeah so ti prioritize ti that have been updated in this period. Or events that that have the event date in this period. So this is quite maybe doesn't is not important for all implementations but if you care about minimizing the download and and to know what your users are going to see. This gives a lot of granularity. And again you can decide. Do you want 50 ti's. Overall. Or I want 50 ti's for each or unit. Or I want 50 ti's per program or both. So you can you can really really. Taylor your configuration and you can do it also per program and the menu is exactly the same. But then you choose. Do this for the child program. I need less data for the child program I need more data for the malaria program. So you can also that if you don't have anything it will apply to all the all the whole up the whole all the track all the programs. If you set it here. I'm going to move quickly for the data sets is very similar but what you already applies is for the number of data sets in the past that you want to download. If you want to store the data because it's useful for your user to have whatever has been reported this year then you specify it here. If we don't say anything. Jose is going to download. Last 12 months. Yeah. And the same you can set it for all the data sets in your app, or you can decide this data set I need to download more because the historical is used being offline. Or for this one I don't need it. Again. Yes. Yeah, let me add one. So this one is monthly. So the fault is 11. Okay. Let's say I don't know if we have any that is different. Yeah, 12 weeks. No, it's a default. But again, you can change it to whatever you need. And the last thing that is interesting is the user sink test. So this is going to help you. It's an estimation, but it's going to try to help you understand the volume of the of the sink call how big is going to be the download what's going to be the size of that process. In terms of network. So you can add the name of the testing user that you have. This is going to be based on your configuration, which metadata do I have access to. And then how much data am I downloading based on the parameters. And then you run the test. And maybe this is not the best user to run the test with. Hmm. This user has a lot probably this is not a good idea. I'm going to be running. And come back later. So these are the settings I already went through this. Yes, data sets and the user sink test. This is the result that you will see. And we are again, applying recommendations, it might be different based on your configuration, but normally. We are recommending a maximum of programs to access or. Or units, etc. And we will tell you in red if this user is probably having a very heavy sink process, which maybe you maybe it doesn't matter because you know it's working over wifi and that's not a problem but you can know. And then we move to the next section of the app, which is the appearance. So it's down here. Oh, here we are. Yeah, this was a big user. Maximum or units recommended 10. I probably took an admin. So yeah, don't do this or change the user. If you get these results. But again, it's only thinking of the same process. It might be okay for you, depending on the setting. The appearance. Again, it works where you can configure homescreen program screen or data set, but what can you configure. You can customize the filters. I don't think people is aware of this the app has a lot of filters, depending on where you are. If you are in the homescreen you can filter by date you can filter by your unit. If you are in a tracker program which is the biggest one. You can filter by event date by enrollment date by your unit by sync status by what is this, this is an attribute program attribute. Enrollment status is translated in Spanish. I'm not used to it. Enrollment status event status and if the if the TIs are marked to follow up. These are a lot of filters and they might not make sense for all the users maybe in your in your implementation. You only train them to filter by follow up because that's what makes sense or to filter by event date because that's what makes sense. The rest is noise. It's really not helping but you can remove them here. You can decide which filters you want to see or not. So these are the filters for the homescreen. In the programs. You can also decide which ones you want to display and again you can do it globally for all your programs or you can say okay in this program and using this filter in this other program it makes more sense to use this other filter. So you can add it here and it's the same for the data sets can be global for all or you can choose per data set. Sometimes you don't need all this granularity but so where is my this one. I imagine you have noticed that in the events. In the top right corner there is a completion circle that we keep on updating based on the data elements that have completed so the user can know am I 50% done 7080. This doesn't always make sense because maybe you configure a form that you know your users do not have to complete the 100% you know and that's not wrong. You are adding fields and some of them are not mandatory. Then showing that it's not always good because they feel it's not complete. I have to reach 100% by showing that you are kind of telling this has to be 100%. So if it doesn't make sense on your implementation you can actually by default is not shown. This message is confusing. I think by default is there and you can remove it like I don't want to see this spinner in this program. Then you do we're going to have to check the documentation for this but you can decide if you want it or not. I don't remember now what's the default option. So this is about appearance and then analytics is also in this app. So you see you have general for some server settings specific for Android. We have sync appearance for filters and the completion will and then analytics, the offline analytics in the app are configured from here as well. And we talked about tract entity instance analytics and then home analytics, program analytics, data set analytics, you can put analytics everywhere or nowhere by default there are no analytics. You will not see any analytics but you can add them. So the tea analytics are a bit different some, I think we're going to start by those. This is the spinner, I should use the slides. We, pardon. Sorry, I'm running out of battery. She told me before starting but I forgot. This is a spinner we were, or the wheel we were talking about. I don't know what's wrong with my throat. So analytics, what are offline analytics or local analytics or I don't know, Android analytics. This analytics are available as I said in any of the screens if you configure them to show up and they are calculated with the data available in your device. So this is important to understand because you can see different values in your phone and on your server, because you can have more data here for let's say an or unit coming from other devices. But in your phone, you only have what you have entered, or what you have downloaded. And they have to be configured using the settings web app. So the tea analytics are a bit different than the others analytics, the other analytics, these are the analytics that you find here inside the tea I dashboard. So they are here, whatever you configure for your tea I will be here. And they have a few conditions, because it's normally the evolution of a value when we are looking at a person. So it needs to use a data element that belongs to a repeatable stage for it to display. So let's say you want to track the way evolution of a child. Then the way it goes to the postnatal visit that is repeatable, because the app is going to be expecting more than one value unless you use a program indicator or one value thing. But normally for charts this is clearly not well prepared or well it has no data it only has one value. But if this data element was not in a repeatable stage that the analytic will not show. It has to be repeatable. Because what we are expecting is a trend to show you an evolution of any value. And the same for the program indicator. Yep. Yeah, here we have one. The doses. Well, that indicator doesn't make sense, but so I'm not going to go through all of these. It is in the documentation. But these are the steps for configuring a TI analytics in the app. And the one that is more required is the nutrition analysis that generates this chart. This one has a particular configuration that you have in the documentation. And is here in this life as well if you want to download it, but you need to have specific data elements created for this, because these models. This is loading up a predefined model. That requires two parameters. So it is a specific visualization type you will choose WHO nutrition. And then which type of visualization you want to see. And then here you will tell the data elements that are the source for generating that chat. So it takes a bit of configuration, but it's three steps. Basically. So those are the TI analytics and this is how they look so you can have line charts or tables. For the wait for age. But again, we are looking for a trend. So we need the data element to be in a repeatable stage. I'm saying it a lot because it causes trouble is I don't see my analytics. Yes, it has to be in a repeatable stage. The rest of analytics are all different, but all follow the same logic, and then you can apply them to a program or to a data set or in the home screen. So that is this part in here. We don't have any. So the way that works is that you tell the app that you want to add a visualization item in your analytics. And then it's going to search from. It's preloading the last value, but it this list here is the one that matters. This is coming from the visualizations in the server. You create your charts or your tables in the visualization app. Before and then you come here and say, I want to see this in the app. I want the users to see this in the app. So it has to be created before. And this part is sometimes a bit confusing because we cannot display everything for now. We started with a selection of what we think is understandable in the phone. And then you can see the adoption and if it's really used. So there are a number of limitations. So the visualization types that are supported at these ones, column line. Chart table, single value and radar. The others will not be available in the list. They will be grayed out. It has to use relative periods. It has to use relative periods. So because it's going to be consuming whatever is in your device. So the periods need to be relative. We have a maximum of two row and column dimensions for tables. If you put more, the web app will not offer you that setting that visualization. And the organization units have to be also relative to the children. Sorry to the user. You can use user or unit, user child or unit. So but it has to be relative. So if your chart or table that you have created in the visualizer is not available here. Review all these parameters because most likely there is something that is not. Yeah. Following the limitations. It doesn't mean it's going to be like this forever. We can increase the functionalities but for now. This is what we added. So how to configure. That's what I was showing so you choose one. You can override the title. If the object, I mean the object will have a title, but you can choose another one because for whatever reason your Android users need another title, you can change it if you don't change it. It will pull the one from the object that you added when you saved in the visualizer. And you can use groups. So what are the groups. These are the groups. If you're going to have many charts or tables and you want to help the user to organize them or you want to organize them organize them for the user. You can create groups. So these are the because let's say I said you can have analytics everywhere. So if you put them in the home screen. And you have analytics from different programs. You want to help organizing them. No, then you can create a group for the child program data and one for the malaria. And there are no limitations, neither on the groups or on how many objects you add to each group. If you don't create groups. This line will be empty and then they will be one after the other in a list. And the groups are here you can say that you want to use a group and create a group. The last part. Another thing that we have faced a lot even ourselves preparing demos is that maybe you can see a table or a child but the user that is going to download it doesn't have access to any part of it. So you can also check that. So you can say this visualization that I have selected. Is it going to be displayed. So in this case, yes. Right, so you can, you can know because it happens you configure everything looks perfect on your phone, but then it's empty on the device and sometimes it's a matter of access. Yeah, and then you save it. So the next time, I think you can choose by the group that you have already created. If you want to keep on adding. So, I think this is all for analytics. I'm repeating again the types because this is giving us a lot of problems. I mean, not problems, but to me is the most tricky part. Why is my table not showing in the list or the chart and I have to go back and check all the configuration. So this is all about the other settings up. And before we go to the next step. I would like to hear a little bit from you. I realized this is the after lunch session. So I'm really sorry for I kind of fall asleep here, but I would. But this guy with the picture was not helping it was, I was quite tense. So, if we can wake up a little bit if you can let us know, are you using this app, or if you are not any of you of what you saw seems interesting or would you expand any of it we really want to know because this app has been out for three years. And we are running out of ideas. We have a hand here and. Oh, we need a, we need, we need a microphone. Jose, can you help? Or Marcos, because I want to type otherwise I will go. Hi, Martha, I have a tricky question. I'm sorry, tricky. What a surprise. The situation is, we are implementing one urban health systems whole country. And there is actually, we have to use the Android app. Because of two situation one is the satellite clinics which actually going in some places where there's no internet. So the situation is there is fine. Another place is the inside the clinic where there is internet. They are also 50% of the device at the Android 50% as a laptop or desktop. Now the problem is the synchronization, because one patient is moved to the service days, which actually come from the reception. So he or she need to synchronize immediately. If we put the global synchronization frequency, the student not help. So how will be the best idea to solve this situation. So what we try to do. So locally we give the fifth five minutes synchronization. Or use a group if it's, but there is no option for is a group. No, so there is a local setting by setting each of the tap differently will be very difficult for us. So is there any solution, because by this time the patient move from one day to one day this might be five minutes so we are assuming and we solve the problem this way we solve the local synchronization five minutes and global is said in a few hours. So when she come back, so what's your advice to solve this problem. Easy way. Right now. You have to solve it by training. I think the sync as the last action, every time they change, which is not ideal but is what you could do. Ideally, this is familiar Jose with that we got a request long ago but it was very we could not prioritize it on implementing the possibility to skip local. So you know you have internet. You are using Android for whatever reason, or you are in a Wi Fi that is local you don't have internet but you know your Wi Fi is there, and your server is locally accessible. We were requested to implement some high some kind of, I don't know how we called it at that time but it was like on the fly. You're using the app but when when you save is going to the server. It's not stored. So this would work for you. If we did it. And I think it's in the roadmap since 2016. This is a duration, which is not so yet. No, it's not the most common case but with any of you benefit from something like this 12345. I really like it. How do I call it. I don't know that now, but we can share with you later. We can call this skip, skip local. Okay. Because the use case normally is the opposite. Like we don't want to be hitting the server all the time. It's not only about the device is also about normally you don't want all your devices trying to save all the time on real life on real time normally. That's what I would say. Earlier, we have a lot of threads in the server for each synchronization. So now the newer version after 38 is a lot of less because we are more in the server as well. So after 38, there's a significantly improved. Yeah, but it's not only because of performance. I mean, even if performance is perfect, the use case here is the opposite. You want to work locally. So we design everything local. And because of delays, we are also trying to reduce the delays, even if you have the best internet local is always faster. Okay, are there questions in there. Please. Just a quick one. We have been using this tracker application and the area where we are using it's in the northern areas is a mountain areas. So I will compliment the gentleman point that some time but most of the times I will say that we do not get to have the network coverage there. And for this, we get to have a lot of irregularities in the entries as well. So we get to have a different number in the app, different number in the tablet, and they never get synchronized and they never get masked. So yes, challenges are definitely there. Yeah, so we are getting there. I mean we are working hard for it. Not to totally agree. It's like, we have not thought of a sort of mesh setup in the for this app for now. Mesh network. Yes. Thank you. Thank you. I was dying for some water. Do you have any other comments or ideas about this app? Sorry, George. So I have an idea. It's also related to synchronization. And that is so for the stock management, it's not so much that we needed, you know, constantly or every 30 minutes. It's more that if you have an unreliable network that even if you set your synchronization frequency to once every hour, if there's no network at that time. I think there's no automatism to synchronize it for the synchronization to make another effort than like every three minutes. So for example, we recommend that you synchronize once a day it would be enough. But if you set it to once a day but if it doesn't synchronize in the night, then it's probably going to be another day so is there a way to have it like, like repeating the synchronization until it was until it succeeds, and then just going to the next We want to answer it. Thank you. But it's icing on the cake right it's. I think if the sink fails, they have remembers. It doesn't try again, but it knows that it failed. And as soon as there is internet it sinks. That's how it works today. Yeah, I tell you. Yes. You have every 24 hours, the app will try to sink actually based on the time when you did set that 24 hours. If it fails, instead of keep trying. It knows that it failed, and then when it has internet, it sinks again, and then that's the last time it's going to consider for the next 24. Check whether there's internet every 10 minutes or that I don't know, but it works because that that's what is done in Malacal in the hospitals. Sorry. I guess it's checking every every X. It doesn't really yeah okay yes, it's not the proper sink. It's more like a pink but yes. Oh, but it checked. Okay. And then we are going to move to the other apps if you don't have more questions. Have you been able to develop parameters for the choice of geographical map. This is a long overdue thing. So for now the Android app uses always the this question is about the background map, the layer that is used on the on here. So on web you have you can choose different sources for this base map. And in under you cannot. So we have been asked for for allowing to choose the different base map on the server like a configuration parameter that which base might you want your users to use. The main reason is that in some regions in the world are disputed or unclear and different base maps show different limits geographical landmarks and limits and that can be really important depending on where is your implementation so we, we have not implemented this yes this jet. And, but but it is on the road map I cannot tell more. But you can do it like change the view to a satellite image. I mean you have options, but the, but the geographical. There are no. Which one you mean. This one. The answer is not yet. Any. We move on to the APK distribution app. Okay. What. Okay, but we were talking about that since 2017. So you found it. Can you share it with an end. So the next step is the APK distribution web. The reason for developing this app is to help to at least for now, to help having some control on the versions of the app that I use in the field. Because normally the most popular distribution channel is Google play. And then when we upload a new version, your users. If they have, you can of course configure not to outer but I mean we know that sometimes they use their own device sometimes not I mean it's, it's, it's not that easy. And then you can get unwanted updates that you have not tested or that have new functionalities that you have not trained your users to use changes in the UI. I mean there are many reasons for not wanting a new version just going without any control. And this is normally something that you do with an MDM system, but for so far, but also most of the implementations don't have MDMs. For the reasons we discussed in the other session. And mainly they are expensive. They create big dependencies and there is no real good solution. They are open source and, and normally when the budget expires or the project finishes that those solutions I and is not really sustainable. So, for one part of the functionalities that an MDM does we can use this which is the version control. So the APK distribution of what it does is let you manage and control the version of the app that your users will do. And then you have time to test before deciding that that's the version they are going to use. So, I think it's we better see it here. So again this app is going to be in the app hub. So you go to app management and sorry, and then app hub. And it's this one, but we have it already. So, we already have normally you will not have here. You have to add a new version and when you add a new version is going to ask you for the version number. If you have a specific minimum version of Android to control to which devices is this applying or a recommended. And then the URL so for now, what you have to put here is a URL to wherever you are storing your APK. You can also use our GitHub repository, the APKs are there if you are using the custom app so you will come here. And then this is what this is the URL that you need to put in here. Or if you are storing your APK because you have a custom app, you have to have it somewhere accessible. So how does that look in the device. The first time the users is when the user logs in right when the user logs in we are going to check is are you in the correct version. I did that before. That's why we are not seeing the the message. But what will happen is something like this the user can also check manually. So they will see this when they log in calling do you want to update or you want to do it later. If they say later every day is going to keep asking every day you want to date you want to date so we will win at some point by insisting. And and then I didn't test this with this version. So they have to have a few extra steps than if they were using a Google play but it's not that much. So it downloads. This is the same. They have to say yes. Now my phone dies. No, let's give it time. But what is this coming from well again well it finishes from this one that was here. This is 2811. And now is installed. So this is a very simple functionality. But we hope it's going to be useful. And we want we would like to hear. Is it going to be useful for you. Do you plan on using it on your implementations. Talking to the audience now. Hello audience. Okay, so this is where you And you don't have to do anything on your. I mean they have to have 2.8. Yeah, they have to have to point it. But from there. I don't think this is implemented in 2.7. They will not know. What's going on. So what else would you add here. If you could. In this. You have to. I just had a quick comment to the previous question where it's useful. I think it's extremely useful. I have worked in an implementation with. Of capture and rate. But actually we were sending around APK files. And for many uses it's easy to just tell them install an APK file. I have spent on a zoom call 2 hours. With a healthcare facility to install an APK file to download it. All of this. So I tested this fantastic. It actually popped up on my mobile phone and can just download. And if you have a feature. In an updated capture and rate version. And you have like a dozen or hundreds of clinics. I have to tell all of them just to communicate much easier to do that. So it's, it's a great addition. Thank you. Thank you. George. George is one of our biggest funds. Yeah. I think it's very useful. But I'm also wondering. If maybe it's possible that maybe we could allow the versions that it allows maybe to be two or three. So let's say sometimes you have a. Diverse group of organizations which are still working within one system. So maybe one, one team is. Looking to use a specific version. And then the other one. I think it's very useful, but I'm also wondering if maybe it's possible to use a specific version and then the other one is. More than willing to move on to the, to the earlier version or something like that, or they're not ready. Yeah, no, maybe just allowing both versions to be available to them would be good enough. Okay. User groups would be a very good way to block. Yeah. I was going to. Okay. So the last comment we need to cover the last. And we have seven. So thank you. I think it's a very good addition. Especially for us in Ghana, because we do a lot of hundred deployment. And the last comment will really be important because that's what I wanted to raise. For our maternal and child health currently we are doing a step wise deployment. And so there are different versions that are available to specific. You says across the region, so it will be good to be able to control which region has particular vision up until when we are able to do some refresher training to be able to move them on to the next. Okay. So you kind of want to face the. Yeah. Yeah. Okay. Yeah. Thank you. Thank you. That's a, that's a very good idea. Okay. I think we're going to move to the last step because we need to finish. On time. Yes. What we want to do with. Very similar to what we want to do with web application deployment and being able to update applications and roll that out to certain users to test it and then roll it out to larger groups of users and be able to roll it back easily and those types of things. Okay. And we can work together on defining how to control that our last apps. Use case configuration. This is a very special app because this is an app to tell your phone that for a particular program, you need a different user flow. A different interface a different user experience. So you have been hearing about LMS from the plenary session and then specific sessions, there is a module which has a specific app. But how do I use this? How can you switch it on on your on your servers you need a web app, the use case configuration web app, which is gonna, you're going to tell the phone that for this program use this module in the app is a module use this user interface. What is that? Again, you need to install, like the other ones, but is actually when I want to go to this server. So, you will come here, this will be empty as here, but this one is already configured. So you're going to say, for now we have only this module is hardcore is in the app, it has to be there when we compile it so it's not dynamic for now. So we say, okay, we have different program types and one is logistics for now we only have logistics so we will have to say, I want to use the logistics program and a description. Until now, this is not the case to configuration but then when you choose the program is going to give you a list of all the programs that you have on your server, all your tracker programs, and you have to choose the one that you have configured for logistics. In this case is called real stock management. So if I go to the app, I'm going to change the user now and go to the LMIS user and while it loads. So here we are saying for this particular tracker program open trigger this UI, this module, and it needs some parameters. The program has a specific configuration, you have to define certain attributes you have to define certain data elements and how do I know that with the documentation. I'm going to skip a few, there is a configuration guide that is going to tell you what do you need. Three data elements to store your stock you need a program rule to calculate what happens after every, every time you distribute or correct, or so you need to have certain configuration that you can find here. And then you go to the server and tell the server. This, for example, our track entity instance attributes. Because where you are tracking our object is stock, certain stock. So you say the item code is in this case is called item code, but you could have another name code only for example. So these are your TI attributes that you need to have to use your program. In the next step, you will, these are, if I'm not mistaken George data elements. Or this is a, yeah, this is a data element for example that will have an option set with where can this be distributed. That's based on your configuration. So you're going to tell the app where to put things. So if you see all these labels. This is already on. So this is a. This is a normal user that is accessing a number of programs but one of them has a different user experience. So if I open for example the call chain. And I finished with this. This is the normal UI that you will know from the Android settings from the Android app. But if you choose the real time stock management program, which is the one that we have set here. The app is opening a completely different UI, which is made specifically for this use case. It's a different user flow. And here, these are the actions that you are configuring but the app needs to know where are my data elements, which data elements am I storing the information in. What are the attributes. So that's what we are saying with the configuration. We have to map our own configuration with the with the fields that the app needs to run this UI. And that's all documented. It sounds a bit weird now. So, for example, in this case for the LMS project, it was really important that the first action is to scan the product. Then you have this here and the app knows already which data element is going to be which attribute is going to be scanned because you told that in your configuration. So if you need to use the LMS module. Please come to these slides and download all the configuration you just need to add a few configurations. You need to make sure you have the required attributes, require data elements, require program rules, and then map them. And then your app will consume that UI. I'm going to leave it here because you probably want to attend another session at two. So thank you very much. We don't have time for questions for this last app, but George is always available. We are available and we are in the platform and in the community. We are at 5pm in the expert launch. What? 5pm expert launch. Is that? Yeah, we are in. Mami, are you done this time? No, no, no, you're fine. We are in the expert launch from 5.