 Hi, and welcome to Modernizing Code, Older Than You Are. This is the story of how one student took a cobalt banking application and brought it to hybrid cloud. I'm Misty Decker. I'm the Product Marketing Director for Mainframe Modernization at Micro Focus. And joins me is this amazing student. His name is Sudanshu Dubey, and he is a student at Guru Nanak Dev Engineering College in Ludhiana. We have done this project with the Open Mainframe Project, a part of the Linux Foundation, and it was sponsored by Micro Focus with these mentors. We have Guy Sofer and Gary Evans and myself. And we spent the summer supporting and sponsoring Sudanshu as he did all of the work. So this session here today is for him to tell you about this project and to let you see a bit of the results. So with that, Sudanshu, welcome. Hello. Okay, so let's talk about the project. The aim of the project was to demonstrate the options for modernizing existing cobalt application, to address the business needs and prove the future possibilities. And so we had the following tasks. Number one, to modernize the legacy banking application. Number two, generate the documentation required to understand and reproduce the product. And number three, tell the whole world very loudly and clearly that if a student can do it, any business can too, using conferences, webinars, etc. So let's move on and look at the very first task, modernize the legacy banking application. This was the bulk of the project and when a business modernize a legacy application, their task is to make the sad customer into a happy customer. So let's see how we do it. But before that, you must be asking, what is application modernization? So I will say it is change because change is inevitable. But for business critical applications, change should be one, be gradual. Two, be carefully planned and precisely controlled. And three, have very low cost and very low risk. And this kind of change is what we are calling application modernization. Now moving on, let's see how to modernize cobalt applications. So for that, we have four steps. Number one, analyze the cobalt application. Number two, identifying services candidates. Number three, is isolating and exposing them to services. And number four, is connecting them to a new modern UI. So here we have a mainframe and a sad customer. He's sad because he's not able to access the mainframe in a way that he wants. Now moving on to the very first step, analyzing the cobalt application. So analyzing means understanding the architecture of the code and two, extracting business rules. Now what are business rules? So business rules are advanced way of documenting the code with additional info like the overall action data set of line for forms. Now this business restriction is done using Micro Focus Enterprise Analyzer and you can check this link out if you want to know more about the business rules and how they can be extracted. So let's move on to the next slide. And now we'll have a look at the original Lexi application and we will see how we analyze and how we understood the application through the UI. So Missy, can you please present the video? So here we are at the TN370 display which is provided by Roomba and let's play the screen. Our purpose here is to analyze the original Lexi making application we are entering the transaction rank and so this is the first part sign-on part and we have some usernames which are valid so we will enter one of them. The passwords can be any non-empty field. So these are the features that the original bank application provides. Now I would like to note some things that there is a screen number bank 20 and this is very helpful because it tells us exactly which screen we are using and because of the naming convention used in the Lexi application in the code we can tell that this whole screen 20 is called by S bank 20 P which is the program that manages the screen and there's the B bank 20. So the names are related of the programs that manage the same thing and there are three layers basically there's one layer of program that manages the screen that's called the screen layer and there is the business layer and then there's a data layer. So the whole application can be divided into three layers and with the help of this screen name we can find out which programs are managing which layer of the screen. So let's continue we can see that there are three, not three actually there are six options that we have so let's explore them one by one. So there's a display your account balance and we select it using by marking it slash and then pressing enter. So now we are seeing the account information of the user Desmond Jones and we can see that there are four accounts here and saving checking actually five same as checking investment retirement and mortgage and these are the balances these are the last statement dates the transactions are available for these two accounts and these are the account numbers. So this is one service that we have created this one candidate that we are choosing for a service and eventually we will create it into a service. So it says F4 to return so you press F4 and we are back at the screen and we will use tab navigate to transfer funds between the accounts again we select it we enter it and here we can transfer we can enter the amount and we can transfer the funds but I don't want to do it right now because I don't want to change the records too much so we'll just go back next we have the update contact information and this is another candidate that we are picking so here you can see that it is showing some weird letters and there's actually some issue with the screen layer so the build layer is fine the screen layer is showing some issue and in the actual service we are using the duttle layer so we are not getting these kind of issues also there should have been the present contact information here but it's not here so we just leave the service for now and we will just go back using F4 then we have the calculate the cost of a loan now even though this particular service or this particular feature is part of this application but actually it can be extracted into this standalone program because you can see there's no information related to the account so the authentication is not required for this one so we can just enter some amount okay so please enter interest rate for the form 999 so I press enter which is what we do in other applications but here we press enter only after entering all the information we navigate using tag so this is the interest rate it requires a decimal and now we can press enter so we get this amount the monthly amount is 104.64 and let's go back so after the loan calculator we have the request printer statements we just see what it is so we can enter a mail address this is actually the mail address of the user description zone the email address is not available please use F10 to confirm request so if you press F10 it will just say that we are sending the account information account statements actually again we will not be actually getting it because I don't think anyone lives with this address or even if they live we don't want to disturb them so we will just go back the last one is obtain more information so let's see what that is so the information request is not available at this time you can try the website of micro focus or call it the office thank you for interest so this is just showing us some information this is Bank 90 screen so here we don't need this we will just go back so as you can see we have six options but two of these are not really any services these are just this information and this will basically do nothing and we will not want to do anything with this the transfer funds will update the info in the data records and which is also what update monitoring function does so when we are picking the services we can choose either of these and we just pick this to make this into a service and we left this we could have used this one but there was no it was like more of a personal option and it's also like when you are actually doing it with your own application you want to discuss what your business needs and based on that you need to pick the services so here it was not much of a difference but when you are doing it on your own with your own applications you may need to consult your manager and the authority to decide what services they want so basically we made four services out of these the first one is the sign on which we used to authenticate and then we had a display your account balance this was turned into a service update content information this was turned into a service and then this loan calculator was turned into a standalone application and we used Flask to make a UI of this one so now we will just go back we are done with here and we got a feel of the user what the bank application actually is and how it works, what it does so now we understand it now we can just go back so we will press F3 to quit and thank you for using Microfocus products that's the message so we will just disconnect so that was a long presentation a long video actually but we saw what the actual UI was and so that we can later on appreciate what the new UI looks like so let's move on identifying services candidates so candidates are identified based on one, high business value and two, low degree of required code changes the result should be minimal required testing increased speed and lower risk now we use call maps extra diagrams intuitive reports, DFDs etc which are provided by Microfocus and Prize and Lizer to pick these candidates and here we have a sample like how the call maps look like and how there's auto clustering which helps you better decide which candidates you want to pick so next slide now let's look at the target architecture that we planned and we spent a few minutes here so you saw we had this big application they were over 60 files and there were six features out of these we picked four services the first one is sign-on application the second is account balance third is update contact info and the fourth is loan calculator now the sign-on application like all of these three services which are being hosted from within Microfocus Enterprise server they are using the Kix web services for the communication so sign-on as the name implies we use it for authentication it works as a central authentication so the other two services are using sign-on to authenticate the user and then we have the account balance application which basically shows the account balance it is being used by the android app so the android app first uses sign-on to authenticate then it shows the account balance using the account balance application the other UI is the web UI which is built using PHP, HTML and CSS and through that you can update your contact information again it uses sign-on for the authentication then we have this interesting case of the loan calculator application so this loan calculator is a standalone DLL which is made from the COBOL code so it is not using Microfocus Enterprise server for deployment because it does not require that it is a standalone DLL and Python we are using the c-text library of the Python to call this DLL directly here the Python is directly interfacing with COBOL which is not very much heard of on the internet and then we are using Flask to build a web UI so this is the target architecture for services all of these are hosted on the AWS cloud but because all of these have their own separate regions in the enterprise server they can be taken out and hosted separately so here we are doing it on one cloud but they can be taken out and hosted on four different machines they are logically independent so this is the target architecture that we planned yeah so let's move on now here is the third step isolating and exposing them as services so once a service candidate is clearly defined like we did previously the needed sources are gathered and they are safely extracted and isolated and we use Microfocus Enterprise developer for this Enterprise developer so when you are extracting the service you can there is a process to it and you need to make a working code but using Enterprise developer we can do it very easily it's not much of a work for a newbie like me so the service candidates can be deployed together with the rest of the workload monolith or on two separate compute instances like I said earlier so here we have the main frame we have extracted services we have deployed them but the customer is still sad because he does not know what is going on in the back end so let's connect them to the customer and for that we build modern UIs so next we create the interface for services and for these interfaces we have a lot of options we have web service we have restful service we have Android apps, we have class web apps and we have actually used in this project we have used all of them let's see how our customer looks right now we have the main frame then there are the extracted services and then we have used the modern UIs to connect them to the customer and finally a good customer is a happy customer so let's see how these UIs actually look like and first we will look at the update context service so Mr. thanks for the video so here we have the update contact information service it should be HPHTMS, CSS and it's being hosted right now the same cloud machine where the whole project is so first we need to sign in and this is actually utilizing the sign on service that is there and let's see so there are a number of correct usernames that we can enter anything just empty so it says welcome lucky lock it, this is the username and this is the information we have contact information so this is all the contact information that are there in the records so this is user ID username, address state, country, postal code telephone number send info by mail, no send info by email, no email ID is empty so let's update that so we click on update and these fields are now changed into text boxes so we can change them we just enter the email some fields are not editable like telephone number and username so let's enter email lucky address lock it com dot com and let's submit that so it says update okay okay and now it's again it went and it fetched the contact information from the records and we can see that the email ID has been editable we did not change anything else but the email ID has been editable so now we can update again if we want if we want address tool to be calling I actually don't want to change the records much so let's just say it's 659 and submit okay so it's 659 now you can do it however much time you want till you get the correct contact information then you can just log out and we are back at the sign-in service so yeah this was the update contact information service it actually utilizes two of the services the first one is the sign-in for authentication then is the actual update contact information service so that's it so that was the update contact service in the ppt in the pdf that will be available to you you can just click the link and you can experience the new UI on your own let's move on to the next video and that will be of the account balance service which is an android application so let's see so here we have the account balance UI this is in my android phone so I'm using it from there so let's sign in there are a number of usernames that are valid and others are unvalued if there is anything just something on empty let's sign in it seems there was an issue let's try again and here we are welcome Desmond Jones so we have user ID user name and user account information so this user has five types of funds savings, checking, investment, retirement and then there is the information as the balance of $91.15 and some of them have transactions available, some of them don't have and the dates are in some other format but that can always be changed whenever you build this UI on your own so this is the information, this is the UI where we are in the app we are contacting with the account balance service now again we are using two services here the first one was the sign-on service that we used to authenticate the user and then we are using the account balance service to fetch the data that is there in the COBOL application so we are using COBOL service to fetch the data to get the service to be more precise and we have the data in our own application for the account balance UI thank you so that was the Android application that is using the COBOL service to fetch the account information and let's move on to the last video which will be the loan calculator it's a flash web UI so let's see how it looks so here we have the loan calculator service and we have three fields that we need to enter the loan amount, the loan terms and the loan interest rate so let's enter them we can enter any value that we want let's see so it's saying that the monthly payment amount is in dollars 1141.31 this is the amount that we need to pay if we wanted a loan of the amount that we entered now let's try another loan and another value is $104.64 but there are some validations in place so for example if you enter 0 months as the loan term then if you say that please enter a non-zero term now these validations are happening at the COBOL end so it's not flash that is doing these validations it's COBOL that are checking these values similarly if you enter anything above 100 because it's 3% so decimal point missing is raised oh so loan interest needs a decimal point so we need to enter the decimal point even though we are entering a wrong value so our trade is 100% of more validations that are in place that are being done in the COBOL side and loan calculator service so that was the loan calculator service and again you can check this link to experience this UI to use it to test it out whatever you want so that was the last video let's move on with the slides so the next step after we have built all the coal all the UIs and everything to generate the documentation because an open source product an open source project always needs good documentation so that others can use it and contribute to it so let's move on now we have written technical documentation everything is in the repository the documentation includes the original architecture the target architecture and then there is the guides to extract the required code and create enterprise developer projects there's guides on how to configure enterprise server regions and how to deploy the modern UI there's all this stuff and then there's more like everything that you need to reproduce a project everything is there on the GitHub repo here we have a QR code so you can scan this QR code right now to reach the GitHub repository and access all the codes and the documentation that is there now the next slide so apart from the technical documentation I have also written blogs the first one is stepping through the door to the mainframe world which basically tells about my journey from being a normal student to this cool student who works with the mainframe so that was one blog the next blog is cobalt modernization the way forward in which I introduce this project and why it is necessary why we are talking about it why we are doing it there's a third blog analyzing the application that is older than you are so in which I detail the process I follow to analyze and understand the lexie application so there's all these blogs and there are more coming up again you can scan this QR code to reach the blog site of the open mainframe project and where you can see my blog and you can see all the other blogs that the other students the mentees have written and you can first read the technical documentation then you can check out these blogs or if you are more into the literary stuff you can first read the blogs get the basic idea then you can go on with the technical documentation so that's your wish we have both things for you now moving on the last but not the least step is spreading the words presenting it our project at different conferences and webinars so let's see where all we have been and where all we have talked about this project so the first one was the Enterprise Computing Conference where we presented this project that was our first conference together the next was the 2021 share virtual experience there also it was a very good experience presenting with the audience and then we had a webinar with micro-focus modernizing code older than ua was students journey and the next one was the open mainframe summit in that presentation was a part of a bigger session so you can check that out also and now we are here at the open source summit and we are live in front of you we are not live we are pre-recorded but yeah we are here so you can scan this QR code to reach the recording of the webinar it's freely available you can check it out or you can if you had the period you can check the other links that I have linked with the text to reach the slides and the sessions so yeah now for the conclusion the one line conclusion is cobalt modernization is a simple and doable process when I say simple I mean it's a well defined process and when I say doable I mean there are excellent tools available but once more this process this cobalt modernization is urgent why it's urgent because I've linked one link that IDICG states legacy systems as the number one concern for banks but you can check the internet and you can see people are talking about it people are saying why right now cobalt is required cobalt developer are required and cobalt modernization is required you can check the internet on your own but the one thing that we want to tell you the one thing that we want to tell the whole world is that cobalt modernization is a simple and doable process and it's urgent so yeah that's it from my side and over to you Misty Thank you, thank you Sudanshu very very informative and I want to stress that the urgency part of this let me end sharing stop presenting there we go this is about mainframe applications run the world and cobalt is a very large percentage of those applications this is critical infrastructure IT infrastructure for the world but those applications really are aging the mainframe technology itself continues to evolve there's a lot of extremely advanced features capable in the hardware in the operating system it's those applications that are often what is seen as being old and outdated so this effort is critical those applications can be modernized in place on the mainframe Sudanshu's project was to modernize them in the cloud demonstrating both the capabilities of modernizing the application as well as the options for deploying it in multiple platforms but each journey is unique and it depends on your particular situation and your particular applications and what we ask Sudanshu to do is to empower you by proving that it's possible and to motivate you to look at your own applications and figure out what the right thing for you to do is so we're going to open it up to questions but before we do that I just want to give a big shout out to Sudanshu we gave him a big big job here we gave him a big big job here to do something that a lot of industry professionals are afraid of doing and he dove into it learned very quickly and developed this modernization of this massive monolithic cobalt application broke it into microservices and built a new user front end in just a few months so obviously he could have done much more but if he had more time the potential here and the talent here is significant but he's a future bright star in our main frame space and I'm excited to have been able to work with you Sudanshu so thank you. It was my pleasure to work with you and the mentors and the Open Mainframe project everyone was wonderful during the project so definitely connect with Sudanshu on LinkedIn and Twitter alright so I guess we'll take some questions now. Yeah.