Wednesday, November 13, 2019

Engineering Insights: WPF Application Optimizes and Eases Delivery



Business Scenario

As a part of support services, our client provides customers with troubleshooting services and the ability to proactively check the health of software installed on their system.

To use the platform, users traditionally had to perform the following steps:

1. Download and install software drivers on one or more data collection machines.
2. Run PowerShell commands to set up the software.
3. Run PowerShell commands with over ten parameters to configure the health check.
4. Run PowerShell commands to start the health check.
5. Run PowerShell commands to stop the health check.

Even after completing the steps, users did not know whether the health check successfully completed. The actual execution of the health check required several hours.

Key Challenges:

Our client faced three key challenges:

1. Downloading and installing the drivers and scripts and configuring and running the health check required significant time. As a result, many users abandoned the health check and did not complete the process.
2. The client's engineering team often needed to support their customers through the setup, configuration, and execution steps. As a result, the engineering team could not always focus on building new features and improving the platform. 
3. Users frequently created support tickets after following incorrect steps for the setup. The high number of support tickets led to significant support costs. 

Solution

Our client wanted to help customers by providing an automated method to configure the health check software. They needed an application to guide customers through the prerequisites, setup, configuration, and execution steps.

To address our client’s challenges, we needed to understand our client’s customers’ obstacles. We shadowed the engineering team and identified five common challenges.

1. Customer machines often did not possess the prerequisites necessary for running certain health checks. 
2. Customer machines sometimes contained policies that interfered with health check execution.
3. Customers often did not provide the parameters required for health checks for specific products.
4. Customers often entered credentials in PowerShell commands incorrectly.
5. Customers struggled to know whether they successfully completed the health check.

Armed with this knowledge, we developed an easy to use Windows Presentation Foundation (WPF) application that simplified customer experience considerably. This decreased the amount of effort required of customers. The WPF application resulted in a seamless end-user experience. 

Key Highlights:

1. Our application provides a one-click installation solution, removing the need for multiple PowerShell steps.
2. Our application provides clearly named menu options and buttons for users to evaluate and install all prerequisites and necessary drivers. Our application also allows users to enable and disable relevant policies and other settings. 
3. Our application allows users to specify all parameters, providing a customized install experience.
4. To simplify the health check, we separated the setup process into stages and visualized the stages with various colors to signify success, failure, or progress.
5. Our application validates all user inputs, identifies mistakes and invalid values, and assists users with troubleshooting using tooltips.
6. After users complete the health check, our application performs several tests and provides a confirmation of successful setup. If the setup is unsuccessful, the application provides a list of issues encountered, along with documentation for correction.
7. Our application also provides users with the ability to set up multiple health checks.


Business Outcomes:

The application we developed is available for download on our client’s website. Our client received many accolades for the application from their engineering teams, support teams, and customer-facing community. The application resulted in increased goodwill and efficiency for both our client and their customers.

1. Over ten percent of customers downloaded and used the application within a week of launch.
2. Application downloads and usage continue to increase.
3. Platform usage increased, and the completion percentage of health checks improved.
4. Reduced the number of support requests. 

Thursday, October 3, 2019

Data Dictionary for Dynamics 365



Business Scenario

Dynamics 365 is a cloud-based business applications platform. It combines enterprise resource planning (ERP) and customer relationship management (CRM) components with productivity applications and artificial intelligence (AI) features. Out of the box, Dynamics 365 offers diverse tools, but complex business environments often require custom components. These components, called solutions, enable businesses to customize and expand Dynamics 365 features to meet specific business needs.

Each solution is deployed as a single zip file. The zip file contains all the objects (entities, workflows, processes, roles, etc.) present in the environment. The file includes both pre-existing objects and objects that are newly added as part of a current development cycle.

We recently launched a Dynamics 365 implementation for a large software company. The project contains more than 200 entities and several processes and workflows associated with each entity. In Dynamics 365, entities are used to model and manage business data for Customer Engagement apps.

The software company’s Dynamics 365 implementation is still evolving. Sprint-over-sprint we are adding new features and incorporating change requests. These changes include adding new entities or updating or deleting existing entities and their attributes (e.g., field name changes, character length changes, or adding new workflows).

When solutions in large Dynamics 365 projects (such as the project detailed above) are updated, team members must track the changes. Tracking changes allows:

1. The internal team to review and monitor changes before deploying to production.
2. Administrators of downstream systems to anticipate changes that may affect their ETL (Extract-Truncate-Load) jobs.
3. Devs to collaborate on solution updating efforts.

Dynamics 365 does not maintain a subversion of a solution, which would help identify what changed in an updated release. Due to the lack of subversions, it becomes difficult to highlight release over release changes and share them with the larger audience.

We needed to develop a way to keep track of solution changes in a Dynamics 365 environment across multiple releases.

How We Did It: The Technical Implementation

