<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Anirban Bhaumik</title>
    <description>The latest articles on DEV Community by Anirban Bhaumik (@ashmeetsdad).</description>
    <link>https://dev.to/ashmeetsdad</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F911194%2F03b8133e-412e-40e4-af2c-b7164dadff02.jpg</url>
      <title>DEV Community: Anirban Bhaumik</title>
      <link>https://dev.to/ashmeetsdad</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ashmeetsdad"/>
    <language>en</language>
    <item>
      <title>Preparing for a Meeting</title>
      <dc:creator>Anirban Bhaumik</dc:creator>
      <pubDate>Sat, 20 Aug 2022 16:48:41 +0000</pubDate>
      <link>https://dev.to/ashmeetsdad/preparing-for-a-meeting-2al</link>
      <guid>https://dev.to/ashmeetsdad/preparing-for-a-meeting-2al</guid>
      <description>&lt;p&gt;The next time you visit a sports event watch what the participant does before the game begins. If its a football match, chances are the teams will play one-touch between themselves, a track and field event — the athletes will stretch, a music concert — the pianist will play some light pieces, the Ghazal singer will sing an alaap and so on. Every performance be it sport or music requires a process of preparation and every high performing athlete or musician internalises it as part of their warmup.&lt;/p&gt;

&lt;p&gt;A Business meeting is a performance and you are the actor, athlete, singer and conductor of that performance! On your next performance follow these principles when preparing:&lt;/p&gt;

&lt;h2&gt;
  
  
  Connection
&lt;/h2&gt;

&lt;p&gt;Research the other invitees — LinkedIn, Social Media are two easy ways to find out more. The goal of the research is to find a point of connection, some good starting points are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Shared hometown or university.&lt;/li&gt;
&lt;li&gt;Language.&lt;/li&gt;
&lt;li&gt;Common friends and acquaintances.&lt;/li&gt;
&lt;li&gt;Hobbies or interests — maybe they have a blog post on a particular topic.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Sometimes a negative connection is also a connection; say someone’s hometown is Kolkata — a good connection might just be that you’ve never been to Kolkata and have always wanted to visit during Durga Puja. Make sure that whatever connection you choose is gender and culture appropriate.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pre-Meeting
&lt;/h2&gt;

&lt;p&gt;When you show up at a meeting (whether in-person or virtually) there will always be a time-window when the meeting hasn’t started and the various participants are settling themselves. This window is the perfect time to establish a connection with the other participants — use your digital stalking research and frame the initial small talk. If all else fails there’s always the weather or the latest cricket match.&lt;/p&gt;

&lt;p&gt;The key here is that this doesn’t have to be a life changing conversation — just an opportunity to interact casually without taking time from the meeting itself.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tonality
&lt;/h2&gt;

&lt;p&gt;What kind of meeting will this be — is it adversarial, collegial, collaborative or simply an exploration? Spend some time thinking about the atmospherics of this meeting. Are you going to start out — Boom Boom or will it be casual and relaxed? Setting this tonality up in your mind helps you react to the meeting correctly and ensures that when you speak your tone is appropriate for the goals that you have in mind.&lt;/p&gt;

&lt;h2&gt;
  
  
  Intentions
&lt;/h2&gt;

&lt;p&gt;Ask yourself these questions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What are your desired outcomes?&lt;/li&gt;
&lt;li&gt;What do you want to walk away with?&lt;/li&gt;
&lt;li&gt;How do you want to feel?&lt;/li&gt;
&lt;li&gt;How do you want them to feel?&lt;/li&gt;
&lt;li&gt;What does success look like?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Our intentions define our effectiveness and by being clear on what we want to achieve we create the Meeting Corridor. The Meeting Corridor shows us the end result and every time a meeting veers of course if we are clear about where we want to reach, we will make the necessary course corrections.&lt;/p&gt;

&lt;h2&gt;
  
  
  Opening
&lt;/h2&gt;

&lt;p&gt;What is your opening gambit? If you know that you’ll get the chance to speak first or define the agenda take it! If speaking first decide on the first three lines that will come out of your mouth. Write them down and mug them up!&lt;/p&gt;

&lt;p&gt;A common cold-call tactic that works with mid-level corporate executives is the reluctant seller — talk about everything else except what you are trying to pitch. The intended buyer will bring up the sale and you can simply respond to that.&lt;/p&gt;

&lt;h2&gt;
  
  
  Visualisation &amp;amp; FAQs
&lt;/h2&gt;

&lt;p&gt;Play the meeting in your mind, have some scenarios ready:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How will you react to an undesirable or unforeseen situation? What is your game plan?&lt;/li&gt;
&lt;li&gt;Step in the shoes of the meeting participants and figure out what to give and what to take.&lt;/li&gt;
&lt;li&gt;We all want to be opening batters — and set the target of the game. But sometimes we have to bowl first! If the agenda has already been set and you have to respond to it — make sure that you put in your desired outcome as a response. Bring the meeting back to your desired outcome. Be flexible and adapt to the situation.&lt;/li&gt;
&lt;li&gt;Raavan Ki Naabhi — What is the Meeting Corridor — how will you bring back the meeting to it? Quite often simply repeating the key points is enough — but make sure you have that ready in your mind.&lt;/li&gt;
&lt;li&gt;Kuch to Bech ke Jaayenge — You walked into a sales call and the prospect tells you they’re not buying your product, not now — not ever! Have something ready, get something out of the time and energy you spent preparing and getting to the meeting. Sometimes it pays to go through your agenda even though the prospect is a reluctant buyer.&lt;/li&gt;
&lt;li&gt;Side Stories — Prepare a few conversational asides that establish or embellish your key points, if given a chance bring them out.&lt;/li&gt;
&lt;li&gt;Tangential Questions — We’ve all been to meetings that start in London and reach Tokyo. They usually start when someone comes up with a point or question not in the same universe as the meeting! Figure out how you want to respond to them — do you put them under the carpet, deflect it or have a sarcastic aside ready?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Sportspeople have a saying don’t focus on the results, concentrate on how to perform your skills under pressure and believe that you have the processes in place to improve your performance. Going into a meeting you have no control on whether you’ll get your outcome — but by preparing for it in a structured manner and ensuring that you do this often enough, these principles become automated in your mind and you can be sure that you will win meetings more often than you lose.&lt;/p&gt;

