top of page

Device Management

.NET Architect and .NET Developer 2021 - 2023

Overview

A cargo and passenger transportation system needs to have information about the current transport’s geo position, current track, history of its track, speed mode, any accidents (if they have occurred), the rules of carriage, checks to determine whether the transport has arrived to intermediate or final destination and on time, and many other details. Therefore, every transport has a tracking device that sends information about it.

device-management.jpg

Idiosyncrasies

There are two external sources (Verizon at https://www.verizonconnect.com and SureMdm at https://www.42gears.com/products/mobile-device-management ) that offer their individual APIs with their functionalities, but to obtain all the necessary information we have to use both systems.

Verizon allows us to get traffic date of usage by day, start or resume devices, mark devices as deleted, determinate the device model (different models has different capabilities: such as some devices lacking geo-coordinate or IMEI identification), track device history, its coordinates and offer other functionalities

SureMdm does not allow saving statuses of devices (such as resume, active, deleted…), but it allows retrieving data usage of device by month, determining which applications are used of them, identifying the carrier associated with each device, and offering other functionalities.

Goals

Synchronize and manage devices across three systems (local, Verizon, and SureMDM).

Goal-Setting.jpg

Tasks that I, as a developer and project architect, have faced:

A device may exist in both systems or only in one. IMEI (as unique identifier) may be missing for device or unspecified (especially in Verizon) posing a challenge in identifying devices based on other characteristics (such as change history or other attributes), or, in result, there are different devices

Resolving issues stemming from data mismatches (e.g., discrepancies in data for the same device across two systems) and notifying responsible persons if the problem cannot be resolved automatically.

Verizon and SureMdm has unique individual fields, requiring us to extend the data model in our local database to accommodate these fields

The order and mechanism for changing device status. Verizon status changes only via callback API, so, we initiate a request to change the status and wait for a response within a specified timeframe by calling our API method. Following this, we call the SureMDM API to move the device to the appropriate subfolder (as SureMDM does not support statuses directly) and update it in our local database. If any issues occur, we perform a rollback on Verizon / SureMDM, and log the problem for further investigation.

Regularly retrieving data about device usage and its coordinates, updating the local database, matching data from both systems, and creating various charts.

Automating processes to suspend devices for various reasons (such as reaching data limits or overdue device) after analyzing data from both systems. Implementing automatic activation or deletion of devices if necessary, ensuring consistency across all systems involved in the process.

Manually changing the status of devices via our web page or our web API.

Streamlining the loading and synchronization of microservices responsible for retrieving or updating data, and resolving issues related to simultaneous data access.

Generating a variety of reports and notifications (particularly for reaching boundary values during data usage), and developing a web interface and web API for data management (using the local database).

Implementation

Technologies:

  • - .NET Core

  • - Azure SQL

  • - Azure Functions

  • - Entity Framework Core

  • - ASP.NET Core & Web API

The main efforts in implementing this project were focused on optimal design of workflows and numerous background services that perform necessary operations with external resources and local databases, ensuring their consistency and interaction, as well as the ability to rollback if one of the services does not provide the expected response for various reasons.

In the project, Azure Functions are extensively utilized, including Durable Azure Functions, callback functions (based on HTTP requests), and Timer functions.

The local database is designed in DKNF (Domain-Key Normal Form) because the implementation's business logic depends on values obtained from external resources (although in most cases, 4NF would suffice).

Responsibilities

Design Project Architecture: Develop a comprehensive architecture for managing devices received from external sources, ensuring scalability, reliability, and integration with external APIs

Code Quality: Produce clean, efficient, and maintainable code in line with project specifications and best practices, using SOLID, GRASP, and other development patterns

Backend Development: Lead the development of the backend services using .NET Core, EF Core, and Azure Functions, ensuring robust and efficient code delivery

Testing and Debugging: Conduct thorough testing, debugging, and troubleshooting to identify and resolve issues in the codebase, ensuring high-quality and reliable software

Integration: Integrate backend services with other parts of the application, including front-end interfaces and external systems

Database Management: Manage and optimize data storage and retrieval using Azure SQL, ensuring data integrity and performance

API Integration: Implement and manage integration with external APIs from Verizon and SureMdm to retrieve and synchronize device data, including usage statistics, device statuses, application details and other relevant information

Synchronization and Management: Develop solutions to synchronize and manage devices across the local system, Verizon, and SureMdm, ensuring accurate and up-to-date information across all platforms

Documentation: Create and maintain technical documentation for backend services, API integrations, UML diagramms and system architecture to support ongoing maintenance and future development

bottom of page