We created a utility called Data Dictionary that accepts two Dynamics 365 solution files as inputs. Data Dictionary compares two versions of a solution (previous and current version). The utility processes the solution files and generates an output in the form of three Excel files. Figure 1 shows Data Dictionary’s comparison flow.

Figure 1: Utility comparison flow diagram

Excel Output Files:

1. Excel file (previous version) - Provides schema of the previously deployed solution.
2. Excel file (current version) - Provides schema of the current solution. This includes the objects that were there in the previous version and those introduced in the current version.
3. Excel file (delta) – This file is similar to the Excel file (current version) but with all the changes highlighted to clearly identify what has been added, modified, or removed from the system in the current version.

Key Highlights:

1. Helps the internal team review (at a glance) what has changed in a solution before deploying the solution to production.
2. Communicates changes between releases to downstream systems. Knowing the changes allows downstream users to update their ETL (Extract-Truncate-Load) jobs, ensuring that they report on the latest data points.
3. Improves dev team collaboration by allowing them to quickly spot differences between two solutions versions.


Business Outcomes:

Data Dictionary saved significant manual effort in identifying and communicating changes in solutions releases. We run Data Dictionary after each major Dynamics 365 deployment and share the output files with key stakeholders.

Monday, September 23, 2019

Engineering Insights: Azure Search-based Web Solution



Business Scenario

A multinational technology corporation offers numerous online learning courses for its premium customers. The customers’ employees rely on the courses to improve their skills, helping them remain competitive in today’s business environment.

The corporation’s previous course management system was cumbersome. The system did not allow employees to quickly search among the thousands of learning courses. Users could only find courses if they knew exactly what they were looking for. Employees needed to be able to browse and filter the catalog and select an offering for their needs. They also expected fast answers. Every millisecond matters!

The corporation needed a scalable solution for future growth.

What customers needed with better search:

1. Better browsing capability – Our client’s employees had difficulty narrowing down courses that fit their expertise level.
2. Enhanced search – Our client’s employees could not search within the course’s content, such as the description or video subtitles.
3. Improved relevance – Our client’s search results did not show the results most relevant to the search term.
4. Rapid free-form text search – Our client needed the ability to support fuzzy search based on terms that have similar construction.

How We Did It: The Technical Implementation

To generate improved search results, we built an entire architecture powered by Azure Search. The corporation’s course details are stored in Azure Cosmos database. Using Change Data Capture, we achieved incremental indexing.

With this architecture, we implemented native search capabilities, faceted filtering, sorting, auto-complete, and pagination in a robust and scalable manner.

By leveraging scoring profiles, we developed a custom solution to improve search ranking and relevance.

Key Highlights:

1. Reduced page load time by 90%.
2. Improved user experience with auto-complete, hit highlighting, sorting, and paging.
3. Created scalable architecture.
4. Incorporated linguistic analysis.
5. Implemented server-side encryption at rest.


Business Outcomes:

With the new Azure Search-powered architecture, courses are no longer undiscoverable. Users are very satisfied with the improved speed and accuracy of results. Users can refine results by technology, video duration, and difficulty level using the rich filtering system. The filtering experience has improved customer confidence, encouraging more users to actively complete the courses--ultimately boosting our clients’ customers’ technical competence.

Monday, August 26, 2019

Unsupervised Machine Learning Model Improves Customer Feedback Analysis



Business Scenario

Our client showcases a variety of technology products in their retail stores to customers. Product demonstrations highlight product capabilities to drive sales. Following product demonstrations, the voice of customer team collects customer feedback. Customer feedback provides a better understanding of how improved product demonstrations improve sales.

To capture customer feedback, the voice of customer team reviewed forms, written comments, reviews, ratings, and surveys using a supervised machine learning model. The team trained the supervised machine learning model using textual data from other teams they worked with. But the supervised machine learning model approach struggled whenever the voice of customer team wanted to add a new dataset. Because the model was based off the provided training materials, the model could not identify material themes that did not originate from the training materials. As a result, each time the voice of customer team worked with a new dataset, the learning model required retraining. To minimize training costs and improve scalability, we needed to create an unsupervised machine learning model.

How We Did It: The Technical Implementation


Figure 1: Unsupervised machine learning model
To create the unsupervised learning model, we researched three topics:

   Theme identification using supervised models
   Term frequency-inverse document frequency (TFIDF) methodologies
   Key phrase extraction

At the beginning of the project, we conducted research to determine how to implement an unsupervised machine learning approach for theme identification. Prior to the completion of our project, no such research had ever been conducted. We started our research with supervised models, even though our solution needed to eliminate manual theme identification. Studying supervised models enabled our team to better understand how human heuristics guided machine learning. To better understand how to track the statistical significance of themes, we studied TFIDF methodologies. By studying supervised model results and TFIDF methodologies, we eventually discovered the key insight we used to structure our unsupervised machine learning model: We could extract key phrases in English using a recurring pattern: (Adj/verb)*(Noun/Proper noun). After discovering the pattern, we worked on several proofs of concept using the pke and rake libraries and Microsoft’s Cognitive Services.
   
