Human Resources
From Outdated WordPress to Global Web Platform: Assessment Training Case Study

Overview
Assessment-Training.com is a global platform that helps prepare candidates for job assessments. The challenge was moving from an outdated and unresponsive WordPress site to a newly designed global web platform tailored for Assessment Training customers.
The old website presented many issues with:
Usability - outdated and unresponsive design
Security - missing SSL certificates, attacks on WordPress sites
SEO issues
Performance issues under high load
Difficult content management (tests, translations, images, packages)
Growth - Could not succeed in scaling their business
Challenges
Develop a core platform and content architecture- the new platform had to support the multi-lingual solution and all content translations
Develop a modern web platform, available 24/7 from anywhere in the world -it needs to be usable from any device or screen size.
The new web platform must be secure, flexible, and scalable to meet spikes in demand
Develop a centralized administrative application - give test managers and translators more control over day-to-day operations and improve efficiency.
Data migration from old WordPress installations - we needed to migrate all customer data, including login credentials, purchases, and subscriptions
Centralization and unification - we had to centralize and unify assessment test content for all languages. The old platform used independent WordPress installation with its own databases per language.
Solutions
We unified our three main disciplines - design, development, and project management. This way, we created a cross-functional unit that covered all the bases. Using the agile model, we worked in two-week sprints.
To keep up with global growth and deliver the best possible online experience, RUBICON developed a new platform. We used Microsoft technologies and PaaS services in the cloud on Microsoft Azure.
We leveraged Umbraco as the marketing part of the website. The Assessment Training staff could easily and quickly make changes to website content. Umbraco was a great choice because it was easy to integrate with the core systems the project required. They could cohabitate in the same .NET application together. With Umbraco, Assessment-Training can easily launch a new language and market-specific websites.
Software Architecture
Emerging architecture
Today’s view of the architecture process is that teams should start developing as soon as possible. If they do, they get early feedback and improve the software based on the real code. This means moving fast. You need to accept and embrace change, deliver value early, and welcome feedback.
Emerging architecture is a process that results from the incremental building of software. After the initial startup, the project goes through a series of iterations that include design, coding, and testing. Every iteration produces a deliverable but incomplete version of the system.
Clean Architecture
Current thinking on architecture assumes that your design will evolve over time. You cannot know everything you need to know upfront to fully architect your system. You should architect and design software solutions with evolution in mind. This way, you will be able to adapt to requirements that are not fully known at the start of the design process. Following common architectural principles leads to decisions that result in clean, maintainable applications.
To reach our goals and with maintainability in mind, after a couple of iterations, we settled on Clean Architecture. The term Clean architecture applies to applications built using Domain-Driven Design (DDD) principles. Domain-Driven Design (DDD) is a proven approach to writing software, which deals with complex business requirements.
Clean architecture puts business logic and the application model at the center of the application. Instead of having business logic depend on data access or other infrastructure concerns, this dependency inverts. Infrastructure and implementation details depend on the Application Core.
We achieve this by defining abstractions, or interfaces, in the Application Core. They are then implemented by types defined in the Infrastructure layer. A common way of visualizing this architecture is to use a series of concentric circles, like an onion.

Solution (Infrastructure) Architecture: Scalable Umbraco CMS web app
This architecture represents the Umbraco CMS web app. It is optimal for high-traffic sites and configured to scale. It uses two web apps: one for our front-end app and the other for Umbraco's back office. They are deployed in a single region with autoscaling enabled. With scaling enabled, we easily address high-traffic periods.

DevOps workflow
“DevOps” is the integration of development and operation tasks to develop software efficiently. This workflow enables us to develop an app, deploy it, and learn from production. We change it in response to what we learned and repeat the cycle quickly and reliably.
The three patterns that enable a successful DevOps workflow:
Automate everything
Source control
Continuous integration and delivery
Automating development tasks is essential for cloud projects. It’s an important topic because the manual process is slow and prone to error. Automating as many of them as possible helps us set up a fast, reliable, and agile workflow.
Source control is essential for almost all development projects, not just team environments. How you implement branches in your repository affects your ability to develop new features and fix issues in production. The branching strategy we used derives from Gitflow Workflow.
The master branch always matches the code in production. The development branch is where we implement new features. When we need to resolve a critical bug in production, a hotfix branch branches off the master branch.
Whenever a developer checks the code into the source repository, after the approval of a pull request, a build is automatically triggered. Continuous delivery takes this further. After the build and automated tests are successful, the application is automatically deployed to an environment where we do more in-depth testing.
For the production environment, we use the Azure App Service deployment slots feature. First, we deploy the application to the staging slot. Then we validate the app changes in a staging deployment slot before swapping it with the production slot.
Deploying an app to a slot first ensures we warm up all instances of the slot before swapping them into production. This eliminates downtime when you deploy your app. The traffic redirection is seamless. No requests are dropped as a result of swap operations. We successfully deploy many times a day to a live environment and even during high-traffic periods.
This architecture shows how we configured the infrastructure for the development and production environments of a standard PaaS-style system.

How it Works
We built the new Assessment Training website around Umbraco v7, which is integrated with the core system and database. We followed the standard patterns and best practices to develop this Umbraco site. We chose the platform-as-a-service (PaaS) model by Microsoft Azure to host our applications. To get a scalable app and good performance, we had to fine-tune and optimize the Umbraco website for performance. Another important task was to set up and configure a scalable solution for Azure Web Apps.
A good DevOps workflow makes life easier. Especially when we work with multiple working environments, like development and production. Now we can work and test on the development environment. Then we can deploy our changes to live without any issues or worries.
A management (administrative) application is a centralized management system for the core database with all core content. Its main uses are:
Tests management and translations
Package (products) management
Customer management
Assessment Training personnel, test managers, and translators use the management application in their day-to-day operations.
Results
The project was very challenging. Our agile approach, core platform architecture, and Umbraco flexibility enabled us to react to changing requirements. Each market launched as planned:
Launched a new website and core platform for the global market in Phase 1 (within 7 months)
Launched and migrated 2 priority market sites in Phase 2 (within 2 months)
Migrated more than 23,000 customers with credentials and subscription data
Created more than 1700 assessment tests in the core database
Launched more than 50 new products
SEO improvements
Applied SEO best practices for multilingual sites: changed domains and URL structure format
What Assessment-Training Gained from the New System
The previous CMS was clunky and difficult to manage. The new Umbraco website tightly integrates the core system with the rest of the website content. That makes everything both easier to manage and easier to access.
We integrated analytics tools: Google Analytics, Hotjar, and Intercom. Thanks to this, Assessment Training gained key metrics related to tracking user behavior. This way, we can find usability issues and increase our growth.
Assessment Training staff can now manage context and upload new assessment tests faster. Through these improvements, we can upload a larger volume of content with greater frequency. This led to an upturn in the volume of unique visitors and a decreased bounce rate.
The new website is much more responsive and works on all platforms. It is also much more readable and easier to understand.
Technology stack
ASP .NET MVC, Umbraco CMS, AngularJS, Azure App Service, Azure SQL Database, Azure Blob Storage, Azure Application Insights, Redis Cache, Visual Studio Team Services, Git, Atlassian Jira, and Bitbucket