</description>
      <category>career</category>
      <category>productivity</category>
      <category>management</category>
    </item>
    <item>
      <title>Framework for Monitoring Construction Projects at Scale</title>
      <dc:creator>Anirban Bhaumik</dc:creator>
      <pubDate>Sat, 20 Aug 2022 16:45:36 +0000</pubDate>
      <link>https://dev.to/ashmeetsdad/framework-for-monitoring-construction-projects-at-scale-10pb</link>
      <guid>https://dev.to/ashmeetsdad/framework-for-monitoring-construction-projects-at-scale-10pb</guid>
      <description>&lt;h1&gt;
  
  
  Overview
&lt;/h1&gt;

&lt;p&gt;This article is a case study for the design, development and implementation of a Construction Project Management &amp;amp; Monitoring System (PMMS) at a Global Construction Contractor. For the purposes of this article we are naming it &lt;strong&gt;&lt;em&gt;Construction Data Insights&lt;/em&gt;&lt;/strong&gt; (CDI) and will be referring to it as such going forward.&lt;/p&gt;

&lt;h2&gt;
  
  
  The need for CDI
&lt;/h2&gt;

&lt;p&gt;In order to manage the dynamic information flows in the EPC business, the contractor has implemented the following solutions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Candy – for Estimation&lt;/li&gt;
&lt;li&gt;Primavera – for Project planning and Scheduling&lt;/li&gt;
&lt;li&gt;SAP - for Project Execution&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These systems have been functioning independently in their areas of operation, as a result the data from these systems Is not collated and is not useful to business users in providing a holistic view of the Project. &lt;/p&gt;

&lt;p&gt;Further each of these applications provide a solution that is specific to its function thus the information these provide – (e.g. Key Performance Indicators - KPIs) are focused to its domain, for instance:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;SAP provides KPIs related to financial performance – however these are not integrated with the Project Work-breakdown Structure. Thus in a scenario where a financial KPI in SAP is reporting a decrease in profitability it is not easy to determine which activities in the Project WBS are responsible for this.&lt;/li&gt;
&lt;li&gt;Similarly, Primavera provides KPIs related to the Planned Schedule – but these are not correlated to the Actual Execution Schedule and consequently Managers cannot determine project slippage easily and automatically.&lt;/li&gt;
&lt;li&gt;Candy provides the Budget but as it is not integrated with the SAP – comparing the budget with the Actual Cost structure requires manual intervention.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A side effect of this disconnected operation is that while there is a surplus of KPIs available to business users, it is not clearly established which KPI provides true business value.&lt;/p&gt;

&lt;p&gt;In order to augment this Infrastructure a Project Management and Monitoring Analytics platform – &lt;strong&gt;&lt;em&gt;Construction Data Insights&lt;/em&gt;&lt;/strong&gt; has been implemented to make real-time Project Information accessible to the authorized decision-maker and higher management. &lt;/p&gt;

&lt;p&gt;A holistic picture of the Project allows Project Managers, Departmental Heads and Strategic Decision Makers the appropriate levers to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Control Cost.&lt;/li&gt;
&lt;li&gt;Eliminate Project Schedule Slippage.&lt;/li&gt;
&lt;li&gt;Reduce Project Risks by managing unplanned project interruptions.
# Approach
## Implementation Methodology
In order to develop and deploy the solution we used the following methodology:&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;#&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Phase&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Resources&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Deliverables&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;- Define the Scope.&lt;/p&gt;
&lt;p&gt;- Interview Business Users to define the Key Performance Indicators (KPIs).&lt;/p&gt;
&lt;p&gt;- Prepare Sample KPIs and Reports from sample data.&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;Principal Consultant (onsite)&lt;/td&gt;
&lt;td&gt;Sample KPIs and Reports.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;- Understand the existing IT infrastructure.&lt;/p&gt;
&lt;p&gt;- Determine the source of data to calculate the KPIs.&lt;/p&gt;
&lt;p&gt;- Identify Gaps in the Process and Information Architecture.&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;Principal Consultant (onsite) + Technical Team (remote)&lt;/td&gt;
&lt;td&gt;Define KPI &amp;amp; Report calculation process.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;- Implement System.&lt;/p&gt;
&lt;p&gt;- Resolve the Gaps Identified in Step 2&lt;/p&gt;
&lt;p&gt;- Create Data-Warehouse and integrate with a reporting platform.&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;Project Manager + Technical Team (remote)&lt;/td&gt;
&lt;td&gt;Analytics Platform&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;- Review Delivered platform with the End-Users obtain feedback and make necessary changes.&lt;/p&gt;
&lt;p&gt;- Train the end-users.&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;Project Manager (remote)&lt;/td&gt;
&lt;td&gt;User sign-off on platform reports and KPIs.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Phase 1: Scope Definition
&lt;/h3&gt;

&lt;p&gt;A side effect of the disconnected operation of these multiple systems is the lack of clarity of which data provides business value and is useful in decision-making.&lt;/p&gt;

&lt;p&gt;In this phase we followed a process of defining which KPI is required of the business and what is the source for the data used to compute the KPI. &lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;em&gt;Defining Key Performance Indicators&lt;/em&gt;
&lt;/h4&gt;