The original implementation of the project involved extracting key phrases from customer reviews and feedback comments. First, we divided feedback into different sentences using full stops and spaces. Then, we used several text preprocessing techniques to extract the core message without contractions, punctuation, stop words, conjugations, or spelling mistakes. We then employed text processing techniques to extract the key phrases. Key phrases were identified using nouns and adjectives. (In product feedback, comments typically used the product as the noun and the characteristics of the product as adjectives.) We then used the Word2Vec model to convert the key phrases to vectors. The resulting vectors were then passed through an unsupervised learning engine to cluster the key phrases in order to decipher feedback themes. Each cluster helped identify feedback themes. Finally, we performed a T-test to identify the significant themes. Our approach enabled us to identify newly emerging feedback themes without requiring model retraining.

We fed data to our machine learning model through Azure Databricks. Azure Databricks offered our client the speed and flexibility they were looking for. Azure Databricks allows users to run robust analytics algorithms and drive real-time business insights. Azure Databricks also offers one-click, autoscaling deployment that ensures enterprise users’ scaling and security requirements are suitably met. Azure Databricks also features optimized connectors, which we used to run Microsoft Cognitive Service APIs. These APIs allowed our team to quickly implement entity recognition and key phrase extraction. Because the Azure Databricks solution was managed from a single notebook, our teams could collaborate easily across office locations.

Business Outcomes:

The completed unsupervised machine learning model enabled the voice of customer team to scale the solution to new datasets immediately. Azure Databricks further enhanced scalability and improved deployment speed. With the finished solution, our client can identify themes not contained within training materials and receive significant themes without delay. The completed solution also reduced the manual effort required to identify and map themes.

Thursday, August 22, 2019

Infographic: 14 Best Practices for Power BI


Wednesday, August 14, 2019

Integrated Dynamics 365 Workflow Reduces Manual Effort and Expedites Communication



Business Scenario

Our client displays a variety of technology products to customers in their retail stores. Product demonstrations showcase product capabilities and drive sales. Following product demonstrations, the voice of customer team collects customer feedback. Customer feedback provides insights into how to improve product demonstrations. Improved product demonstrations, in turn, lead to increased sales.

Before we implemented our solution, retail customers provided feedback via phone calls. Our client used a SharePoint system to capture product demonstration feedback. But collecting feedback over the phone and using SharePoint presented a significant challenge. Our client conducted product demonstrations for two different teams without a standardized workflow. The first team, the customer success team, ran product demonstrations to determine how existing customers could use products and offerings. The second team, the enterprise business team, attended product demonstrations to better understand products and capabilities. Both teams needed to coordinate with retail store associates and customers to plan product demonstrations.

To set up product demonstrations, customer success teams and enterprise business teams independently called store associates. No centralized system existed for teams to plan product demonstrations and avoid double bookings. After product demonstrations, customer success team members or enterprise business team members called customers to receive feedback. Because the feedback system was not automated, eliciting customer feedback often required great effort. After receiving feedback, team members manually entered the feedback into SharePoint, which required significant time. Team members could then log in to see feedback for all product demonstrations. Our solution needed to streamline our client’s workflow. A streamlined workflow would deliver two benefits:

   Reduce manual effort
   Expedite communication

How We Did It: The Technical Implementation

Recently, Microsoft released a version of Forms Pro allowing Forms to integrate with Dynamics 365 and Microsoft Flow.  We were among the first to implement a solution leveraging integration support between Microsoft Forms Pro, Microsoft Flow, and Dynamics 365. We used the integration support to standardize retail store customer feedback.

We built the pipeline using the Power Platform and Forms Pro and stored customer feedback data in Dynamics 365. We created a Microsoft Flow architecture using the Power Platform. We used PowerApps to capture the details of the planned product demonstrations, generate invitations for the demo events, and capture the feedback in Dynamics 365. Using Microsoft Flow and Forms, we generated the documents to capture the feedback from the demo sessions. Responses from Microsoft Forms route to Dynamics 365, where they are stored under the respective event, customer, or sales leader. We used Microsoft Flow, which is integrated with Azure Active Directory, to create the product demonstration requests.

The completed workflow uses no code. The workflow leverages Microsoft Flow and Forms's service-based back end technology. As a result, the platform is easy to scale and maintain. Workflows are updated by editing or adding templates, avoiding complex code changes. Using the platform, sales leaders create requests for in-store product demonstrations. Store managers then either approve, modify, or reject the request. Forms Pro also enables store managers to share customer feedback. In addition, because customer feedback from Forms Pro is linked to the originating event in Dynamics 365, sales efforts and outcomes are directly attributed to customer feedback.

