Apr 25

PHP and IBM ‘i’ without Zend or HTTP running on the IBM ‘i’

We have always looked at the building of HTTP interfaces for IBM ‘i’ with a view that they should run on the IBM ‘i’. Our main reason for this was performance, if we are running a web server on a Linux box which has to talk to a web server on the IBM ‘i’ to get related information this would certainly slow things down significantly plus the complexity would certainly take some managing.

We have for a long time said the IBM ‘i’ HTTP server is very slow in comparison to the Linux Server, we did try to install the Sugar CRM package on the IBM ‘i’ but had to give up and move it back to our Linux server because it was simply too slow.. Add to this the complexity PHP brings to the IBM ‘i’ when Zend Core was first introduced and we felt it was a non starter where Application modernization was concerned. Zend Server did change our view a bit, not having to use the PHP server as a proxy was the first improvement, using FastCGI improved not only the complexity involved in setting up the PHP environment but it also lowered the overhead and improved response times. This made us look at using PHP based interfaces for our products again.

Before we take this story further I would also like to point out that we have looked at the Look Software products for providing an interface to our products, the products are certainly first class and do bring a lot of potential to the market in terms of application modernization. Our concern is the cost of the runtime which we would have to impose on our customers if they wanted to use this kind of interface, plus we had to provide our own changes to the screens etc to make it really worthwhile. I still firmly believe the Look Software products are the best way forward for application modernization where you are looking at refacing to start off with and then add more integration with other platforms and servers as you move forward. Their announced support for the new RPG Open Access and availability of handlers is certainly something RPG shops need to consider. However for our products we feel providing a new PHP interface would be the better option, we don’t need to provide cross product integration and we don’t use RPG for our display management. Starting to develop in RPG just to get access to the technology doesn’t seem the right thing to do?

We have been talking around our use of PHP for a long time, in fact our websites and a number of others that we have developed are all PHP based. Our concern has always been with the setup and management of an environment to support PHP on the IBM ‘i’, we have also noticed a number of issues with the new Zend Server on the IBM ‘i’ as well as a number of IBM HTTP problems particularly the slow response times from the *ADMIN servers and the constant need to manage the JAVA environment. So we need to make sure what ever direction we take it is maintainable.

We recently moved our development from a 520 system running with 2GB of memory to a new system running with 4GB of memory. The 2GB system performed more that adequately for the programming and testing of IBM ‘i’ based programs but really struggled to run very well when we turned on the HTTP server and tried to use it with any degree of simulated loading. The new system with 280GB of DASD (15% utilized) and 4GB of memory does start up the HTTP servers a lot quicker and the overall performance of the applications running under HTTP have improved, although to be honest it is not enough. Once you add the PHP server to the mix which we use to interact with IBM ‘i’ programs/objects and the response times certainly leave something to be desired. I expect if I double the memory again things will change but the cost of that is pretty steep, probably a lot more than a new PC server to run a Linux based Web Server even with IBM’s new memory pricing.

This had us thinking about how we could interact with the IBM ‘i’ from a Linux server running PHP, could we supply the programs and data from the IBM ‘i’ and leave the Linux server to manage the HTTP side of the house.

Our first thoughts were to write some kind of client server tool which would correspond from Linux to the IBM ‘i’ passing it onto the Linux HTTP service. This would require us to create a module for the HTTP server (something we have not done so the impact would be quite heavy in terms of learning curve and time to market) which could be bolted in by our customers. It would not have to be too complex because it would only be for our programs. Next we thought about the PHP modules available from EasyCom, after all this is how the i5_Toolkit works on the IBM ‘i’. As it turns out this is the route we took, our initial concern about having two HTTP servers talking to each other raised their ugly heads but after installing the EasyCom solution we found something which came as a big surprise, they do not require the HTTP or PHP server to be running on the IBM ‘i’!

If you are using the i5_Toolkit already you will know that the I5_COMD server has to be running for PHP to service i5_Toolkit requests. It turns out this is the same service which is used for a remote i5_Toolkit request from a Windows or Linux server, it just needs an additional key to enable the functionality. We did ask about how this is installed when Zend is removed from the IBM ‘i’ and it is simply a FTP of a few objects from the Linux server as they are shipped in the Linux package.