&lt;p&gt;The KPIs that the system generates and displays was determined through a process of review and analysis. The process followed in order to determine the KPIs that deliver maximum value was:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--BhvvkWre--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hkev66q15021j0jexlvz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--BhvvkWre--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hkev66q15021j0jexlvz.png" alt="Image description" width="590" height="344"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This phase was conducted on-site and took 2 months. At the end of the phase we prepared a list of KPIs that provided business value and also the data necessary to calculate these indicators.&lt;/p&gt;

&lt;h3&gt;
  
  
  Phase 2: Understanding the existing infrastructure, systems and data
&lt;/h3&gt;

&lt;p&gt;Once the KPIs had been defined we started the process of understanding the existing IT infrastructure, deployed applications and how the data that gets collected.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;em&gt;Step 1: Determine source of the data&lt;/em&gt;
&lt;/h4&gt;

&lt;p&gt;The goal of this phase was to determine the source of the data used to calculate the KPIs defined in phase 1. &lt;/p&gt;

&lt;p&gt;For instance, we determined that the EVA (earned value analysis) method is critical to achieving project profitability objectives and we identified the source of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Planned Value:

&lt;ul&gt;
&lt;li&gt;The Project WBS to be extracted from the Primavera Schedule.&lt;/li&gt;
&lt;li&gt;The Estimated Cost to be extracted from Candy.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Actual Cost:

&lt;ul&gt;
&lt;li&gt;The Project WBS extracted to be merged with the execution related data from SAP.
#### &lt;em&gt;Step 2: Mapping data between systems&lt;/em&gt;
Once the sources had been identified the data to be extracted was reconciled with each system. This ensured that data fields in each system are mapped correctly to each other. (e.g. the Project Code in each system should refer to the same data field)
#### &lt;em&gt;Step 3: Identify Gaps in Process and Information Architecture&lt;/em&gt;
In certain cases, we that require additional process functionality be built or the existing system be reconfigured to support the proposed solution.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For instance:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;We changed the Material Requisition Process in SAP to tag the relevant WBS from the drawing to ensure that we correctly identified consumption with the project plan.
#### &lt;em&gt;Step 4: Determine Transformation Rules&lt;/em&gt;
Depending on the data to be transferred we recommended data update frequency and the rules necessary to transform the data from the source to the Data Warehouse.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The Transformation rules ensured that duplicate data was not transferred from the source systems and that any necessary data-cleansing is performed.&lt;/p&gt;

&lt;h3&gt;
  
  
  Phase 3: Implement the System
&lt;/h3&gt;

&lt;p&gt;Once the KPIs and process and information gaps had been identified we built the system to support the solution.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;em&gt;Technical Approach&lt;/em&gt;
&lt;/h4&gt;

&lt;p&gt;We created the following overall architecture for CDI:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s---FDlHUiQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kxbzt1nfvw8aegdgpzdo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---FDlHUiQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kxbzt1nfvw8aegdgpzdo.png" alt="Image description" width="602" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The various enterprise applications – SAP, Primavera, Candy and additional applications (HRIS) were connected to the Data Warehouse (DW) – depending on the application, data will either pulled or pushed into the DW. &lt;/li&gt;
&lt;li&gt;‘&lt;em&gt;TheConnector&lt;/em&gt;’– is a custom application that was developed to manage the integration with the other enterprise applications. The connector layer performed the necessary Extraction, Transformation and Loading into the Data Warehouse. This happens asynchronously at an agreed upon frequency, and does not impact the performance of the existing systems&lt;/li&gt;
&lt;li&gt;Integration with SAP

&lt;ul&gt;
&lt;li&gt;We used the following there approaches to integrate the system with SAP:&lt;/li&gt;
&lt;li&gt;1: Identify the data necessary to be extracted from SAP and create reports using ABAP that generate delimited text files containing the data. These text files are then be loaded into the Data Warehouse. The ABAP report is automatically executed periodically (daily or hourly – depending on the data) and the data would be “pushed” through it. This option was used for high-volume data that does not need real-time synchronization with the data warehouse.&lt;/li&gt;
&lt;li&gt;2: In the connector layer we use a BAPI component to “pull” the data from the SAP instance. This option is used for high-volume data that requires real-time synchronization with the data warehouse.&lt;/li&gt;
&lt;li&gt;3: We developed a few ABAP web services for the required data. This option is suitable for low-volume data that needs to be synchronized in real-time.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Integration with Primavera

&lt;ul&gt;
&lt;li&gt;This was done by using the Primavera API called from a Java application that is part of the Connector Software layer.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Integration with Candy

&lt;ul&gt;
&lt;li&gt;Using the Candy API we exported the data from Candy into Excel files. These were then imported into the TheConnector where the appropriate transformation occurs and then the transformed data is loaded into the Data Warehouse. &lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Data Warehouse (DW)

&lt;ul&gt;
&lt;li&gt;The DW is the single repository of all data extracted and transformed (when necessary) from the various applications.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;&lt;/code&gt;MySQL was used primarily from a cost and licensing perspective.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Reporting layer

&lt;ul&gt;
&lt;li&gt;The reporting (BI) layer generates the dashboards and KPIs to be used, We used Tableau for this.
#### &lt;em&gt;Key functionality of CDI&lt;/em&gt;
CDI will contain the following sub-components &lt;em&gt;(the components described in this section are sample screens/flows and there will be subsequent refinement and changes on these samples)&lt;/em&gt;:
##### Project Portfolio Dashboard
The Project Portfolio Dashboard (PPD) is the central point to the system and offers a global view of essential Key Performance Indicators (KPIs) to all Projects being executed. &lt;strong&gt;A critical need of business users is to find a single place to obtain all Project-specific information&lt;/strong&gt;, the PPD addresses this issue.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--oRoxLNne--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fi4y3coszytaq1ew8xts.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--oRoxLNne--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fi4y3coszytaq1ew8xts.png" alt="Image description" width="647" height="335"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The PPD contains the following main elements:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;List of all projects with Project-specific KPIs for each.&lt;/li&gt;
&lt;li&gt;Drill-down to Project specific information for each project selected from the list of Projects.&lt;/li&gt;
&lt;li&gt;Global KPIs to measure the performance of the portfolio projects as a whole.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Clicking on the Project specific information will allow the user to drill-down to the Project Dashboard. &lt;/p&gt;