Business Outcomes:

   Reduction of manual effort
   Expedited communication

The integrated solution using Microsoft Forms Pro, Microsoft Flow, and Dynamics 365 improved our client’s workflow at two junctures. First, by changing product demonstration scheduling to an electronic process, we reduced the time needed to schedule product demonstrations. Second, by automating the creation and entry of surveys, we reduced the amount of effort needed to input survey data and improved communication speed. The completed integrated workflow also connected sales outcomes to customer feedback from product demonstrations. 

Tuesday, August 13, 2019

MAQ Software Releases Award Winning XPRIZE Apps for the Indian Subcontinent in English, Hindi, Urdu, and Bangla


Available in English, Hindi, Urdu, and Bangla, the free Android apps engage children with literacy and numeracy lessons

August 16, 2019, Redmond, Washington: Advancing foundational literacy and numeracy skills, MAQ Software today launched Pehla School, Pehla Class, and Simple Class based on three Global Learning XPRIZE award-winning apps. The highly engaging apps, available for Android tablets and phones, empower children ages 3-10 to improve reading, writing, and math skills.

The apps are available immediately on Google Play:

Pehla School (based on Kitkit School - Global Learning XPRIZE co-winner)
   Pehla School (bit.ly/pehlaschoolenglish)
   पहला स्कूल - Pehla School (bit.ly/pehlaschoolhindi)
   Pehla School - پہلا اسکول (bit.ly/pehlaschoolurdu)
   পহেলা স্কুল - Pehla School (bit.ly/pehlaschoolbangla)

Pehla Class (based on onecourse - Global Learning XPRIZE co-winner)
   Pehla Class (bit.ly/pehlaclassenglish)
   पहला क्लास - Pehla Class (bit.ly/pehlaclasshindi)

Simple Class (based on Chimple - Global Learning XPRIZE finalist)
   Simple Class (bit.ly/simpleclassenglish)
   सिम्पल क्लास - Simple Class (bit.ly/chimplehindi)

Our Mission Statement

Over 200 million students in the Indian subcontinent are underserved. While over 95% of children in India are enrolled in schools, many students face significant learning gaps. According to the ASER 2018 report, only half of Class 5 children in India can read at Class 2 level. Only 28% of Class 5 children can do basic Class 2 arithmetic.

With low cost internet access and advances in hardware and software, learning apps are an opportunity to improve learning outcomes worldwide. Google showcased the power of new technology, using advances in Natural Language Processing (NLP) for speech recognition in its free Bolo with Google application. Bolo with Google improves literacy skills in Hindi and English and has been downloaded more than 500,000 times from Google Play.

Based on the open source software developed by the winning teams of $15 million Global Learning XPRIZE, MAQ Software expands free learning app offerings for the Indian subcontinent. MAQ Software optimized the suite of XPRIZE-based learning apps for large scale deployments. Using advances in text to speech implementation in Android phones, MAQ Software will continue to improve the suite of learning apps to utilize new versions of Android-based software and hardware.

By supplementing existing digital tools, school systems and non-profits can improve learning outcomes dramatically through these apps. MAQ Software is providing technical expertise and grants to enable the non-profits to advance their mission.

About the Global Learning XPRIZE

In 2014, the Global Learning XPRIZE launched a $15 million education technology prize. Funded by Elon Musk, the Global Learning XPRIZE challenged participants to develop solutions that enable children to learn reading, writing, and arithmetic within 15 months. Out of the initial pool of nearly 200 applicants, XPRIZE selected five finalists (Kitkit School, onebillion, Chimple, CCI, and RoboTutor) to receive $1 million each.

In field testing, the apps generated remarkable learning outcomes. For example, students who used Kitkit School showed an average reading test improvement of 30–45% and an average math test improvement of 14–37%. Students who did not use the app showed much lower or no change in their test scores.

The Global Learning XPRIZE winning apps help kids: 

Learn on their own: Kids learn reading and math skills through thousands of fun activities.

Personalize instruction: Kids can choose from a variety of reading and math lessons. The apps include hundreds of literacy sessions, math sessions, multi-level books, and videos.

Read without distractions: All the apps work offline without ads, allowing children to focus on the current lesson.

Discover many topics: The apps cover a variety of engaging topics, including animals, science, friendship, and role models.

Showcase creativity: The apps include virtual instruments, a blackboard to practice writing, and drawing and coloring tools to create unique artwork.

About MAQ Software

MAQ Software delivers innovative software solutions to Fortune 500 companies. Using data analytics, cloud technology, and artificial intelligence, we accelerate software initiatives that enable our customers to transform their industries. We help our clients build stronger customer relationships, drive sales, identify new customers, and analyze marketing results from our three state-of-the-art engineering centers located in Washington state and India.