Installation of the Linux modules did take some figuring out (the EasyCom manuals are not the best) but one we did and we moved the same code we had used directly on the IBM ‘i’ to the Linux system to test it out, it worked like a charm.

So what is the downside? Well there will be a cost for the runtime! I am not sure what that cost will be as EasyCom has yet to provide me with any indication on that. That could put this in the same position as the LookSoftware proposal, as we do not know either cost we cannot make the comparison. You also lose the db2_ functions from the PHP stack because these are IBM supplied and no Linux or windows variants are available as far as I can find. Having said that our tests using the i5_Toolkit functions performed just as well if not better than using the db2_ functions.

Upside? well first of all you can get away from all the complexity of setting up the webserver on the IBM ‘i’. I have run Zend PHP on the Linux server for over 10 years and it has never folded on me like the IBM ‘i’ installation did recently! It is faster, I ran the very same pages on the Linux system as I used for testing on the IBM ‘i’ and the responses with data were significantly better. A file which had 30,000 records in it came back in probably half the time. I can remove the terrible *ADMIN servers, I don’t need the HTTP servers for anything other than running PHP services, this means I get a lot of the CPU and memory back which was taken up with running the *ADMIN servers. I can entirely remove the Zend Server from the IBM ‘i’, I am not saying the Zend Server is to blame but removing it will simplify the management of the system. I will have access to more support by going for the open source servers than I do with Zend, our IBM ‘i’ Zend support ran out a long time ago and the cost of re-instating it isn’t worth it in our case. Probably one of the biggest gains is I do not have to expose the IBM ‘i’ to the internet if I want to provide a web service which accesses the IBM ‘i’ for data! If you already have a Windows webserver or Linux webserver which is controlled by a specialist group they can integrate the i5 functionality very easily.

I am sure there are a lot more benefits and drawbacks we will encounter as we move forward and we do have a long way to go before we can be certain this is the right option for us, but the initial responses are favorable.

As we find out more information we will post it, if you are interested in looking at how you can build a similar solution let us know and we will be happy to engage.

Call us if you have any questions or wnat to know more about what we have done so far.

Chris…

Jan 07

iLook shows promise

We finally received our download links and licenses for the LookSoftware iLook product just before Christmas. I have attached a couple of screen shots to show you the results obtained simply by running the product out of the box.

iLook is a technology preview for the main LookSoftware products, there are some screens which will not convert to a GUI even if they are IBM screens, if you try to display an unsupported screen a message is sent stating that the conversion process will not work. There are also a number of features which appear to be clumsy on first use, but reading the manual (yes we do have to sometimes) soon points the user in the right direction. If you find any issues you can always lodge them with support or add posts to the forums to get updates or answers.

Having played with the product we feel it is a good first pass at explaining the basic re-facing capabilities of the LookSoftware products. However it is just a preview and should be viewed as such the main LookSoftware products offer a lot more functionality. Luckily our screens from the FTP Client converted automatically and gave a nice new look to the product. iLook is free, you simply have to register your interest on the LookSoftware website and they will ship you download instructions and licenses by email.

If you have downloaded our FTP Client Version 6.1 this could be a nice easy (and free) way to add a GUI interface to it! I am sure our other products will have the same effect.

To get a copy of the software register your interest here http://www.looksoftware.com/ilook/ilook-application.aspx

The forum related to the product can be accessed once you register here http://www.looksoftware.com/register.aspx?returnurl=%2fuser-login.aspx

Here are the sample screens using the iLook product.

System Control Panel

iLook System Control Panel

Here is the FTP Client Version 6.1 sample screen using the iLook product.

FTP Client running under iLook

FTP Client running under iLook interface

I hope that is enough to wet your appetite, get going and register for the product now!

Chris…

Jan 07

LookSoftware development

Our understanding of the Look products and their capabilities was significantly improved at the end of last year with some education provided by LookSoftware through Trevor Perry. Trevor took us through the makeup of the product and how the refacing of applications using the LookSoftware products should be managed. The information has allowed us to better understand what the product is capable of achieving.

Our original trials with the product used RAP, FTP Client and JobQGenie as a test platform, We were amazed at how every screen simply worked straight out of the box with no changes. Our concern was this was just too easy and why did we need all of the tools provided to re-face an application? Were we missing something significant?