&lt;p&gt;Like the PPD the Project Dashboard too provides in one single &lt;strong&gt;screen easy access to a holistic view of the Project related KPIs necessary to monitor Project Performance and take corrective action where necessary&lt;/strong&gt;.&lt;/p&gt;

&lt;h5&gt;
  
  
  Project Dashboard
&lt;/h5&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Zfl_3Y33--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/m0qer0xb1wiriwuxzndb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Zfl_3Y33--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/m0qer0xb1wiriwuxzndb.png" alt="Image description" width="615" height="416"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The Project Dashboard displays KPIs applicable to a specific Project. The key elements of the Project Dashboard are:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Traffic Light Status – Red/Amber/Green

&lt;ol&gt;
&lt;li&gt;Based on Completion, Time Slippage etc. (the exact algorithm for the Traffic Light will be determined during the course of our analysis stage)&lt;/li&gt;
&lt;/ol&gt;


&lt;/li&gt;
&lt;li&gt;High Priority / High Impact Project issues and risks.

&lt;ol&gt;
&lt;li&gt;A list with the top 5 (or some limited #) of high priority and/or high impact issues that will be recorded in the Issue Tracking and Management System.&lt;/li&gt;
&lt;/ol&gt;


&lt;/li&gt;
&lt;li&gt;Various Planning and Tracking Graphs

&lt;ol&gt;
&lt;li&gt;Project S Curve&lt;/li&gt;
&lt;li&gt;Burn-down Charts&lt;/li&gt;
&lt;/ol&gt;


&lt;/li&gt;
&lt;li&gt;Calendar

&lt;ol&gt;
&lt;li&gt;Project Timeline

&lt;ol&gt;
&lt;li&gt;Timeline of Key Project Events – work start, planned finish etc.&lt;/li&gt;
&lt;/ol&gt;


&lt;/li&gt;
&lt;li&gt;Resource Calendar

&lt;ol&gt;
&lt;li&gt;Calendar of when, what resource is required for the Project Execution.&lt;/li&gt;
&lt;/ol&gt;


&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The KPIs in both these dashboards are computed with a reasonable lag (24 hrs or less) from real-time thus allowing decision makers quick and easy access to near real-time Project Information.&lt;/p&gt;

&lt;h5&gt;
  
  
  KPI Thresholds &amp;amp; Alerts
&lt;/h5&gt;

&lt;p&gt;Each of this KPIs also have Thresholds to be built for them. Once the thresholds have been defined a subscription rule can also be created. The subscription rule defines the responsible business users who will be notified once a specific KPI limit has been breached.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;This ensures that business users will stay on top of Project Progress and Performance without having to continuously monitor a report or a dashboard&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;A dashboard to view the alerts triggered is a part of this feature:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--NlxgqKsl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4w0ylbf7z1m2y6569rzm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--NlxgqKsl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4w0ylbf7z1m2y6569rzm.png" alt="Image description" width="602" height="220"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h5&gt;
  
  
  Issue Tracker
&lt;/h5&gt;

&lt;p&gt;&lt;strong&gt;Unplanned Issues will arise throughout a project implementation. In order address these issues and mitigate effects on Project Schedule and Profitability – the issues need to be tracked and speedily resolved&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The Issue Tracker highlights project issues and allows the assignment of issues to individuals to resolve, monitor and track thus fulfilling this need.&lt;/p&gt;

&lt;p&gt;In broad terms the issue management cycle follows this process:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--6uk5HB_s--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7exrd740hwplqiazrrzj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--6uk5HB_s--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7exrd740hwplqiazrrzj.png" alt="Image description" width="576" height="340"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The Issue Dashboard presents all issues that have been reported and provides a quick view of the volume of issues awaiting resolution or resolved.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s---y84UHrO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fjjmqor6ba0j9n4flo6j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---y84UHrO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fjjmqor6ba0j9n4flo6j.png" alt="Image description" width="602" height="318"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h5&gt;
  
  
  Project Cost Report
&lt;/h5&gt;

&lt;p&gt;&lt;strong&gt;In order to control cost – one must drill-down to the project’s activities to determine the budget vs. actual, committed costs and estimate to complete&lt;/strong&gt;. The Project Cost Report or PCR fulfils this need by providing an analysis of the Cost Structure of a Project at all levels of the Work-Breakdown Structure of a Project.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--a1NMmPNl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lalcr6nbaia9iuazu1cz.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--a1NMmPNl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lalcr6nbaia9iuazu1cz.jpeg" alt="Image description" width="564" height="287"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The PCR captures the following key elements of the cost structure:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Original Estimate and Revisions to the Estimate if any.&lt;/li&gt;
&lt;li&gt;Actual Cost incurred.&lt;/li&gt;
&lt;li&gt;Estimate to Complete (a.k.a Cost to Complete)&lt;/li&gt;
&lt;li&gt;Variance of Actual to Budget
##### Project Progress Report
&lt;strong&gt;A critical deficiency of the existing IT implementations is the inability to easily obtain real-time information about the progress of a Project site&lt;/strong&gt;. The Project Progress Report (PPR) captures all the activities at a project site and ensures that real-time information on project site activities are easily accessible to business users.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--zh4wPKw2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/837urav8slugbuajth91.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zh4wPKw2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/837urav8slugbuajth91.png" alt="Image description" width="668" height="218"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--LmzRNR3U--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zq9hoaq8kxessk5b7gtn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--LmzRNR3U--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zq9hoaq8kxessk5b7gtn.png" alt="Image description" width="651" height="226"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The PPR comprises of the following elements:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Work Progress: For each Subcontractor Item as well as client deliverable the Quantity Executed is displayed.&lt;/li&gt;
&lt;li&gt;Material Status: All Material Deliveries, Consumption and Subcontractor utilization is reported.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Plant &amp;amp; Machinery: Machinery requisitions, movement and utilization information is displayed&lt;/p&gt;

&lt;h3&gt;
  
  
  Phase 4: Delivery Methodology
&lt;/h3&gt;

&lt;p&gt;Once the application was ready and tested – the solution was delivered to Business Users for Acceptance and User Training. Additional feedback from the users were alos incorporated into the delivered dashboards and reports. &lt;/p&gt;

&lt;p&gt;In this Phase the steps were:&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;em&gt;Step 1: Conference Room Pilot (CRP) and Acceptance&lt;/em&gt;
&lt;/h4&gt;

&lt;p&gt;We conducted three CRPs. In the first CRP we reviewed each business process and how they reside within the solution. Then each process was demonstrated in the system, for instance we took a transaction in SAP, see how it flows through the system and see how it is displayed in CDI.&lt;/p&gt;

&lt;p&gt;Users completed the task individually and we noted all of the passes and fails of each step and noted any lack of functionality, software bugs or key usability issues. The issues identified in the first CRP were resolved and a second CRP conducted.&lt;/p&gt;

&lt;p&gt;In the second CRP session and third CRP sessions we reviewed the issues identified by the users and reviewed the resolutions making a final pass on all processes and recorded that the issues have been resolved and the system accepted for use.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;em&gt;Step 2: User Training&lt;/em&gt;
&lt;/h4&gt;

&lt;p&gt;We conducted User Training post acceptance in a closed session. &lt;/p&gt;

&lt;p&gt;Appropriate artefacts including User Manuals and Training Videos for users to use the system were also prepared&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;em&gt;Step 3: Go-Live&lt;/em&gt;
&lt;/h4&gt;

&lt;p&gt;Once User Training was completed the system went live. &lt;/p&gt;

&lt;h1&gt;
  
  
  Conclusion
&lt;/h1&gt;

&lt;p&gt;This project was executed and over the last two years during the COVID-19 pandemic provided an excellent tool for management to monitor global construction projects at scale and at a granular level.&lt;/p&gt;

</description>
      <category>analytics</category>
      <category>datascience</category>
      <category>erp</category>
      <category>implementation</category>
    </item>
    <item>
      <title>Filtering data in AWS Quicksight based on User Groups</title>
      <dc:creator>Anirban Bhaumik</dc:creator>
      <pubDate>Sat, 20 Aug 2022 16:11:10 +0000</pubDate>
      <link>https://dev.to/ashmeetsdad/filtering-data-in-aws-quicksight-based-on-user-groups-4a8i</link>
      <guid>https://dev.to/ashmeetsdad/filtering-data-in-aws-quicksight-based-on-user-groups-4a8i</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;AWS Quicksight is a complete data visualization and dashboard creation tool, however when integrating with existing applications it sometimes is necessary to filter data based on the User logging in to AWS Quicksight – ensuring that the dashboard does not inadvertently display data that is to be restricted.&lt;/p&gt;

&lt;p&gt;This note describes an approach we used to filter data in AWS Quicksight for our internal application. The internal application uses SQL Server as the database and we used that to drive the User access information – however the approach described here can be used for other data repositories as well.&lt;/p&gt;

&lt;h2&gt;
  
  
  Data extraction, processing and storage
&lt;/h2&gt;

&lt;p&gt;The data required for visualization and dashboard purposes is extracted from respective tables, processed based on the dashboard requirement and stored in de-normalised form in a database catalog separate from the transaction database of the application. For the rest of the article, we will call this database [ANALYTICS].&lt;/p&gt;

&lt;p&gt;Each user group will have access to slightly different data and the list of usergroups will be stored in the database table [ANALYTICS].dbo.AnalyticsPermissions which should have a groupname and groupid column.&lt;/p&gt;

&lt;h2&gt;
  
  
  From the [ANALYTICS] database to Quicksight
&lt;/h2&gt;

&lt;p&gt;Quicksight allows data to be drawn from SQL Server into SPICE, a temporary storage provided by Quicksight for visualization, so that hits to the DB can be limited.  The data can be refreshed anytime from the [ANALYTICS] database and SPICE will be updated accordingly. &lt;/p&gt;

&lt;p&gt;We scheduled database Jobs in the transaction DB to update the [ANALYTICS] database. And finally the dataset in Quicksight must also be refreshed so that the user always gets the updated data for visualization and analysis.&lt;/p&gt;

&lt;h2&gt;
  
  
  Creating new groups
&lt;/h2&gt;

&lt;p&gt;In order to create a new user group in AWS quicksight we need to use the AWS console tools (AWS CLI – see: &lt;a href="https://aws.amazon.com/cli/"&gt;https://aws.amazon.com/cli/&lt;/a&gt;). Install this on a client machine with access to the AWS infrastructure and run the following command:&lt;/p&gt;

&lt;h1&gt;
  
  
  create a new group
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;aws quicksight create-group --aws-account-id=XXXXXXXX --namespace=default --group-name="MyGroup" --description="MyGroup users" --region="us-east-1"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Replace the account-id with the AWS account id that is to be used to deploy Quicksight and use the AWS region that is appropriate for your usecase.&lt;/p&gt;

&lt;h2&gt;
  
  
  Creating Users on Quicksight
&lt;/h2&gt;

&lt;p&gt;To create a user login to Quicksight with your administrator account &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--x5Y78aNk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1tng1qiv64yfnhvtbrow.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--x5Y78aNk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1tng1qiv64yfnhvtbrow.png" alt="Image description" width="576" height="324"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click on the Manage Quicksight&lt;/p&gt;

&lt;p&gt;Click on Invite Users&lt;/p&gt;

&lt;p&gt;Add the user name eg. &lt;a href="mailto:whoami@changeme.com"&gt;whoami@changeme.com&lt;/a&gt; and click on the + button to add the user.&lt;/p&gt;

&lt;p&gt;Using the AWS CLI on a console run the following command:&lt;/p&gt;

&lt;h1&gt;
  
  
  add a member to a group
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;aws quicksight create-group-membership --aws-account-id=XXXXXXXXX --namespace=default --group-name=MyGroup --member-name="&amp;lt;whoami@changeme.com&amp;gt;" --region="us-east-1"

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To confirm that the user was added run  the following command:&lt;/p&gt;

&lt;h1&gt;
  
  
  describe the group
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;aws quicksight describe-group --aws-account-id=855244721923 --namespace=default --group-name=GEO --region="us-east-1"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Joining the Quicksight Dataset
&lt;/h2&gt;

&lt;p&gt;To ensure that the dataset used to drive the Quicksight dashboard is filtered by the user group, every dataset must be joined with the database table [ANALYTICS].dbo.AnalyticsPermissions so that the groupname field gets added.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--C4d9f9yB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pmfq32zi1fj0rbvc5tmi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--C4d9f9yB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pmfq32zi1fj0rbvc5tmi.png" alt="Image description" width="555" height="313"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Enable the row level security of the dataset (containing data).  Select AnalyticsPermission from the drop down and this establishes a row level security for that dataset with the groupname.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--v3edYP9o--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/g5vhqpvrythpqx54i4sa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--v3edYP9o--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/g5vhqpvrythpqx54i4sa.png" alt="Image description" width="534" height="301"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Login with the newly created user and verify that the data being displayed is filtered for the group.&lt;/p&gt;

</description>
      <category>aws</category>
      <category>analytics</category>
    </item>
    <item>
      <title>Developing an inexpensive Fleet Monitoring System using off the shelf Telematics devices</title>
      <dc:creator>Anirban Bhaumik</dc:creator>
      <pubDate>Sat, 20 Aug 2022 16:06:22 +0000</pubDate>
      <link>https://dev.to/ashmeetsdad/developing-an-inexpensive-fleet-monitoring-system-using-off-the-shelf-telematics-devices-hch</link>
      <guid>https://dev.to/ashmeetsdad/developing-an-inexpensive-fleet-monitoring-system-using-off-the-shelf-telematics-devices-hch</guid>
      <description>&lt;h1&gt;
  
  
  Overview
&lt;/h1&gt;

&lt;p&gt;In speaking with LCV and HGV fleet operators in South Asia and Africa a common request was to suggest a simple, inexpensive fleet monitoring system that would obviate the need to install expensive hardware on their vehicles and pay a recurring subscription fee.&lt;/p&gt;

&lt;p&gt;We created a fleet monitoring system to address this need and made it available to the wider market. The system consisted of the following components:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A stand-alone Web Application, accessible through any web browser allowing the fleet operator to view the status of their vehicles in real-time.&lt;/li&gt;
&lt;li&gt;A telematics device that uses a published protocol to send messages to a server-side component.&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;A server-side component that manages communication with the telematics devices installed on the vehicles.&lt;/p&gt;
&lt;h1&gt;
  
  
  The Web Application
&lt;/h1&gt;

&lt;p&gt;The application has two sub-modules&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;View Fleet&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Reports&lt;/p&gt;
&lt;h2&gt;
  
  
  View Fleet
&lt;/h2&gt;

&lt;p&gt;This module allows user to view the current status of their fleet in real-time.&lt;/p&gt;
&lt;h3&gt;
  
  
  Initial View
&lt;/h3&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rr20QDPq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/n2kjlxie6cv34ykmn26p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rr20QDPq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/n2kjlxie6cv34ykmn26p.png" alt="Image description" width="680" height="285"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This view shows the last positions of the Vehicles overlaid on a Map.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The Map is automatically zoomed in to contain all vehicles for which the position is known,  extra areas not containing vehicles are not be displayed. For instance if all vehicles are in the UK, the map is zoomed in to display the UK ONLY.&lt;/li&gt;
&lt;li&gt;The last position of a vehicle is displayed as a marker (rectangle/box) with RED denoting IGNITION OFF and GREEN denoting IGNITION ON&lt;/li&gt;
&lt;li&gt;The registration number of the Vehicle is displayed in the marker.
### Displaying Vehicle Details&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--PgLNgzP_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ntd7lmozt4av8fnbclv0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--PgLNgzP_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ntd7lmozt4av8fnbclv0.png" alt="Image description" width="624" height="258"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Clicking on the Marker displays an overlay that displays additional information about the Vehicle and the following fields are displayed:

&lt;ul&gt;
&lt;li&gt;Registration Number&lt;/li&gt;
&lt;li&gt;Name of the Driver (if telematics device supports this)&lt;/li&gt;
&lt;li&gt;Last update timestamp&lt;/li&gt;
&lt;li&gt;Speed&lt;/li&gt;
&lt;li&gt;Direction&lt;/li&gt;
&lt;li&gt;Altitude &lt;em&gt;(not available currently)&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;Address of position – &lt;em&gt;from Reverse Geocoding&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;Current Run ID – if integrated with Haulier Enterprise (Link)&lt;/li&gt;
&lt;li&gt;Current Load ID – if integrated with Haulier Lite (Link)&lt;/li&gt;
&lt;li&gt;Show History (Link)&lt;/li&gt;
&lt;li&gt;Show Additional Information (Link)
### Show History
The Show History Link displays the recorded GPS positions of the vehicle as available in the system going back in time overlaid on the map and displayed in a Grid below the map – this functionality allows a user to replay the location history of a particular vehicle and see where it may have been at any point in the past.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;See Below:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--I0E256AI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/no2jcbovpkgqg67r4g1g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--I0E256AI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/no2jcbovpkgqg67r4g1g.png" alt="Image description" width="624" height="256"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The Map shows the GPS positions recorded.&lt;/li&gt;
&lt;li&gt;The bottom part of the screen shows the GPS positions and additional information&lt;/li&gt;
&lt;li&gt;The User may change the date range of the history – in which case the map and the grid will refresh with the GPS positions recorded in the date range.&lt;/li&gt;
&lt;li&gt;The date range is any range upto 7 days.&lt;/li&gt;
&lt;li&gt;Clicking on the Reason column displays the same Additional Information overlay that is displayed on the View Fleet screen.
### Show Additional Information
Clicking on Additional Information changes the screen and replaces the overlay with the Additional Information.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The following information is displayed in the Additional Information popup and is derived from the Telematics device:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Door: OPEN or CLOSED&lt;/li&gt;
&lt;li&gt;Fuel: %age in Tank&lt;/li&gt;
&lt;li&gt;Temp: Engine Temperature in Deg. C&lt;/li&gt;
&lt;li&gt;RPM: Engine RPM&lt;/li&gt;
&lt;li&gt;ACC: ON (or OFF) – Accelerator State&lt;/li&gt;
&lt;li&gt;ALARMS: Overspeed, Service Required, Airbag etc.&lt;/li&gt;
&lt;li&gt;Code: Diagnostic Code if any&lt;/li&gt;
&lt;li&gt;Avg. Fuel: Current Avg. Fuel consumption in kmpl.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--64w7-edK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zdy3xpexvtkidmneelsq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--64w7-edK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zdy3xpexvtkidmneelsq.png" alt="Image description" width="179" height="83"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Reports
&lt;/h2&gt;

&lt;p&gt;The reports module has the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Daily Mileage&lt;/li&gt;
&lt;li&gt;Monthly Mileage&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Daily Mileage
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--i28fHMwO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vnr9hhtje5p1j1tputjz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--i28fHMwO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vnr9hhtje5p1j1tputjz.png" alt="Image description" width="628" height="277"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Parameters

&lt;ul&gt;
&lt;li&gt;Vehicle Registration&lt;/li&gt;
&lt;li&gt;Date Range&lt;/li&gt;
&lt;li&gt;Displays two graphs:&lt;/li&gt;
&lt;li&gt;Litres of Fuel Consumed for each day in the date range

&lt;ul&gt;
&lt;li&gt;Display Fuel Consumed when moving&lt;/li&gt;
&lt;li&gt;Display Fuel Consumed when Idle&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Kms travelled for that day&lt;/li&gt;
&lt;li&gt;Date Range is limited to 30 days.&lt;/li&gt;
&lt;li&gt;Displays Average Statistics for the period on the right.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Monthly Mileage
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--D_J8cEaT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ypmc6msfotm1nirgle02.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--D_J8cEaT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ypmc6msfotm1nirgle02.png" alt="Image description" width="529" height="251"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Parameters

&lt;ul&gt;
&lt;li&gt;Vehicle Registration&lt;/li&gt;
&lt;li&gt;Date Range&lt;/li&gt;
&lt;li&gt;Displays two graphs:&lt;/li&gt;
&lt;li&gt;Litres of Fuel Consumed for each month in the date range

&lt;ul&gt;
&lt;li&gt;Displays Fuel Consumed when moving&lt;/li&gt;
&lt;li&gt;Displays Fuel Consumed when Idle&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Kms travelled for that month&lt;/li&gt;
&lt;li&gt;Date Range is limited to 12 months.&lt;/li&gt;
&lt;li&gt;Displays Average Statistics for the period on the right.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  &lt;code&gt;&lt;/code&gt;Telematics Device
&lt;/h1&gt;

&lt;p&gt;To install on the vehicle we choose the Kitarm KT-2000G which has OBDII port and internal communication and GPS module. It supports GPRS, SMS, TCP, UDP and OTA. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--lp17ozOU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mkm1nh8uey4d5pcix19m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--lp17ozOU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mkm1nh8uey4d5pcix19m.png" alt="Image description" width="216" height="292"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The device supports 3G and 2G communication with an optional add-on 4G-LTE module. To communicate back to the server the device uses a simple JSON protocol. Prior to installing the device we flashed each device with the endpoint URL and connected to the vehicle using a simple inexpensive connector:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--oK4csQ4S--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hb976yhp6ezaccujoivs.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--oK4csQ4S--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hb976yhp6ezaccujoivs.jpeg" alt="Image description" width="520" height="293"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The connector connected to the battery and starter of the vehicle and the ECU through a port on it. We successfully trialed this configuration with a TATA Motors 1616 and 1613 Truck.&lt;/p&gt;

&lt;h1&gt;
  
  
  Server-Side component
&lt;/h1&gt;

&lt;p&gt;The server-side component was developed with an AWS Lambda endpoint and AWS SQS to queue up the messages from various vehicles. The specific protocol i.e. format of the message and commands from the device is specific to the device that we chose, however the AWS Lambda endpoint has been developed such that the specific protocol is abstracted from the other functionality:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The Server-side Lambda has 3 main functions:

&lt;ul&gt;
&lt;li&gt;Receive the incoming message through a JSON endpoint.&lt;/li&gt;
&lt;li&gt;Parse the incoming message – to extract the data.&lt;/li&gt;
&lt;li&gt;Write the data to an AWS RDS database (MySql).&lt;/li&gt;
&lt;li&gt;Sending a response to the device on the backend of the received request.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Should we need to change the device then only the code for 2&amp;amp;4 needs to be changed.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Conclusion
&lt;/h1&gt;

&lt;p&gt;This simple fleet monitoring application is relatively fully featured with a low upfront cost and minimal recurring expenses.&lt;/p&gt;

</description>
      <category>telematics</category>
      <category>fleet</category>
    </item>
    <item>
      <title>A Machine Learning Model for Van Sales</title>
      <dc:creator>Anirban Bhaumik</dc:creator>
      <pubDate>Sat, 20 Aug 2022 15:58:58 +0000</pubDate>
      <link>https://dev.to/ashmeetsdad/a-machine-learning-model-for-van-sales-21f4</link>
      <guid>https://dev.to/ashmeetsdad/a-machine-learning-model-for-van-sales-21f4</guid>
      <description>&lt;h2&gt;
  
  
  Overview
&lt;/h2&gt;

&lt;p&gt;Workers in offices and industrial estates outside of the major cities are often served by food trucks (or “Vans”) for their lunch and other refreshment needs. These food truck/van operators typically sell a mix of Sandwiches, Salads, Juices and other Chilled and Ambient Items. &lt;/p&gt;

&lt;p&gt;The Quantity of Products loaded at the beginning of the day are based on an estimate by the Operations Manager and the Van Operator’s acumen. These products are always ordered some days in advance. The order quantity is often a fine balance between the estimated demand for a given day and the desire to eliminate food wastage.&lt;/p&gt;

&lt;p&gt;To estimate the order quantity, the Operations Manager or the Van operator utilise the following heuristics:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;The likely weather in the region in which their Vans operate.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Lower Temperature == Lower Sales&lt;/li&gt;
&lt;li&gt;Higher Precipitation == Lower Sales&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;

&lt;p&gt;Seasonality&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Which Month of the year - Sales trend higher towards July, August&lt;/li&gt;
&lt;li&gt;Which Week of the month - Week 1 is the best, trending lower towards Week 4&lt;/li&gt;
&lt;li&gt;Which Day of the Week - Wed &amp;amp; Thurs is the best.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;

&lt;p&gt;Competitive Intensity&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Additional Suppliers at the same Office Parks/Industrial Estates for similar products affect the Sales negatively.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Whilst these heuristics are well established the computation process is completely informal and van sales operators usually lack a system to ensure that order quantities are well reasoned and predictable.&lt;/p&gt;

&lt;p&gt;We decided to create a suggested ordering system that would make the ordering process more predictable, reduce dependence on an individual’s acumen and automate load order quantity.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--kyEF7_xw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3agkfqxnssmeplrjl8z6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--kyEF7_xw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3agkfqxnssmeplrjl8z6.png" alt="Image description" width="880" height="510"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This system would allow the user to enter a target date and then would generate a suggested order that can be downloaded and (changed if desired) then keyed into a Production Ordering System that a Van Sales operator might be using.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The Suggested Order will contain the total quantities of all products that will be ordered and loaded into a Van.&lt;/li&gt;
&lt;li&gt;The Suggested Order quantity for a product will be the sum-total of all sales for that product across all &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Solution Architecture
&lt;/h2&gt;

&lt;p&gt;We created a ML model using AWS Forecast. To create the training dataset we used sales data for a Van Sales Operator running a fleet of 15 vans (a.k.a Routes) going back to 2010. We chose the top 200 products that this operator sold (to keep our dataset manageable) and collected the following information for each Product sold:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Date of sale&lt;/li&gt;
&lt;li&gt;  Route / Van it was sold on&lt;/li&gt;
&lt;li&gt;  Total Sales (QTY)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To get competitive intensity we asked the Van drivers and Sales Team Leaders to complete a survey asking them for each Month &amp;amp; Year going back to 2010 what the competition was like in their region, from the survey we prepared a dataset with the following structure:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Columns

&lt;ul&gt;
&lt;li&gt;Van Numbers&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;

&lt;p&gt;Each Row&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Month &amp;amp; Year&lt;/li&gt;
&lt;li&gt;Competitive Intensity ranked on a 1-3 scale -   1 being Low Competitive Intensity,  2 being Medium Intensity, 3 being High Intensity&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;

&lt;p&gt;To obtain weather data we used the Met-Office Historical Data Series&lt;br&gt;
&lt;a href="https://www.metoffice.gov.uk/datapoint/product/historical-station-obs"&gt;Link&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The Temperature, Precipitation and Sunshine Duration for the general geography of the Route a Van followed on the Date of the Sale.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Using this Training dataset AWS forecast created for us an ML model that predicted sales for a product given the:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Temperature (Mean?)&lt;/li&gt;
&lt;li&gt;Precipitation&lt;/li&gt;
&lt;li&gt;Mins/Hrs of Sunshine&lt;/li&gt;
&lt;li&gt;Month (1-12)&lt;/li&gt;
&lt;li&gt;Week Number (1-4)&lt;/li&gt;
&lt;li&gt;Day Number (1-7)&lt;/li&gt;
&lt;li&gt;Competitive Intensity (1 – 3)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Deploy the model in an online User Interface:
&lt;/h2&gt;

&lt;p&gt;We created an online User Interface that can be used without access to AWS forecast but that interacts directly with the ML model.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--1Dy6rVS9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/oiruaovs3i0ybpwooi1o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1Dy6rVS9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/oiruaovs3i0ybpwooi1o.png" alt="Image description" width="720" height="405"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;P90 refers to a forecast with a 90% confidence interval.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--XP3EEDaS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/j2j41jh6090zonjvpd9b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--XP3EEDaS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/j2j41jh6090zonjvpd9b.png" alt="Image description" width="430" height="242"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--MvPKfzvB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/q3p94cyxrw5p8qwmpiyv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--MvPKfzvB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/q3p94cyxrw5p8qwmpiyv.png" alt="Image description" width="481" height="270"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  Further Improvements (Future Phase)
&lt;/h2&gt;

&lt;p&gt;A planned future improvement is to keep updating the model dynamically with actual sales thus ensuring a feedback loop that will improve the accuracy of the prediction.&lt;br&gt;
This model is available on an MIT license for free use by the community – please contact the author to use this model.&lt;/p&gt;

</description>
      <category>machinelearning</category>
      <category>vansales</category>
      <category>sale</category>
      <category>aws</category>
    </item>
  </channel>
</rss>
