 Well, if you're just joining us, folks, welcome to the DHS 2.37 feature webinar. We are waiting for our fearless leader, Lars, to join us. We're going to give him just maybe 30 more seconds before we get started. Yep, he says he's coming in. Now there he is. Welcome, Lars. The show has already gotten started and you are first up. All right. So welcome everybody to this webinar for the 2.37 release. So today we're going to be covering, obviously, the new features and the new things available in 2.37 and we're going to go product by product. And so we're going to be seeing, you know, the different features by Analytics, Tracker, Platform, and Android. And some of the major themes of this release has been MFL, meaning facility registry, where we would like to make DHS 2 sort of more suitable as a facility registry, we've been making improvements when it comes to offline access to data, easier sharing, we have been working on performance when it comes to Tracker, when it comes to Platform there's been new apps and improvements around security and accessibility. A lot of goodies also for Android. So without further ado, I will turn it over to you, Scott, to talk about the Analytics. Okay. Thanks, Lars. Let me just start sharing my screen. Presentation. Can you see it? Okay. The presentation. Yep. We see it. Thanks. Okay. So in 237, we had quite a lot of Analytics features, a lot of high priority requests and touching on a few of the things that Lars just mentioned in terms of master facility list. So I'm just going to give us a really quick overview and then I'm going to jump in and demo all of these for us. The first thing we're going to start with is we have now enabled Legends to be turned on in Data Visualizer. So in the past, we've had a lot of chart types that you could apply Legend to, pivot tables, single value charts, bar charts, column charts. And now you're actually able to show that legend for that, or the colors for that legend in the same chart. And you can turn it onto your dashboard as well. The second one is the default dashboard layout, another highly requested feature. Folks want it to be easier to make dashboards. They want to have some standardization when it comes to making dashboards. So we have added some functionalities that make it quite frankly, very, very simple to make a very organized dashboard. Very quickly. The next one is dashboard cascade sharing, again, another pain point, longstanding that I think we've addressed in the 237 release. It used to be that you had to share each individual item on the dashboard as well as the dashboard itself for the folks to see the contents of the dashboard. Now we have streamlined the process. So we have this thing called cascade sharing, where it's basically one click and you can share all the dashboard contents as well as the dashboard with various users or user groups. So they're able to see it and use the dashboard. We also have now offline dashboards. This is really exciting. This means that you're going to be able to take your dashboards either through your web browser on your PC, laptop, as well as your smartphones, save those, go offline or go to an area with limited internet connectivity, and still be able to view and use your dashboards for decision making. The next feature here, number five, is the drill down and bar and column charts. So now you're able to drill down through the organizational unit hierarchy. To identify those problem areas, if you're starting to look at a bar chart or column chart at high level, we also have pivot tables that allow you to fix row and column headers. This is another longstanding request. People looking at giant pivot tables, they want to scroll through those pivot tables and not lose reference to where they are in terms of the rows and columns. So now you're able to fix those, very similar to how you do it in Excel, in fact. The next one is organizational unit profiles and maps, and the one after that is facility layers and maps. These are, again, both referring to the big push that we have right now in terms of improving DHIs to functionality as a master facility list. And these are big steps in that direction. And so I'll demo these for you as well. So let me just get out of the PowerPoint and straight into DHIs too. All right. So here we are looking at DHIs too. The first thing I'm going to do is show you how to apply a legend to a chart. So I'm going to go into the data visualizer app. I'm going to switch over to a single value chart. I'm going to turn on our favorite example, ANC1 coverage. Click update. And you see now I have ANC1 on the screen. There is a new addition here that you did not see in the past, this percentage sign. So now we're automatically detecting what indicator type it is and showing the correct indication for that indicator type. So if it's a percentage, you'll see a percentage sign. If it's per 10,000, you'll see per 10,000, per 100,000, you'll see per 100,000. So that hopefully makes it a lot easier to communicate exactly what this value represents. And I'm going to just turn off last 12 months, turn on last month, click update. And so now I'm at 91.6%. Let's go to options. We're going to go to our legend tab and options. And you'll see this legend tab and options and all chart types that you can apply legend to. There are certain chart types which are not, you're not able to apply legend to, for example, a line graph. And so you won't see the legend tab in the options menu if you have a chart type like a line that is not applicable for legend. All right. I'm going to go to legend type. And you can see I can use my predefined legend or select a legend for the entire visualization. I'm going to go ahead and choose my second option, select the legend for the entire visualization. I'm going to go down and turn on my ANC coverage. And the new addition here is show legend key. So turn on legend key. And there you go. So now you see that the color of the single value has changed. And we have the clear reference to the legend key here as well. So let me just go ahead and save this and call it ANC one coverage last month. All right. Save it. Now I'm going to go back to the dashboard. And here I'm going to demo for you the dashboard default layout. So here I'm in my immunization dashboard. Let's say I want to edit this dashboard. I want to change the layout. So I'll go to the edit option. And now in the edit menu, you see quite a lot of changes from what we had previously had in prior versions of THIs too. And the big one is here, now we have this layout section. And in the layout section, I can change the layout. And I can change the layout from free flow, which is what we've always had, or fixed column. And if I do change the fixed column, I can specify the number of columns. So right now it defaults to three, but I can say I want to go up to say four columns. And if I click save layout, then you see that my dashboard has automatically changed to having four columns. Then the other option here I have is add new items. And I can add the new items either to the end of the dashboard, which has again always been the option. Or I can do start from the beginning of the dashboard or the top of the dashboard. So let's choose this and let's just add a few items. I'm going to choose the chart I just made, as well as a couple of others that I've made before the session. So I'm going to insert this one. I'm going to do ANC 3, ANC 2, ANC 1. And there you go. So as I was adding those charts, you see that they came to the top. And you see that I've actually have three different charts here that have a legend applied ANC 1 coverage, ANC 2 coverage, ANC 3 coverage. And then just for the sake of an example, I have another indicator that's per 10,000. So this is in patient cases per 10,000 population. All right. So now I can just save these changes. And here you go. Now we have a new dashboard layout. And hopefully you appreciate how easy it was to reorganize the dashboard by columns and then add my dashboard items either at the top or at the bottom. All right. So now I'm going to move over to talking about the dashboard cascading sharing. So the easiest way to do this is just to show you how it works. So I am now going to share this dashboard with a group of users who don't necessarily have access to these new dashboard items that I've just added, these four charts here at the top row. And so I'm going to share the dashboard with the system administrators. I'm going to give their access to view and edit, give access. So now we see that system administrators have been given access. And now the new thing to enable cascading sharing is this second tab up here that says apply sharing to dashboard visualizations. So I'm going to click over here. And you're going to see there's a lot of text here. I won't go over all of it, but essentially it's communicating to you what will happen if I click apply sharing to dashboard visualizations. Essentially, if a user or group has a view and edit access to the visualization, this won't be reduced to view only. All users will have access levels that won't be updated or changed. So let's just see exactly what happens. So I have now shared this dashboard with a new user group. I have four new dashboard items. I'm going to click apply sharing to dashboard items, and it's going to process. And then it gives me this message here, four visualizations were updated. That's these top four here that I just added. And then 17 visualizations already had sufficient sharing settings. So that's all of the others. So now I've just very quickly given access to those charts that I had just made to that user group, system admins, that enables the user to access them. That enables them to view this dashboard. All right. So just to show the proof of that, I'm going to open this dashboard item back in the data visualizer app. I'm going to go to file. I'm going to go to sharing. And now you see here we are system administrators have been added to the sharing settings for this dashboard item or for this chart automatically based upon how I shared it on the dashboard. So again, hopefully this makes it much, much easier for everyone to share their dashboards with users very quickly, very easily, and really helps communicate across multiple dashboards. Okay. The next thing I want to point out is the offline dashboards. So here we're looking at the dashboard. And we see up in the top right corner, the online status. So you see that we are currently online right now. This is a new addition to the header bar on the dashboard or the DHS to header bar in general. So if I click on more, you now see that my first option is make available offline. I will make this dashboard available offline. I'm going to reload the dashboard. It's going to take just a second here and it's going to save it. Now, how do I know it's saved? Well, I have now this indication offline dash data saved and it tells me when it was updated. Okay. So it's just updated a few seconds ago. And if I hover my mouse, you actually see the timestamp for when it was updated last. And if I look at the dashboard itself in the dashboard selection menu, you see that I have this icon here indicating that it is saved offline. So if I go offline, just bear with me while I turn myself offline on this web browser. I'm going to go offline and now you see that the dashboard is offline. Oh, sorry, I turned itself back online. One second, developers tools, bear with me. Okay. So let me just leave this open. So you see that I am offline. My status in the, in the DHS to header bar says that I'm offline. So if I go to another dashboard, you'll see that I get this offline error message. So I'm not able to load this dashboard. But if I go back to the communication dashboard, you see that it loads. So again, what you're able to do is save your dashboards. When you're online, go offline, you go out to a supervision visit, you go to a facility, you go to a website, you go to a website, maybe you're, you know, you want to be able to access your data in situations where you're not able to connect to the internet. So this is how you're going to be able to do it now is save the dashboard offline. Now, when you are offline, you'll see that you're not able to do some things. You're not able to, for example, apply filters. You cannot share and you cannot edit the dashboard. You have to be online to be able to do these things. But at least you're still able to view your data, you're still, you're still able to communicate your data. You have available dashboard items or options, for example, open data, open the data in the data visualizer. You can still do that offline and you can also view full screen. So you can present your data in full screen mode, even if you're offline as well. Okay, I'm going to turn my, get myself back online now. Back to online. The next thing is the drill down and bar and column charts in the data visualizer. So what I'm going to do is I'm going to open up my A and C single value chart. I am going to change this to a column chart right here at the top, the update. I'm going to change my period to last 12 months. I am moving my data to filter and my org unit to series, filter, org unit to series, and then draw my period over to category, the update. And now I have this bar chart and or sorry, excuse me, column chart. And you see that actually my legend is still applied to this column chart. So what is the new feature? The feature is able to drill down the org unit within a, within a column. So let's just take this as an example. Here we see that in May, 2021, we had a A and C one coverage of 142%. Now, if you understand A and C coverages, you know that this is usually not technically possible. It's that means that you're, you're, you're having more A and C visits than you have pregnancy essentially. And let's see and drill down into this and see if we can find the facility that's causing the problem. So I'm going to click on this column and I'll say change for units. And I'm going to select district level in Sierra Leone. So if I do that, then you see that now my chart is broken down every single month by the various districts in Sierra Leone. And if we're still looking at this one, we see that there is one district here, Western area that has a A and C coverage of 204%. Again, this is, this is, it should be considered an outlier. This is probably a data quality issue. Let's click on that particular Western area drill down. You can see now I can go up or down, up back to Sierra Leone at the national level or down to Western area. If I go down into Western area, you see now that I have my, my Western area being broken down into the two chiefdoms, Freetown and rural Western area. And you see again in May, rural Western area is reporting 275% A and C one coverage. So let's go down into that and see why that is so high. So now we're going to go all the way down to the facility level. This is the lowest level. And when I do that, you see that now I've broken out every month by all facilities. And you can see that look, this one facility, Gaffton MCHP is reporting an A and C one coverage of 870%. Obviously a data quality problem. And this is something that, you know, most folks would have to follow up on. And you can appreciate that one health facility is throwing off the entire national statistics. So it is a serious outlier. And hopefully you've appreciated how very quickly I was able to just get down to that and see exactly where the problem was by just drilling down, finding a month that did not look right or kind of was suspicious and drill down, down, down until I identified the facility that's causing the problem. All right. So now I want to demonstrate to you the periods with fixed rows and columns. So I am going to switch this over to a pivot table. We are going to, in our org units, we're going to just go ahead and let's just turn on all facilities. I'm going to deselect all, turn on all, then go down my levels and turn on all facilities. This is just going to take a minute to load because it's a lot of data. I'm going to switch my organizational units to rows and my periods to columns. All right. And now you actually see a pivot table. And you can see that I have all of the organizational units in Sierra Leone turned on all the facilities, excuse me. And you see that I have the last 12 months. So as I'm scrolling here, I'm losing reference to the months. As I scroll down, you see that I no longer see the months. Well, if I go now to the options menu and I go to the style tab, I have the two new options, which is fixed column headers and fixed row headers. If I choose fix, if I turn both of these on, you'll see that we have the pivot table. And as I scroll down, look, I'm no longer losing reference to my column headers. I see that as I scroll, those come with me. And I'm able to make reference to them as I move through the table. Okay. Moving right along, now I'm going to switch over to the maps app. And the first thing that we're going to look at is the new facility layer. So I am going to open the maps app. Yep. I'm going to leave that without saving. Thanks for reminding me. And if I go to add layer, you'll see that the new, we have a new addition. It's the facilities layer. So I'm going to click on the facility layer. And in this layer, we're going to be able to disaggregate or indicate our various facilities by different organizational unit groups or group sets. So let's first turn on the country and then let's go down to our facility level. Turn those on. And here we see our various groups. Let's look at just the clinics. And then we're going to go over to the style tab. And this is where we can organize them by group sets. So I am now going to turn on the group set. Let's just look at facility ownership. And I'm going to add this layer. And here you see all of the various facilities in Sierra Leone. And the indication, the icon indicates the facility ownership. We look at the key up here. We see that we have mission, NGO, private clinic and public facilities. You see that the vast majority of them are public facilities. But if we zoom in to this area here, we'll change this to OSM detail. Make it a little bit more interesting to look at. If I zoom in, then you see that I actually have some facilities that are, this one here is a private clinic. And there are some others in another private clinic. But anyways, you're just essentially able to then disaggregate or visualize your map. So the facilities based upon various groups that you put them into. All right. A pretty simple feature, but it really does help get a clear idea of the various facilities, types that you have in your country. Especially for that master facility list use case that we're trying to work towards. The next big feature for the master facility use case is the organizational unit profile. So what I'm going to do is go into my facilities layer. And I'm going to edit this a little bit. I'm just going to turn off Sierra Leone. And I'm just going to navigate to a facility that I know has everything set up. All right. So here we are looking at our favorite famous clinic in Geliun. I'm going to click on in Geliun. And then when I click on this facility, you see I have an options view profile. I'm going to click on the view profile. And you see there is a on the right hand side of the screen. We have this organization unit profile screen open up. And in this organization of profile, you have a lot of information being communicated to you. First of all, you have a picture and the picture is uploaded in the maintenance app in the organizational unit configuration area. Then we also have some attribute data associated with the facilities. So for example, facility ownership, facility type, code, short name, etc. And then we even are showing now some data associated. So maybe some key performance indicators associated with this facility. So we have, for example, expected pregnancies, total population under five total population for the facility catchment area. And here you're actually able to configure whatever you want here. So you can figure your attributes that show up in the organization unit profile, as well as the various data items, either indicators or data elements that show up in the organization unit profile as well. As it stands right now in 237, you are able to edit this through the API. It's a relatively straightforward thing. If you have any folks who are used to working within the DHS2 API, the process is well documented in the links that are provided in the release notes. In future versions, probably 238, we're hoping to add a more user-friendly way to edit the organization unit profile. But as it stands in 237 in this initial release of this functionality, you have to edit it through the API. Okay, so I believe that is all I had on my demo list. I think now I'm going to hand it over to Marta to take us through the new features in Android. Let me just stop sharing. And of course, while Marta connects, please do ask any questions you have in the community practice and I'll be going through those and giving you answers. So, over to you, Marta. Thanks. Thank you, Scott. Let me share my screen. I hope you can see the screen if I can ask. I'm getting a... Okay, thank you. Thank you, Max. So, let me start. I'm going to present the main feature that we have included in the 2.5 version of the Android application to be released actually today. So, the first thing I want to introduce is not particularly only for Android, but the whole icon library of the HIS-2 has been redesigned and it has been integrated actually into the HealthIcon projects and it means that the team of volunteers, volunteer designers of the HealthIcon projects have gone through the whole icon library of the HIS-2 together with our team have redesigned all of our library just to make it look nicer as you can see and more integrated and more aligned in the style of the icons. These are the icons that we use in metadata and not the icons for our web apps in the HIS. So, now I'm going to the Android app. We have made, I think, three main efforts. One is in the data entry use experience and the second is on the some features we have pending from tracker functionalities and the third one is on adding offline analytics. So, starting by data entry, we have redesigned the... Yeah, I mean, the design is the same, but we have reviewed the layout of the tables as you can see here at the bottom right of the screen. This is how it used to look. It looks now much cleaner and integrated with the application. There are no functional changes here. It's just changing the user interface that we hope the users receive positively. The second one, it's a similar effort in redesigning the icon data entry layout. So, when we use the icons configured for options in option sets just to enter data by tapping on an icon, it was present in that before, as you can see here on the left side, but now we have included also in the... Sorry, redesigned it also. And the new UI is the one you are seeing on the screen, which looks much more nice and again, integrated with the style of the application. So, those were mainly the design of the user interface. Going now to more user experience aspects. The app already had the possibility to switch the calendar view to the spinner view from two or three versions back. However, what we are including now is that the application will remember your last choice, the last choice of the user so that it will open by default. With the preferred calendar date picker for the end user. And this is local to the user of the application, to each device. Again, in data entry or still in data entry, the QR code, it's another functionality that has been there for many versions already. And the new aspect now is that we have been asked to display the QR code to make it to be able to use it once it has been created in the application. So, in addition to being able to scan or create your codes, what you can do now is to display it on your screen so that you can share it with the default share functions of the device or take a screenshot or just offer your screen for being scanned directly from there. Another feature, and I will demo all this at the end, I want to personally, there is the non-editable data. There are a number of reasons in the HIS-2 for having data that can be seen, especially, or particularly for an end user in the Android app, but that cannot be edited. Because the event or the enrollment are complete. Sorry, because the event is not complete. Sorry, because the edit period expired based on configuration because your unit is closed. Because the user is out of a capture scope or doesn't have capture access to the particular program or to a particular category option. So, what we are doing now is to display this option in the detailed screen to the user so when they cannot modify values, they know why. And then they can raise the question to the admin. No, and particularly what is the issue. Okay, so I'm going to stop here and demo these data entry changes. So let me bring my device here. Okay, so first let's have a look at the datasets. This is just to show you in live demo how it looks. So these are the tables. Again, you knew this functionality is not new. But now it looks nicer and more integrated with the application. The second one I want to show you is the non-editable data and show you where the user can find that. So if we open this event program, for example, and I want to open one completed event. So this event is completed and the user cannot reopen. So the screen appears as non-editable and grayed out, but now if the user goes to details tapping here on the navigation bar below the bottom, you can see here this data is not editable because it's marked as completed. So this we changed based on what is the reason for the data to be non-editable. For the QR code, I think we are going to use the child program. This is a tracker program that has one attribute marked as QR code in the rendering type. So all you are seeing is not new. This is the TI dashboard, TI values. But now when I tap on the icon, what I see is it doesn't open the camera as it did before. What it does is to open the QR code so that from here, you can share it with the default functionalities or you can actually open the camera and change it and scan a new one. But we are not doing that now. For the program, I didn't show you the calendar. But the calendar, the code is actually here. So when I want to create an event, this is what we mean. This is a default view. However, you can change to the spinner. And now let's say when I enter another one, it's opening directly by my last choice, which was the spinner. Also, the odd unit is choosing the one that I chose the last time because we are assuming when you are working in one odd unit, you use the same one for some time. So let's back to or move on in our presentation. Let's go to the tracker features, which one of them is the relationships. We have added the possibility to link events with TEI relationships. So the event TEI relationships are now supported in the Android app. And the new thing is that you can create a relationship from an event in an event program targeting attract entity instance from attractive. And the second one is a filter. A new filter that we have added here to filter out the track entity instance, which are persons in this case, which are marked to be followed up. So very quickly, very quickly, we can see that here, the relationship, I can add it from here, from any event. Now we have added the event, the relationships here. This tab, this option in the navigation bar down here, it was not available before. Here's the time tree. This is an elliptic, so we will see later. And then these are your relationships. So here, based on the configuration, you can search for attract entity instance and then create a relationship. There it is. And the other one was, oh yeah, sorry, it was the follow-up filter. So just a reminder, how do I mark attract entity instance to follow-up? You do that in your dashboard by tapping here. This is how you mark a TI for follow-up. This is not new. What is new is that now, when you are looking at your attract entity instance list, you can filter out by follow-up. Now these are your two attract entity instance to be followed up. Interesting examples they have here. Test patients. Now let's move on to the biggest, oh no, sorry, forgot the maps. Yeah, so the maps we included in the last version, we included the possibility to navigate, right, to link to your navigation application, either Google Maps or any other that you might use on your device. But we didn't, we missed the possibility to center the map on the user location. So you can do that just by tapping on this button, which is actually similar to what users are used to see in their maps applications. So it's just that when they tap here, the map will come back to their position, will center in their current position, which helps for the navigation functionality. And now, yes, I can move to offline analytics. Sorry, this is actually the main new thing in this application and the one we are actually expecting the community to really test and give us feedback on. This is just the first version. And what are offline analytics or what do we mean with offline analytics? What the application is doing now is to display in the analytics tabs the analytical objects that you have created on your data visualizer. And the ones that are supported at fewer tables and then charts, column, line, pile, radar charts and single values. The others are not supported at the moment. So offline analytics are available. You see, it's wherever you see this icon means analytics are available. And they are all across the application in the home screen, in the program screen. Sorry, programs screen or in the data set screen. The analytics, when we say offline analytics, what we mean is that the analytics are calculated in the device with the device that is available in the application and without requiring internet access. We are not connecting to the server to download analytics values from the analytics tables. We are calculating the values in the application. What we download from the server is the configuration of the tables or the charts so that we can display them and put the title, etc. But the values are calculated in the application. There are of course limitations and I have put a link here to the documentation. But basically, if you go to the documentation you can find here at the bottom, you can find the limitations. The limitations are that only the objects that I enumerated are supported. They have to be reformed. The user needs to have access. And then for people tables, we are limiting for now the number of columns and headlines, header columns and lines to one. And then in the charts, there are a number of... We are not limiting the series or categories. I think we can say that most of the functionalities that you can figure out are options like trend lines or accumulated values or around the skip rounding. We are not supporting this for now. We are coming out with a quite basic version of analytics to be expanded based on feedback and further requirements. But it's very well documented there if you need to look for specific functionalities. More about analytics is that you can group your charts or tables into thematic groups that will appear like these bubbles here similar to the dashboards on web. We just don't want to confuse everyone by using the same terms in different ways. So we are calling these bloops of charts and tables. And to create the groups and to configure what you want to see in the app, you will need to use the Android Settings web application that I will demo later to show you how to configure this. What the end user can do when using the applications, the analytics is to filter out either by period or unit or to change the chart type between table chart and single value. That's what we are allowing the user to do currently. The configuration and what is available or not, it's all at the moment under the administrator user. Other features that we have implemented before moving to the demo of the analytics is that the TI dashboard options now look a bit cleaner because they are tailored to the program configuration. There are no changes in the user interface or functionalities. It's just that we are hiding things from the options offered to the user based on the configuration. For example, the tabs or the buttons in the navigation bar that are for relationships or indicators inside the track entity instance dashboard will not appear now if the program doesn't have relationships or indicators configured. They were visible before and then the screen had no actual actions available. So that was confusing or adding noise that was not necessary. The same for the button to create events is not available if, based on configuration, the program doesn't allow for more stages. And the same with the filters. We have quite a number of filters for filtering out track entity instances or events or datasets. And we are removing the one for the odd units if the user has only one odd unit assigned or... The last change is in the language. Again, this has no changes in the user interface but if you have used that before, you might have noticed that we were using two sources for the languages. We were using the user interface, the app menus and the prompts and everything that was using the language of the device. And the metadata, of course, was coming from the server with the language of the DHS to measure. So for example, a user that is configured in French but has his or her device in English would have the two languages mixed in the application. So that was definitely not intended and we are now using as main language the language that is configured in the DHS to user configuration. If the user is configured with a language in the server for which the app is not translated yet, then we default to the device language if available. If not, then English is the main language but we don't think that will happen. So let's have a look at how the analytics look in the app. So analytics are, as I said, here. They are in the home screen. Here we are. So now we can switch, right? This is data entry and this is data analysis. If we enter into a data set, for example. Yeah, let's open a data set. We have the exact same. We have the exact same button here in the navigation bar for analytics and it looks the same for programs. So the navigation is very similar. We just add or remove options based on where the user is in tracker programs. Here we see the maps because coordinates are configured for this, for this program. So let's go back to our home screen and explore this analytics. These are the groups I was mentioning. So this user, for example, can explore its data, his or her data for the antenatal care clinic. And here are the different charts that the admin user has added or for the malaria program. And then these are the charts and tables that have been configured. So now let's stay on this example. What can the user do? The user can change and change to bar chart and change to line chart and change to single value which will display the last value available. Most recent one. Let's go back to our table. And then this is different in the case of the pie chart because parameters don't work in the same way. The user can only change to a table, but in the rest of charts, all types are available. And then the filters. The user can filter out based on their unit. So all will choose all the units that the user is assigned to or has access to data or can choose a specific one. So I'm going to filter by Yandama. So now we see that in Yandama there is only one case. We can also then the active filters are here. I'm going to reset this and filter out by period now. They can be combined and doing this for demo purposes. So this is monthly, so I want to see it weekly. It's always going to the... We always offer the last relative periods. It's always going to be based on the last X periods and the maximum number depends on the type of period. If you say yearly, give these three options. These are the limitations I was mentioning. Like all periods are default. Sorry, relative periods. For months we make it up to 12. However, for weeks going to 52 was too much for a small screen. So we are limiting it in 12. And then when the user selects this, we are asking always, do you want to enter the current period? We didn't want to make it another peak. But we know sometimes you might want it or not. So this will stop in a moment. And then this is how it looks after filtering out. And the last thing I want to show you is how is this configured? So let's do this and bring here server. Let's put it here and then leave this one here. So by opening the Android settings web app, I'm going to go directly to the new parts, which are this analytics home programming data set. So here is where you see the groups. This is the Antenna Delcare Clinic group, Malaria program group, and then inside. You can see the different charts. It's the same for programs. You add them based on your first say which program you want to add the visualization to, and it's the same for this. So you first choose chart, then you can add a title and add it to a group or not. You can add here the name of a user just to see if the user has access to. That specific object that you are trying to display because otherwise you do not appear in the device. So in this case, we have access and then you just add it. And this is all from Android. I'm going to leave it here. I think Mike is next with Tracker. Thank you. Great. Thanks Marta. Let me just go ahead and start sharing a screen. Okay. So we'll take a look now at the Tracker updates for 237. What I wanted to emphasize at the very beginning of this is that for the individual data side of DHS2, which is tracker and events, we really have been focused very much on performance and stability for the last year and a half or so, which has been very timely because we've seen really large implementations coming along for first all of the COVID surveillance needs and then now really getting going with the COVID vaccine programs that are rolling out nationally. So the biggest changes that you'll notice in Tracker for 237 are actually things we've also been rolling out. We've been rolling out into the patch releases as well and getting them back ported as far as we can throughout this time period. So there've been really significant changes to the Tracker performance across the board for 235, 236, 237. I would really stress that if you are not on one of those versions of Tracker and you're planning to use Tracker for any large scale national implementations like the upcoming COVID vaccine trials, then you really do want to upgrade your instance to one of the newer versions. In fact, we're continuing to release performance improvements in the upcoming patch releases for 35, 36 and 37 that are going to be happening throughout December and January. One of the things that you'll see the biggest change in for 237 is how the ID schema are working for generating unique IDs. And we really would strongly recommend if you're doing a large scale national implementation that you want to be using a sequentially based ID schema rather than a random. But we can see dramatic improvements in how it impacts the performance of your Tracker implementation. I was going to give you just some numbers here to give you a sense of what we're talking about in terms of performance. These are real numbers coming out of a national COVID vaccine campaign over the last month. We've seen that they registered about 2 million people this month. And we're using screenshots here from Glow Roots, the open source monitoring application software that you actually could apply to your own systems will be really useful for you to get a sense of how things are going as you start to scale up and use Tracker on these large implementations. We have been able to get the system handling the entire load of this national COVID vaccine campaign, peaking at around 25,000 requests per minute. You can see here the large hump here during working hours for this COVID vaccine campaign. The search time that you have had somewhere around 2.7,000 requests per minute in the search, TEI posting time around 230 requests per minute, the event data values. It's been quite significant how much the system is being used and how much it can handle with the changes that we've introduced into the software. I'm going to show you that with all of those transactions coming through, about 99% of them take less than 66 milliseconds at this point with these performance improvements, and most of them are taking less even than 40 milliseconds. This is a really great set of numbers to give you confidence that Tracker can handle these very large implementations, but it is something that, again, you'll want to make the most of how you configure and set up your DHS2 Tracker so that it can perform to these kinds of levels. Again, you'll want to stay on as current of a release as you can for the version that you're using, no older than 235. During this time period, we've also continued to create new documentation guidance and advice for you about how to set up these large scale Tracker implementations. There will be more of this coming out to the community, but I wanted to take the opportunity with so many of you watching to mention some of the things that you can do to optimize your Tracker. I've already mentioned the 235 and up. Also minimizing the use of program indicators in your dashboard. I know that many, many systems have set up hundreds and hundreds of program indicators that they allow to just calculate each time a dashboard is open. That gives you a really heavy burden on your server when there are options for you to be able to push those aggregated numbers into the aggregate model instead. We have new documentation for you on how best to do that. You also want to limit access to those dashboards that need to continue using program indicators, particularly if it's the default landing page for your system. Again, it creates a bunch of unnecessary stress on the server if you're loading these numbers over and over again for every person that's logging in. There are more things that can be done to optimize your performance. Again, we'll be putting out more and more documentation about this and the way that we have come to these improved numbers and the ability to handle this has been by working closely with some of the early countries that have been able to use Tracker for their COVID vaccine campaigns. We'll continue to do so and make changes as we go. So again, your model as you're applying and rolling out national systems is really to stay current, to do the patch updates, and to make sure that you're staying on top of any of the implementation guidance that are coming up. Just showing you here some of the documentation that there is teaching everybody how to save your aggregated Tracker data as aggregate data values. Much more documentation available here in docs.dhs2.org where you can change up the way that you are running your analytics and make sure that everything is optimized to be able to handle what you need to be able to do in your implementation. Okay, from there, I did want to take a look at some of the features that have come into the new Capture app as we're bringing all Tracker functionality over to the combined Capture app. One of those things that's been long requested is to be able to create working lists for users and we continue to add functionality here. So you can see as I'm logged in as a user, I'm inside of the RMNCH Tracker program in a single registering unit and you can see that I have three different individuals here. But I actually am a data entry person who is responsible for doing secondary data entry for the entire district or across a multitude of clinics. So one thing I can do is to back out of that org unit and you can now see the message here that will let you know select an organization unit if you want to see the individual working list or you can see all records accessible to you and would be able to pull up all of the records that are accessible to me as a data entry clerk, for example. I also can filter by who it is assigned to, whether it's assigned to me, anyone, no one, or a selected user. And so I have a lot more dynamic way of interacting with the records that I am responsible for, the data entry that I am expected to be doing. Another new set of functionality that we've been working on, you remember perhaps from the last release that we had added the ability to validate the expressions within your program rules. You can see your green check mark here letting you know that the expression you have written works. We have extended this validation to the program rule actions at this point. So this action is about assigning a value. You can see here, if I make a mistake in my expression, then I will automatically have that expression validated. It will let me know that I've made an error and what the error is. If I go back and fix that missing parentheses that I needed, then I will get confirmation that my expression is valid. We know that program rules and program indicators are one of the biggest challenges to having a well-running tracker system. Many programs are now running hundreds and hundreds of program rules. I've seen upwards of 900 program rules in a single program. And we want to give you more and more tools to make it easy to validate your expressions, but also be able to quickly write new expressions and be able to make the most of your program rule functionality. The same that we have done for program indicators previously. So that was one of the high value updates that we were able to get in. Another one that has long been coming is the ability to handle deduplication and merging within DHIS2. We had previous releases that allowed you to mark duplicates and added a flag for external analysis of duplicates and external cleaning of duplicate entries. We now have the entirely new API service built for merging duplicate records. This will continue to be improved on in the 238 release and 239 releases. Right now, what we have is an API that allows for the automated merging of duplicates, which is documented and you can make use of. We also are pushing forward on the manual merging of tracked entity instances in the future releases. You'll start to see user interfaces that allow for that. But at the time being, the API is there and allows for this and external applications that you may have been using for deduplication can now communicate through the API, receive the list of potential duplicates, and you can also manage the merging of those in an automated way. So this will continue to be an area for us to expand the functionality of Tracker in the coming releases. And this was the kind of building blocks that we needed to get in place so that we could continue on in that path. I'll skip over a couple of these, which we've shown live. Another one around integration. It's been important during the COVID times. We've had a number of integration scenarios, whether it was for vaccine certificates or reporting of adverse events to global repositories, where it was needed to make use of notifications in order to exchange data to an external HTTP address. So using the same notifications, which previously you were able to send as SMS, or as email, or as in-system notifications, you can use this as a webhook that allows you to exchange data to an external address. This is just one step forward down a larger interoperability path that you'll see in the coming releases where we're going to be adding additional webhooks that allow for integration through not only these kinds of external connections to addresses, but also perhaps using something like Kafka. So you will see more of that in the 238, 239, 240 roadmap that we'll be publishing soon in the next month or so. And we're going to try to be as transparent as possible with all of the interoperability strategies that we're pursuing and the way to connect to various systems. At the moment, this is available to you today. You can make use of this to connect to any external service that you needed to through the notifications functionality. Okay, the last thing that I was going to do was show you where we are with the Capture App integration. As many of you know, the Tracker App is going to be phased out in the next year or so. It's running on very old technology and we had hit kind of a critical point where additional features wouldn't perform the way they needed to with this older architecture. So the Capture App is the replacement. It already has all of the event functionality and we have been working for the last year or so on getting in the rest of the Tracker functionality. In the 236 release, if I came through and I did a search as a user and found a record in the Capture App, I would open that record and it would take me into the Tracker App. But we have gotten past that point now to where we are able to open up the records directly within the Capture App. You'll see that this is coming with additional features like this enrollment dashboard here giving you a quick overview of the various stages and events. It allows you to quickly open up any existing event to go in and see what was previously reported, edit that event if needed. The information is feeding into the indicators and feedback at this point. We also are able to go in of course and add in new events within the Capture App. So for many Tracker implementations, we actually now have the full Tracker functionality that you would need. For those that, there are several other areas of functionality that we're still working on. For example, relationships. We are also adding in additional functionality that has never been available in Tracker before. For example, widgets that we're showing, growth for infants or other functionality that's been long requested. Managements, clinical decision support. So there are many things that will be added into this in the near future. Right now, this version that I'm showing you is not turned on by default or made accessible to you as users because another thing that we have tried very hard to do is revise our development project in order to work more closely with the field and with users. So the design of this Capture App that you're seeing has been a collaborative effort with many different countries input coming in from our HIST groups based on Ministry of Health requirements. And what we want to do before we make this the default or accessible to the global set of users is to now apply it in the field and do some final polishing in revisions. What you will see from us then is that right now when you turn in or download your 237 and upgrade, it won't do what I am showing you here. It will perform as it did in 236. But that is only going to stay that way for the next several months. We plan to do an interim release where we will have done some more polishing after working with several implementations in the field where by default it will begin to use the Capture App rather than the Tracker App. We are not going to retire the Tracker App until we have several releases worth of stability under our belt. But that means that in the coming months we are working with several on-the-ground implementations. We're getting user feedback for this and we'll continue to improve it. By 238 you should have not only this by default but additional functionality as well. And we'll be communicating more in the coming months as we switch from using this as the kind of turned off version of the Capture App to by default turning it on. So this is where the major functional changes are being added into the Tracker Data Model. We are no longer adding functional improvements to the old Tracker App. Now it's all going into the Capture App and the Capture App is around the corner for most of you that will be using it. So I think with that I am going to stop sharing and I can turn it over to I believe Austin next to talk to us about the platform. Where is it Lars? Lars, you can start us off. Great. Thanks, Mike. So great. So thanks a lot, Mike. So yeah, so we're going to continue with the platform part of the presentation. And Austin and myself are going to present what's new within the platform team. And as you probably know by now, the platform team is kind of both maintaining a range of applications and features and also working on more foundational components for basically enabling the other teams to work in a better way. So you will see a mix of end user facing features but also platform enhancements that we think will improve these as a platform, both for our own developers but also of course for your third party developers out there. So let's start with looking at the new data approval application that came out in 237. So in the data model, we actually have had support for what we call parallel or multiple data approval workflows for quite some time. It's been there for at least two years. But we haven't had the chance to support this in our own applications yet. It's been used by third party applications but not our own core application. So with the new approval application, we now have the potential for creating parallel and multiple data approval workflows, meaning that you can have multiple approval streams going on at the same time in the same dishes to installation. So a data approval workflow basically has a period type which defines the frequency of approval and that frequency can actually be lower than the data sets which are part of the workflow. So if you have say monthly data sets, you can now set the workflow to be quarterly and then approve for three months at a time to make the process more efficient if that's what you want. A data approval workflow also has multiple levels and levels largely follow the ordinary levels. So that means we can now avoid having to approve at all levels in the hierarchy and instead approve at selected levels. And the levels can also be of course different from every data approval workflow so that you can have different levels per workflow and do that in parallel. As I mentioned, a data approval workflow can also contain many data sets, not just one. So that means we can also approve for many data sets at the same time. So if you have many data sets which are related, which are about the same programmatic area or the same data stream as some like to call it, then making an approval multiple data sets in the same in one go basically which can make the process much more efficient. We also have made improvements when it comes to viewing the status of approval within the hierarchy so that you don't have to kind of click through everything to see it. You can just see it from the arbitrary that you're gonna see in a moment. So with that, I'm just gonna show you a little bit how it works. So first, let's go to the maintenance application. And as you can see here, we have a section for the data approval workflows. And here we have in my sort of the standalone database, we have two workflows, this child health, mortality. We clicked on this one. We can see that we have selected specific levels for the workflow. And we can also see that if you go to data sets, we can also associate this with many data sets. And then you have the period type which defines the frequency for approval basically. So this has been for a long time. We also have the levels where you can define levels for specific or new levels in the hierarchy. Okay, so with that, let's go to the new approval app. The other one is called the classic. And the new one is just called data approval, just to distinguish between them. So let's go to data approval. So the first step is that we select the workflow. We can select between in this case, child health and mortality in the five years. So let's pick the mortality one. Then we can pick a month. This is the monthly frequency. So we can select the month. And then we can select the organets. And as you can see here from the hierarchy, we can now at a glance see the status of approval for every level and organets. So we can see that the blue icon here indicates ready for approval. And the hourglass icon indicates waiting for approval to happen basically. So there's no need anymore to go in actually click to see. You can see from the hierarchy. So we can select one of the districts, which are part of this workflow. The next step would be to select one of the datasets. So remember, we have two datasets for this one. We can pick one that will show us the data for this particular dataset. So we can switch between this and look at the data. And down here, we now have the button, which we can use to approve and click approve. This will give us some confirmation dialogue that says exactly which dataset we're approving. And then we can see approve and that's it. So it's much easier, much more smooth now to use than the previous one we had, which was a lot more sort of labor intensive to operate. Okay, moving on. As part of the organic profile that Scott presented, we also have the ability now to upload an image for organizational units. So you can basically upload a photo of the facility or the district's office. We can link it to that particular organets and then we can display this image as part of the organic profile and maps. So this is really part of this overall MFL or facility registry effort that we have. But we basically would like to allow people to capture more rich information about the facility and present all of this as part of a facility registry effort. So let's have a quick look and see how this works. So we start by going to the maintenance. We go to organizational units. We can pick really whatever organets, but we can pick our favorite one, as Scott says. You click select image and then we upload a health facility photo and that will upload this one. And then you click save, it gets saved. So very easy to use. Very easy to use. And again, this will then be displayed in the profile later in the maps. Okay. So moving on, we also have improvements when it comes to data quality. So data quality is an important aspect for us. So in 236, we made huge improvements when it comes to outlier detection in the data quality application. So we had this new approach for finding the most significant outliers in the dataset, basically. So far, we only support the set score. In 237, we support something called modified set score. And this is kind of a tweak of the original set score. It's based on the median instead of the mean, which makes it less sensitive to outliers in the dataset, basically. So this is actually a very useful feature that you hope people can start to use more to find bad data in their databases. So you can use it by going to data quality. We go to outlier detection. You can pick a data set or many data sets if you want. We can go and pick a district or facility, whatever. We can find a time span. So we can go to, you know, back a couple of months. Here we can choose between the algorithms that we have. We have set score, modified set score, and also mean max values, which are pre-generated in the database. So we can pick modified set score. We can select threshold, max results. We can also have other things like start and late for the data periods and the candidate to sort by. So we run this. It takes a few seconds. And now it shows us the outliers for the data, for this particular district. So here we can see that there's obvious outliers, for instance, like 245, while the median is 23, for instance, which gives you a modified set score of 358, which is very high. So this is obvious and outlier in this dataset. So this is something that I encourage people to use more to basically fix issues with the database. You should also be aware that some datasets or some data elements are sometimes cyclical or periodicals, things like malaria and so on. We'll follow the rainy season and so on and so on. So this should be used with a little bit of care. You should know what you're looking at. But for things which are more stable, like, you know, and mental care and child health, family planning and so on, it's a great tool for finding outliers in your data. Yeah, that's actually, yeah. Okay. So moving on, we have a couple of smaller features also related to security, for instance. We now have the option for resetting a user's password through email. This is, of course, helpful to avoid sending passwords in clear texts by email and so on. So so far up to 237, really the only way to reset someone else's password was to go into the system set a new password, and then somehow communicate out of bounds what the password is. Sorry. And this very often leads to insecure behavior, like, you know, sending it over email or Slack or something, which is not really secure. So with this solution, you can go to the user, you can click on the complex menu in the user application, click reset password, and then that will basically, you know, notify the password for the user currently and then send an email to the user with a secure link that the person can follow. Then that takes you to a form where you have to fill in essentially like a new password before this account. So this is a more secure in-system way of resetting someone's password essentially. Yeah. Okay. In 237, we also have a redesigned icon library. So for things like programs and data sets, we have, you can associate now an icon to use. And this is, I think, most prominently used in Android where you can show this icon next to the programs in the list and so on to make it easier for people to understand what the purpose of the program is on. So we work with a volunteer project called healthicons.org who reached out to us and worked in collaboration with our own design team to work on this new and better icon library. So if you go to programs in the maintenance app, you click on icon, you will see that we have a much more rich and comprehensive set of icons now for you to choose from basically. Okay. A couple of minor features. We also have much faster data statistics now. So data statistics is within the data administration application. And the data statistics obviously gives you like rough statistics on the database, things like how many indicators, how many data values, how many tracked entities and so on do we have in the database. This can be useful to understand sort of the volume and the size of the database at the glance. Problem is this has gotten so slow because these are two databases, you know, keep growing year by year and have gotten unusably slow and some databases. So we now change the way we load this by using something approximate counts, which is a lot faster. So now it loads much quicker than before and is now again a suitable tool for understanding what the volume of the database is. So if you go to data statistics, it only takes like half a second now on dental database to load everything. You can see how many, how many data values, how many events are visible, are present and so on and so on. It's using approximate counts, but it's almost always accurate and it's more than good enough for these large data. So we don't really need to know 100% precisely the data in this case. Okay. So moving on. So we have a couple of features that we did not get time to include in the user interface. Though we decided to still announce it and release it because we think this can be useful to people who knows how to use the API. So first of all, we have the ability to define an organic profile. This is what Scott talked about in the beginning. Unfortunately, we didn't get time to include this in the user interface, though you can configure it in the API. So you can use a tool such as Postman, any kind of REST API client to configure it. It shouldn't be horribly complicated. And I think anyone with some basic skills in APIs will be able to do this. So you can use it starting from 237 with a little bit of a link with the API. Another feature which is highly requested and which we also didn't get time to put in the UI was splitting and merging organets. So the typical use case here is that every now and then a country will decide to kind of redistrict their sort of administrative hierarchy, which means that some districts will merged as it will take multiple districts and merge them together. And it will also split a district into multiple districts potentially. And this is something that happens, not very often, but it happens. And this has been problematic in DHS2 since organets are linked to so many things. We counted 27 associations from organets to other entities in DHS2. So at least now we have an API where we can easily split and merge. There's also strategies for how to merge data because when you have multiple districts, you would like to merge them. The question is what do you do when both districts have data for the same period in data elements and so on? So we have different strategies for how to merge the data and so on. So you can go and read the docs. If you go to the documentation portal, you will see that. Where is it? I think I closed it now. It's in here behind this one. Yeah. So if you go to the API documentation, you can go to metadata, and then there's split and merge. And you can see here that we have nice documentation for this, how to do it, not very difficult. We have to decide for the merge you must define the source, organets, the target, strategy for merging, whether to delete the source organs after all and so forth. The Organic Profile docs is down here. So you can click here. And this will now show you how to set up the Organic Institutional Profile. Again, fairly simple. So please grab a technical person and have them set it up for you if you want to use this feature. Okay, we also have some other things like GIST API, which is a metadata API designed for scalability and performance. It's faster designed to allow for large responses, large payloads. We also have a new patch API for which developers might be interested. All right. So with that, I will turn it over to Austin to take the rest of the presentation here. Thanks, Lars. I will share my screen as well. Okay, picking up where Lars left off, you should be able to see my screen now. Let me know if you cannot. Another feature that is particularly relevant to API use and developers that are interacting with the HS2 is the introduction of personal access tokens. So personal access tokens are a new API authentication method, which is similar to and a replacement for basic auth for using the DHS2 API. Similar to using basic authentication where you pass the username and password with the request to DHS2, a personal access token is scoped to a specific user. So it's recommended if you're using personal access tokens for scripts or integration services or those types of things to create a user specifically for that integration and then create a personal access token for that user. This way you can control the rights that are granted to that user so that they can be given exactly the access that they need and nothing that they don't need. And that will help to protect the data that is accessible using that integration. This is the recommended approach for authentication when building any sort of server-side integration or script. It also supports browser-based access to DHS2, though that's not recommended in most cases if you have public DHS2 instances unless you also implement some rate limiting and caching in front of the server to protect it from public access. Importantly, a single user in DHS2 can also have multiple personal access tokens that can each be configured independently for different security rules and access controls. And then those personal access tokens can also be deleted. So if one is ever obtained by someone that shouldn't have access to it and instead of needing to delete the user or change the user's password or lock them out completely or something like that, you can remove that specific personal access token which was compromised and no longer allow anyone with that personal access token to access DHS2. It's also important that these are used for API authentication but you can't use a personal access token to log into the interface of DHS2 which is another level of security when using this over basic authentication because if you expose, if you accidentally expose the username and password for a particular user then someone that has access to that can do everything in DHS2, can log in, can create new personal access tokens, can do everything else. So this is another advantage of the personal access token over basic authentication for APIs. This is a screenshot of the interface for creation of these personal access tokens. I'm actually going to go ahead and demonstrate that so that we can see how that works. So here I have a 237 version of DHS2 on the Play servers. I'm going to go ahead and click settings for my particular user and then on the left here we have a new item which says manage personal access tokens. That click on that, I have the option of generating a new one and this is that interface that I was just showing in the screenshot. I'm going to show creation of a server or script context personal access token. I then have some options as I mentioned to configure this particular token and how it can be how it's protected or what restrictions are put on anyone that tries to use this to authenticate with the DHS2. For example, the default expiration is 30 days which means after 30 days this token will stop working. This is a good practice to have when creating new tokens because it means that you can't accidentally forget about one that then gets posted on Twitter or something and then you have anyone with that token can access your server forever unless you notice that somebody is doing something wrong. So if you have expiration dates set on those tokens you can have some more control over how those tokens can be used to access DHS2. So let's go ahead and set this for seven days. You can also set specific IP addresses with which this token can be used to access DHS2 from which and that's important for server side scripts because if you add a specific IP address where your integration service is running or some other service that you're talking to that will prevent this token from being used anywhere else and that's a big advantage. If you're in a browser context which again has some security implications so it's discouraged to use this unless you really know what you're doing you can also restrict the domain names from which this token can be used. So you can specify the referrers which are allowed to use this particular token. In the server script context and the browser context you can also specify which HTTP methods are allowed. This means whether you can access data or change data in different ways and you can turn that on and off for different tokens. Obviously GET is much safer than being able to create new data or modify existing data or delete data. So being able to just access and read information is an important restriction that you can put on a personal access token which is not possible or it's more difficult to apply to basic authentication when using the API. Also this is a very long list in this case but this will show you exactly which authorities are granted to the current user and will be available to anyone using the personal access token to authenticate against the API. This is quite a long list here but it will be shorter for most users that you create and the idea is to make this as short as possible because you should be creating a new user for this particular integration that you're building to create basically to restrict the authorities that are granted to that token as much as possible. So if we go ahead and generate this new token you'll see that we have created a token here. This is a random string that should be unguessable and then you can click copy to clipboard or copy it directly. Importantly you won't be able to see this again once you move away from this page. So this token will still be available and valid but after you see it for the first time you can't see it again and that's a security feature as well. You can delete it which will remove access to that particular token if you would like. So that's personal access tokens which are important security feature of the DHS2 API introduced in 237.0. We've talked a little bit about the API and authenticating with the API. I'm going to talk now about a few of the developer features that have been introduced in 237.0 or in the time frame around then in some of our libraries that are available. I'm not going to go into too much detail about these because they're fairly technical but feel free to find out more at developers.dhs2.org or to reach out on the community of practice if you are a developer or you have developers who might be interested in using these tools. We have a couple big new UI components that have been introduced recently. One of those is a refreshed sharing dialogue which has a much nicer interface than the previous sharing dialogue it uses modern technology. It also has a number of enhancements for interacting with larger databases and those types of things. We also have a very powerful generic data table which allows developers to build data display tables in a much more robust way. Again, I'm not going to go into too much more detail about this but there are several new features that have been introduced to the platform for dhs2 web applications as well as the runtime for dhs2 web applications that improve performance and some capabilities of the developers that are building web apps. Additionally, the top item here the dhs2 core can now be packaged as a Java archive instead of a web archive which means that it's much slimmer and easier to deploy in containerized environments and those types of things because you don't need to include all of the static assets and web files that make the web archive much bigger than the Java archive. This is particularly for high-scale deployments but it's an important new feature or new capability that has been added to the dhs2 core. Now I'm going to take a step back from the technical developer functionality that we've introduced to the API and to the developer tooling ecosystem and talk about how these applications end up in dhs2 instances and how they can be better used in the 237 release. To support that we have redesigned the app hub and introduced a number of important new features there as well. If you're not familiar with the app hub it is available at apps.dhs2.org and you can see the list of all the applications that developers in the community have built including UIO and we are I'll talk a little bit about how UIO is using the app hub and the app management infrastructure to deploy more frequent and more reliable updates to applications on a different time scale than the every six-month core releases. Some of the new features that have been introduced to the app hub here I will show here. I'm going to go ahead and sign out of this user. I'm going to sign in again. One of the features that we've added is the ability to authenticate with github. So if you have a github account you can log into the dhs2 app hub. Previously we only supported Google. I'm going to go ahead and use Google for my authentication here right now to show this next feature this user has not uploaded any apps to the app hub otherwise you would see the applications that you have previously uploaded including the ones that are still pending approval. And some of the features that we've added to the app hub today are organizations. So in addition to being a user you can also create an organization which you can give a name and a contact email address and then add other users to that organization and that will allow all of the users to upload and manage the same set of applications. For example we would have one organization for the University of Oslo and the core applications. You might have another application for a particular Hisp group or a particular organization that develops applications and wants to share them through the app hub. We also have created a mechanism for API key generation. So as this user that's logged into the app hub I can generate API keys. This is very similar to what I just talked about with personal access tokens. Not as much control over what different API keys can do but you can use this API key to authenticate as this particular user from a command line or a terminal or a integration script. And again you can only see this the first time you visit this page if I refresh this page I will see that that API key has been generated I can delete it but I cannot see it again. Those are two of the features that have been added to the app hub. You can also see that we've significantly improved the interface overall of this app hub in the last year. You can see that for any given application you have a description screenshots list of the versions that have been uploaded for this particular application and you can see a lot more information in a more user friendly way. We've also introduced a set of concrete guidelines for apps that are uploaded to the app hub and which will be used to evaluate those applications before they're approved for publication. In general those are useful and appropriate generic and open source well designed and documented and secure and performant. There are very specific guidelines that you can find on the developer portal. So this is at developers.dhs2.org. If you go to documentation click under guides app hub and you can see the app hub submission guidelines and there are very specific guides guidelines for what makes a quality dhs2 application and how you can follow those guidelines to get your application approved and shared with the dhs2 community. Similar to this so moving now again back into dhs2 and how to get these applications into a dhs2 instance and and used in production we have made a significant improvements to the app management application within dhs2. So if I go back to my dhs2 instance and I go to the app management application you can see that this has also been significantly improved in terms of the user interface what you can see about different applications you can also search the app hub directly from within your dhs2 instance and see that same information about each application the different versions that are available within the context of the app management app in dhs2. You can upload manual apps to manually install and importantly you can also see the versions of a particular application that have new versions available. So if I install an older version let's say I install an older version of this app management app refresh this if I go back to this I can see that app management is on version 100.2.6 and if I click in there I have a simple way to update this this application which is a core application developed by the University of Oslo I can update that to the latest version and it is immediately installed into my system. I can then also uninstall it and importantly for core applications you can update individual core applications that might come bundled with dhs2 when it's first installed and if you uninstall that application it will roll back to the version that was bundled before so it's very easy to roll back if something happens with a particular version or you're not happy with with the way it's working for your users or something like that you can very easily change the version that's installed in your system and quickly do that. So there's been a number of improvements there in the app management application in terms of the user interface and as I mentioned the versions of the core applications that are built by the University of Oslo and deployed typically with dhs2 when it's first installed are now going to be released on a more regular schedule and you can see within the app management application you can see which versions of different core applications that you have in your system have a new version available that is compatible with the dhs2 server version you're running so if you're running 237 you can see that there might be a new version of the browser cash cleaner application that can be installed into your system and then you can very easily with a single click in that app management application update the version of your browser cash cleaner and this allows us to release core applications independently of the server versions and it also allows implementers to update versions of applications without upgrading their server which can be quite an expensive and time consuming operation as I mentioned app updates can also be easily rolled back and the core applications will be released on a more regular or more frequent schedule than the server versions that are released by the University of Oslo and I think that's it for me so I'm going to go ahead and wrap it up and pass it back to Lars I think maybe to wrap us up for the day I don't think there are any other features that we need to talk about yeah I think this is it everyone so again if you have any questions to the webinar feel free to post on the community and we will do our best to answer your questions there and we will release of course a recording of this one so you can always go back and re-look if you want to have the experience once again other than that I think that's it so thanks a lot for listening and have a nice evening