After the education we can certainly see why our perceptions were misleading. We use UIM exclusively for our interfaces so the 5250 data stream is always CUA compliant, that means the base re-facing carried out by LookSoftware was pretty much all that was required. However Trevor came armed with a set of sample screens which had been developed using DDS to show just how non CUA compliant some screens can be, when the conversion process tried to work out what the GUI content of the screen should be it made all sorts of errors. This is where the real effort will be required when you are refacing an application.

An additional benefit is the integration capabilities such as taking data from the 5250 data stream and passing it into a Word document or email, you can also add additional information with the 5250 data from an alternative source in the same screen. This is probably a second stage process you would carry out once you had re-faced the application because it requires programming knowledge and skills.

LookSoftware also provides a number of sample applications to show the capabilities of the product. One which peeked our interest showed how to string a number of screens together as a transaction which can then run as a background task initiated from a single user action, this allows you to remove the user input required to move through multiple screens to extract a single piece of data.

LookSoftware is great technology and should be considered by any company looking to move their applications away from the old green screen look. Having completed the re-facing the integration of additional data from others sources can bring your application into the next century removing many of the misconceptions about the IBM ‘i’ being old antiquated technology! Best news is you can do this without having to touch a single line of the existing code.

If you would like a demo or see how the product can transform your existing application into a new and vibrant look let us know, we will be more than happy to provide the resources required to help you move this forward.

Chris…

Nov 05

Refaced FTP Manager with a few minor changes using Newlook

HI

The following are a couple of pictures of the new refacing done with Newlook. They show the very basic out of the box look with a few changes which we made to replace the Vertical Scroll Bar with an UpDown Control. This is the very first stage of the exercise but shows what is possible after a very short period of time! These can be compared with the original screen shots taken below to show you how a very quickly you can transform existing 5250 screen into fairly reasonable GUI screens. We have a long way to go with the project and we are learning all the time, writing VBScript and Macro’s is not something we have done before so we are seeing a lot of stupid errors creeping in.. But we eventually get the way of doing things and then we can move forward very quickly.

Anyhow here are a couple of the pictures

NewLook Site List

NewLook Site List

NewLook Object Attribute Display

NewLook Object Attribute Display

NewLook Log View

NewLook Log View

NewLook File edit

NewLook File edit

NewLook Directory Display

NewLook Directory Display

If you would like to reface your application lets us know, we would be more than happy to share our experiences so far..

Chris…

Oct 26

FTP Manager V6.1 available for download

Both the product and an updated manual are now available for download from the members section of the website. The modernization of the products interfaces using the Looksoftware products has started but will not be available until later in the year. We feel it is necessary to get the product out into the community prior to the refacing due to its increased effectiveness.

The security of the FTP server has always been a bone of contention for many customers due in main to the lack of inbuilt security functions provided by the OS for the FTP services. Now FTP Manager with its new Client not only provides a very secure FTP environment for the current IBM based functions, it also provides a secure Client with easy to use functions. No more digging through pages of help to try to find the list commands or how to find out the current working directory… The new FTP client provides a very easy to use interface for non technical users.

We had to resort to using a PC based client for our FTP activities from the IBM ‘i’ which involved using the PC as an intermediary staging point, this brought us many problems where objects were transferred and stored with incorrect CCSID’s. Now with the FTP Manager Client the process is quicker and more reliable with no more CCSID issues.

You can download a fully functioning trial from our website which automatically provides a 30day no fuss license to try out the product. If you are happy with what you see you can extend the use of the product by purchasing the necessary licensing at your convenience. You have nothing to lose and installation via the IBM LICPGM commands makes the install and removal a simple exercise.

Visit our download pages and try the product today…

Chris…

Oct 25

A couple of shots of the new FTP Client

We have finished the code updates and changes to the FTP Manager product. The biggest changes have been in the FTP Client interface which to be honest was pretty clunky originally. The Security Manager part of the product hasn’t changed that much, but we have added a few changes which should make the product more user friendly such as a log viewer and better interfaces to the security programs.

As we had been working on updating the RAP product to support CCSID’s other than 37, we decided to bring the same technology into the FTP Client, originally we had simply used a conversion table of our own to carry out the ASCII to EBCID translations. The new technology is hopefully a lot smarter and now uses the iconv() functionality to bring about the conversions. I have to say ,we did struggle with the iconv() function at first with a lot of hung sessions and blank screens, even trying to use the debugger to identify the problem ended up with hung sessions. Eventually we tracked down the problem which seems to be related to the table generation and how we tried to pass it between functions? I say seems because we simply moved the table generation into the same function as we used it in and everything started to work.. We will try to go back to generating the tables in a global manner later.

