Enabling Customer Success with Visual Studio 2012
One of the enjoyable things about being a consultant with Skyline is partnering with our clients, especially those whom we have had long partnerships with, and helping them be successful with their customers over a time. It is both fascinating and rewarding to watch as they become both more successful, and see how they respond to the challenges of a changing application landscape for their customers.
Skyline has partnered with SoftwareONE, one of the largest software license resellers in the world, for many years now. SoftwareONE is headquartered in Stans, Switzerland and has operations in nearly 60 countries around the world. Our partnership initially focused on enabling their customers to access their licensing information from their backend ERP system. A secondary goal was to facilitate collaboration between SoftwareONE, its global customer base, its software resellers and the software publishers whose products they sell.
To enable this collaboration, the original portal was hosted on SharePoint 2007, with custom pages developed to access the back end ERP systems. The way the ERP system is designed, each individual country SoftwareONE does business in has a separate database. The implementation within SharePoint had each country create a separate web application, in order to identify the country, security constraints and other reasons. After several months of development and testing we had a solution that enabled access to customer licensing information as well as a collaboration platform. The solution was globally available across the six countries SoftwareONE was doing business in.
However, in the five years since the Lifecycle Portal went live, the SoftwareONE business has dramatically grown. During that time those 6 countries grew to almost 60 different countries. With this increase in global scale, the complexity of managing separate web applications for each of these countries became increasingly difficult. Also, during that same time, there was a dramatic shift in the marketplace, as mobile websites and mobile applications became the new normal for many organizations, including SoftwareONE and its customers.
It became apparent to SoftwareONE that it was time to upgrade their Lifecycle Portal. Looking at the options available, it was quickly decided that Microsoft Visual Studio 2012 and .NET Framework 4.0 were the answer to many problems the current system was encountering. The decision was made to rewrite the portal using Microsoft's MVC platform, with the new portal referred to as vNext. Here are some of the benefits our combined team realized from choosing Visual Studio 2012:
Fully Mobile The current version of the Lifecycle Portal was designed to be fully mobile. From the beginning, the goal of the application was to future proof the development by ensuring it could meet a variety of mobile endpoints. The mobile views introduced in MVC 4 enabled custom web pages that are viewable on the variety of mobile enabled browsers that SoftwareONE customers are using.
Web Services To meet the requirements of a dynamic, interactive web app, as well as enable native mobile applications such as iOS or Android, it was important for the application to provide data via web services. The controller based implementation within MVC made the ability to have consolidated logic that is used by the razor view engine to create HTML or JSON data used with mobile clients trivial.
Consolidating logic for presentation within a single controller makes long term maintenance simpler. The controller model also enables us to use anonymous classes to "shape" (or limit) the data we are using for various mobile platforms. The ability to easily emit JSON results with the JSON keyword in the controller ensure that both Javascript-based web implementation as well as native mobile applications are all accessing data via the same application path. Contrast this with our previous web forms implementation where we needed to have a separate service implementation and the benefits of choosing MVC for a service based application is readily apparent.
Entity Framework Code First The previous version of the Lifecycle Application Portal relied on Linq To SQL. Due to several factors, including small differences between tables based on business rules in different countries, the Linq To SQL implementation relied on SQL views. This enabled us to abstract away differences in the table structures. However, as time went on, this approach became a hindrance to deploying new version of the portal. Upgrades would require SQL scripts to be deployed to each country. As the country count went from 6 to over 30, this became quite a time commitment during the deploy process. Second, because of changes to the underlying data structure, changes would have to happen off hours, but with the application running for customers across the globe, there were no off hours!
Entity Framework Code First became a great solution to remedy the problem. With Code First, all of the differences between the databases could easily be handled by not including extra fields within our data model. The flexibility that the fluent API provides also enabled us to add a specific column to our model. Further, by adding a new field to two places within our application tiers, it was immediately available for our Razor views. These Code First features made the cumbersome process of running 30 SQL scripts a much welcomed thing of the past. We love the flexibility that Code First allows!
Claims Authentication Due to the growth of SoftwareONE's customer base as well as the need to be fully mobile, SharePoint 2010 was not the optimal solution for the vNext portal. However, SharePoint is still the premier collaboration platform for SoftwareONE and its customers. SoftwareONE is consistently focused on their customers and providing a top notch user experience. With Windows Identity Foundation (WIF) and the claims aware application stack in both MVC and SharePoint, users could log into one of the applications and have access to both of them with minimal friction. As SoftwareONE makes more tools and websites available to help their customers, the claims based authentication provided by WIF will enable a seamless logon experience.
Multi Threading Like SoftwareONE, its customers are doing operations in multiple countries around the globe. These customers have licensing needs that cross the globe too. In the previous version of the portal, accessing this information meant logging onto each country separately. With the introduction of new threading capabilities in the .NET framework, we were able to bring this data together. Within our application's service layer, each service call that retrieves data is using the new Task library to spin off a database request to each of the SoftwareONE country databases a user has access to. We are then able to combine these disparate data sources into a single result for display within the user interface. This provides SoftwareONE customers a holistic view to their data, no matter how many countries they have licensing concerns in or which database was the source for the data.
JavaScript Like most modern applications, the use of JavaScript and jQuery was used in vNext to create a responsive application. Once the page was loaded, asynchronous calls were made to web services to retrieve data and bind it to the page. With so much reliance on JavaScript and CSS, the new tooling support within Visual Studio 2012 for JavaScript as well as the page inspector tool, helped the developers realize a much more efficient development experience. Many hours were saved in the development phase by having access to these productivity tools.
Team Foundation Server With a development team featuring members in both Switzerland and the United States, code collaboration tools were imperative. Team Foundation Server (TFS) 2010 enabled developers to work on code as well as ensure that each developer's code compiled upon check in. With a large team and many check-ins, knowing as soon as possible that the code was not compiling was very valuable and saved time. Also, the enhanced merge capabilities in TFS allowed people who were working on disparate parts to each have the code checked out, and then merge back in the code of multiple developers without issue.
TFS and visual studio have great testing tools. The development team used Unit Tests to ensure there were no unexpected logic issues introduced with code check-ins. Integrations tests were also run against the database each evening, to ensure code quality and expected results. This was an immense time saver in identifying issues early.
With development teams in different parts of the globe as well as separated by 7 hours, tools provided by TFS ensured quality as well as enabled everyone to focus on doing their work.
SoftwareONE's Lifecycle portal has been rewritten from a SharePoint 2007 application to the MVC based vNext portal and separate SharePoint 2010 collaboration platform. This rewrite takes advantage of many of the tools available in Visual Studio 2012 and the .NET Framework 4. Whereas the previous platform would have required spinning up a new web application, configuring it and running a 40,000 line SQL script to create specific views, we are now in a position to add a few lines to a config file and some SQL permissions and we are deployed to a new country instantly. Even more important, SoftwareONE is positioned for the next five years of growth in our rapidly changing industry, as they now have a dynamic platform that will enable their users across the globe to access their licensing information, whether it is at their desktop, on their mobile phone or using Windows 8.
To see the SoftwareONE Lifecycle Portal in action, check out this video on You Tube.
It has been a great experience being a small part of SoftwareONE as they have become globally positioned as one of the top license resellers over the last five years. We are looking forward to another rewarding five years!