The FTP Client was the biggest gainer in terms of functionality and updates, a couple of things which had to be changed were the need to always go back to the connection panel before displaying the local or remote directories. Now F7 will show the local directory and F8 will show the Remote directory from any screen as long as the connection has been made. On connection we also show the remote directory up front so you can see the contents immediately. Another problem we corrected was the use of option 3 to change the directory on either system, taking the WRKLNK functionality as the base we decided that option 5 would be the correct way to change directories as well as display the file if a file was selected.

We looked at how the PC type FTP clients worked and decided that the ability to view a remote file locally would be a nice addition. Editing a local file is also possible, however we do not do any conversions of the data to be displayed, but simply use the EDTF functionality provided by the OS. As the Client is shipped with the FTP Manager it is also tied into the security side of the product. Any activity from the FTP Server, the IBM FTP Client or the FTP Manager Client can be logged through the logging facility automatically. This is something we feel is important where data protection is required, you have full control over the process plus an accurate record of who did what and when.

Our initial reason for updating the product and preparing it for shipment was to develop our Looksoftware skills, the product will be our first attempt to modernize an application interface using the Looksoftware product suite. We feel the new look and feel will greatly enhance the products appeal plus give us the ability to provide tighter integration with other data streams and applications.

Using the IBM provided FTP client interface is worse than using the DOS FTP interface, trying to list the local and remote directories can be a real nightmare especially of you don’t use the Client a lot.. We usually resort to using a PC based solution and use the PC as an intermediary step between the originating system and the IBM ‘i’. This became a problem recently which took us hours to work our what was going wrong. We had been developing the new ASCII to EBCDIC conversion routines when we realized we had completely changed the module used for all of the FTP connectivity. We needed to get an earlier copy back just in case we needed to revert to the old method and then move forward again.
Our systems do a nightly save off to a Virtual image which is then copied out to our Linux Server. The previous evenings save had been canceled mid way due to a timing issue (we were working very late!) this left the images corrupted and unusable so we had to get the previous nights copy back to restore the files we needed. Using the PC based solution we transferred the 4GB of saved data back to the IBM ‘i’ via the PC and attached it to the Image catalog. The Virtual Optical drive refused to vary on stating the images were all corrupted and unusable! after 4 or 5 retries at transferring the data back to the IBM via the PC we took a look at the actual images in comparison to others on our second system. The CCSID on the newly transferred images was 819 where as the images that worked on the other system were 37. Changing the CCSID attribute still left the images in an un-mountable state (the catalog images would mount to the catalog but the catalog would not mount to the virtual optical drive).
FTP Manager came to the rescue, we used the new client to transfer the objects directly from the Linux system to the IBM ‘i’ system, they mounted immediately after being imported and the files were able to be restored successfully. I did try to find a way of telling the PC client we need to transfer the data as CCSID 37, but unfortunately it has no settings which would allow this? Somehow the FTP server was seeing the data coming from the PC as PC data and setting the CCSID accordingly.

We will publish more information about the full product on our website as we move things forward, but in the meantime here are a couple of screen shots of the product in action. We used the product to connect to our Linux server as well as our other IBM ‘i’ system for the trials to show the natural conversion of ASCII data into EBCDIC data when viewing file content.

This is the site list which is presented on starting up the FTP client, all information about the connection is stored by user name, this ensures the links created by one person are not viewable by others. The passwords are all stored in an encrypted form and decrypted before being sent to the remote FTP Server.

List of remote sites

List of remote sites

The next couple of images show the local and remote directories, flipping between images is achieved by pressing F7(Local) or F8 (Remote) depending on which screen is currently shown. No need to go back to the connection panel to go to the other system listing!

Remote File List

Remote File List

Local File list

Local File list

The next set of images show the ability to edit the Local file or display the Local or Remote file. Only options which are valid for the respective location will be shown. you can also display the details of Local or Remote Directories and Objects.

Edit a local file

Edit a local file

View a Remote file locally

View a Remote file locally

Display object details

Display object details

Finally we have a few shots of the logs provided by FTP Manager Client. The first is the Client log which is only shown while a session is active. The second one is of the FTP Manager Log which logs all activity carried out by the local FTP server or Clients including the FTP Manager Client.

The Client Log

The Client Log

The FTP Manager Server Log

The FTP Manager Server Log

If you be interested in seeing the product give us a call, we hope to have it available for download soon.

Chris…

Oct 17

Bringing back the old!

Our recent partnership with Looksoftware has brought a new view on some of our old products. We have been looking for an application that could demonstrate the power of the looksoftware products. Our initial thoughts were to use the in-house packaging product we use to generate our products as IBM Licensed Program Products. The product has not changed in the 12 years we have been using it and could do with a new look and feel. We used to distribute the product as Software Packaging Manager/400 many years ago but with very little success. Not many ISV’s were using the IBM Software Packaging capabilities so we retired the package from distribution and simply kept the internal version updated with the features we required. After some deliberation we then decided the base product would require too much attention before we could add a new interface to it. That would take far too long for it to be valuable to us at the present time. We then looked at our JobQGenie and Receiver Apply program products and again decided that the products did not justify a first round update using the Looksoftware.

Eventually we decided to pull the FTP Manager product out of retirement and see what we can do with it. While integration into the desktop and adding additional data streams will not feature in any redesign we do, it does have a very pressing need to be updated.

The FTP Manager product was released over 10 years ago from a need to replace the IBM ‘i’ FTP client and provide security for the Client and Server functions. Because we develop software we needed to ensure that no code could be down loaded without our knowledge or permission. The FTP server on the IBM ‘i’ has no logging feature so we needed to provide our own, plus the security was pretty dismal to say the least. We wanted to be able to stop people from getting to the FTP server from unknown origins, restrict access to set times as well as only allowing access to certain functions. These capabilities are not available in the standard IBM ‘i’ FTP functions (or AS/400 as it was when we developed it!).

IBM does provide the exit point access to allow you to allow or deny access so we built the functionality around these exit points and came out with the FTP Manager product all those years ago! None of the limitations in the IBM FTP Client or Server functions have been improved since so it is just as important today as it was then.

The first thing we had to do was bring the coding standards up to date, as we grew we developed new coding standards which allow the maintenance of the code to be far better and easier. We have also moved to modular based programming so a lot of functionality had to be moved from individual programs into bound modules. As we started to review the code and changed the structure we also found a lot of new features needed to be added so the product would be simpler to use plus provide a better base for the Looksoftware. While Looksoftware does not require you to change the underlying code we decided because we are going to relaunch the product with Looksoftware interfaces it would be beneficial to everyone.

A couple of things needed attention, firstly the product had no real SERVER keepalive, the use of the sockets keepalive setting does not ensure the server will not drop the connection (something which happened regularly during testing) so we had to come up with a solution. We had originally done this by simply issuing a NOOP to the server every time the user did anything, even local actions would cause a NOOP to be sent to the server. While this worked to a degree, it was not perfect. We needed something that would do this in the background all the time the application had an open connection. If the user was working within a directory and left the pages unchanged (eg: editing a local file) we need to ensure the connection is kept alive. The solution was pretty simple and in our minds elegant. We used the alarm() function to raise a signal, the signal processor sends the server a NOOP request keeping the link alive. When the signal is raised the alarm function dies so we had to re-issue the alarm() request each time. When the connection is dropped we simply set the alarm() signal to 0 and it no longer gets raised.

Next we looked at the view cycle, the interface was very clunky to say the least. Every time you viewed the Local or Remote directory you had to press F12 to get back to the initial page then F7 or F8 to get to the new view. I wanted to be able to simply press F7 or F8 from anywhere to immediately display the correct view. This is something that will make the interface redesign under Looksoftware a lot slicker too. After some trials and tribulations we finally came up with a new design that would support the cycle we wanted.

As people are used to the WRKLNK functionality we decided to make the FTP Client a little more like it. Now selection of a list entry using option 5 will result in a directory change or display of the object. We will probably look at taking the ENTER key as a move back one directory request at some time, but for this release we have decided the use of 5 against the previous directory marker will be enough.

One thing the product could never do was view remote files, we thought this would be a nice feature to add so we designed a new function that will retrieve the remote object and display it locally. The file is cleaned up after display so no trace is left of the transaction.

There are a lot of other features we want to add now that we have started to play with the product again. The Security Management side has yet to be reviewed for functionality and ease of use so we may find a few chnages to be made there.

The next challenge will be to design the new interface using the Looksoftware products. We have already made an initial view which we think is OK and will be using it as the base template. This took us about 5 minutes ( a lot more understanding the technology first) and requires no changes to the application, now we can start to look at each screen and where appropriate change the layout or add additional features.

Once we get a couple of the screens generated we will put them on the blog for you to see. Eventually we will publish the new version for free download and trail.

Chris…

Oct 09

First trial with Look Software sucessful!

We have recently teamed up with LookSoftware to use their products for Application Modernization, something which I am sure is going to be a key activity for the IBM ‘i’ community in the coming months/years.

One area which we are really keen to take a look at (no pun intended) is Web services using IBM ‘i’ data. Look Software has a LookServer product that runs on a IIS based server that allows Web Services to be exposed using the IBM ‘i’ data and screen content. The use of the screen content is something which is really interesting, we saw a demo on how it can transactionalize (not a real word) the IBM ‘i’ screens and provide some or all of the data from those screens via a Web Service!

Let’s say you had a requirement to display some data that is stored in your database, you don’t have access to the programs to bring out that data but your users regularly require the information to carry out another process. The normal method of getting the data is to sign onto the IBM ‘i’ and go through a number of screen before finding the information, writing it down and closing all of the screens before going into another application. With the Transaction recorder available in LookSoftware you can take all of those screens passing in any required data and return the data back to the user in a single request. That data can be displayed in another application or it can be exposed as a Web Service to anyone that needs it.

The initial requirement to test out the process is to set up IIS, we had a Vista 64bit install which we thought we could use, unfortunately IIS doesnt like 64bit Vista so we had to come up with a separate PC running Vista 32bit and IIS. That’s a whole other story, but I have to say Windows and 64bit is a nonsense, support in the applications supplied by ISV’s and Microsoft does not always play together as they should!

Installing the LookServer was easy and connection to the IBM ‘i’ was a breeze. We now have a web browser based interface to most of the IBM ‘i’ applications we run without any further changes. I say most because some applications that do not follow CUA guidelines cannot be rendered correctly using the web interface. Fortunately all of our products are CUA compliant due to our use of UIM which enforces CUA compliant screens and menu’s!

Our next project will be to create our first web service using the data and applications we have on the IBM ‘i’, but in the meantime we thought we would see just how cool the LookServer is.
I have an iPod touch that I obviously use for playing music etc, it comes with a WiFi connection so I thought I would see if I could connect via the LookServer to the IBM ‘i’, the iPod doesn’t come with a 5250 emulator so I thought I would give it a try and it worked immediately. I can now sign onto the IBM ‘i’ via the LookServer using my iPod touch and use the GUI interface provided by LookServer to access my programs and products. I could have set up the IBM ‘i’ graphical interface using the IBM provided tools, but this is definitely an option which works well.

This is early days for us and LookSoftware, but the initial response we have is very favorable. if you are interested in application modernization and would like us to discuss the product let us know, we will be happy to discuss the options with you and if possible show you what it can do with your applications.

Chris…

Sep 03

LookSoftware and our first page

We have been playing with the LookSoftware product for a few weeks now, unfortunately as per usual there is never enough time to do it real justice. But we have decided on a test product to see what we can do.

Our inhouse packaging product which is used to package our IBM ‘i’ products as IBM Licensed Program Products has been languishing in the dark for a number of years. It dos what its supposed to do but with a lot of manual intervention for some activities. The core programs are required to produce the LPP but we also started to develop some additional functionality such as license tracking and error tracking. These functions are fit for the ark, so we need to replace them. Our plan is to take the existing screen and re-skin them using the refacing capabilities of LookSoftware, we will then add some integration to the desktop by doing things such as emailing the license keys directly from the product interface (today we have to cut and paste spool output). We will also build new functionality to track temporary codes and maintenance renewals with external reporting again through the integration features. Another feature we would like to investigate is the WSDL capabilities, we can then develop external interfaces via http which will allow customers or representatives to display keys and maintenance renewal dates without having to call us.

As you can see we think the product has many possibilities, we had thought the product was more about re-skinning the application than modernization. Now we can see plenty of opportunities to take the existing application code and add new and exciting functionality while still keeping the core product unchanged.

We will keep you posted on our progress.

Chris…