General presentation
The project
This dashboard is the result of the "RES Key Account Dashboard" IS project.
Code : 3297
| GBU / Function / SBS | Rare Earth Systems | BRM | Andrew Tan |
|---|---|---|---|
| Project Cost (k€) | 61 (Including 46 SBS) | Customer / Requestor | Francois Belet |
| Requested Start Date | October 2013 | Sponsor / Approval | Wisnia Arnaud |
| Requested Go-Live Date | February 2014 | Project Manager | David Tonda |
| ROI/Stake | 10 Months (7 days a month) | Pay Back Period |
Initial description of the project request :
"With the changing dynamics of the markets, pricing alone will not suffice. Key differentiation is enhanced customer centric service levels. KA management with customers must take decisions based on facts and ability to communicate with customers without prohibitive efforts. Views need to be global and to be able to see the real issue quickly, to sustain agreed service levels between the business and customers. Today this is not possible.
The necessary KPIs are compiled manually on a monthly basis and send widely (BU, SC, Management) but the manual consolidation and formatting / data crunching is too heavy, slow, recurrent and prone to human error.
The project aims at improving the productivity by automatizing that workload and allowing business to access this information quickly, directly formatted and up to date.
The dashboard exists ultimately to support and enhance business in its relationships with customers, responding in timely fashion and to even challenge customers’ wrong perceptions."
Project team
| David Tonda | IS project manager |
| Eric Fournel | Development of the QV side |
| Frederic Cazaux | Development of the BO sources |
| Shun Hui Chua | Development of the BW sources |
| Andrew Tan | RES Business Project Coordinator |
| Sandra Silveira | Expertise on some of the OTC KPI. |
| Nadine Bardanave | Expertise from existing Piloting & tools dashboards |
| Francois Belet | Projet requestor & main key user (Dashboard Owner) |
| Laurent Thiault | Second main key user for all supply chain topics |
| Catherine Yezeguelian | Key User for Claims |
| Celine Duculot | Key User for Forecasting Accuracy |
| Florent Bourachot | Key User for finance (Overdues) |
Access for the dashboard
The access on this dashboard is "all or nothing". There is no way to restrict the access inside the dashboard.
Access is to be approved by the dashboard owner.
Linked dashboards
The main dashboard (Production) is RES Key Account Dashboard
The development version of the dashboard is RES Key Account Dashboard DEV
Source location & documentation
You can click on the "Name Source" Links to get to the detailed documentation page.
| Source Type | Location | Name Source | Filter | Dashboard Location | Time perimeter | |||
|---|---|---|---|---|---|---|---|---|
| BO | \\Frparboadm01\qv_extractions\QV_RES_KA | QV_RES_KA_FORECAST_ACCURACY_RESWWPPS-SAFIR_001.XLS | Forecast Accuracy | Y-1 & Y | ||||
| QV_RES_KA_LEAD_TIME_CUSTOMER_RESWWPPS_001.XLS | not isnull([Lead Time (Customer Respect)])) | Leadtime Respect | Y-1 & Y | |||||
| QV_RES_KA_LEAD_TIME_DELIVERY_RESWWPPS_001.XLS | not(isnull([Lead Time (Delivery Flexibility)])) | Leadtime Flexibility | Y-1 & Y | |||||
| QV_RES_KA_MASTER_DATA_REWWPPS_001.XLS | All tab (Mapping file) | Mapping | ||||||
| QV_RES_KA_OTIF_A_REPORT_RESWWPPS_001.XLS | OTIF-A | Y-1 & Y | ||||||
| QV_RES_KA_OTIF_C_REPORT_RESWWPPS_001.XLS | OTIF-C | Y-1 & Y | ||||||
| QV_RES_KA_SALES_VALUE_QTY_REWWPPE_001.XLS | Sales | Y-1 & Y | ||||||
| BO | \\Frparboadm01\qv_extractions\QV_COMPLAINT_NEW | QV Complaint by GBU CWWPPS ZSECT00068.XLS | Claims | |||||
| SMART | Initial Catalog=HistoSMART Data Source=FRPARSMBP1 | HistoSMART.dbo."QV_COMPLAINT" | CPNT_ENTR = 'ENTRP00003' AND Year(CPNT_DATE_RECP) >= Year(today())-1 | Claims | Y-1 & Y | |||
| MANUAL FILE | \\FRPARQLAP01\RES KA - Target & Leadtime | Contractual lead time.xlsx | We save leadtime value for each month. Data are stored for each month | Leadtime Respect & Leadtime Flexibility | Mapping | |||
| Dashboard Version.xlsx | Information | |||||||
| TARGET.xlsx | According to values in the file TARGET | |||||||
| ARIS | \\FRPARQLAP01\f$\Qlikview Storage\Private Data\Source Documents\In Production\ARIS_DATA\RES | poChange.CSV | PO Changes | Y-1 & Y | ||||
| poSpeed.CSV | PO Speed | Y-1 & Y | ||||||
| BW | CUB_FIAR1 | QVMS_BW_QRY_CUB_FIAR1_0003 | [_1___RCS_G_B_U__Key] = 'ZSECT00068' | Overdues | Y-1 & Y | |||
| MPR_WC02 | QVRESSC_BW_QRY_MPR_IC002_0011 | Stocks | Y-1 & Y | |||||
Join between sources
| Source | Key Source | Attached Key | Attached source | Attached Data | Attribut Name in dashboard | ||
| Leadtime Respect | [Ship to code]- [Material code]- Month Year | Contractual lead time.xlsx | [Lead time days] | CONTR_LEADTIME | |||
| Leadtime Flexibility | |||||||
| SMART Claims | CPNT_ORDR_NB& CPNT_LINE_NB | [Order Number Smart]& SubField([Order and line number],'/',2) | QV Complaint by GBU CWWPPS ZSECT00068.XLS | [IECRA code], [Material code], [Despatch plant code] , [Ship to code], [Legal company code] | IECRA_KEY, MATERIAL_KEY, PLANT_KEY, SHIP_TO_KEY | ||
| QV Complaint by GBU CWWPPS ZSECT00068.XLS | [IECRA code] | QV_REF structure axis RCS CWWPPE.XLS | [IECRA name] | IECRA_LABEL_CL | |||
| Forecast Accuracy, Leadtime Respect, Leadtime Flexibility, OTIF-A, OTIF-C, Claims, Sales, PO Speed, PO Changes | [Ship to code]- [Material code] | QV_RES_KA_MASTER_DATA_REWWPPS_001.XLS | [Ship to KA name] | SHIP_TO_KA | |||
| [Ship to code] | [Ship to name], [Ship to country code], [Ship to country name], [Ship to geographical zone code] | SHIP_TO_LABEL, SHIP_TO_CTRY_KEY, SHIP_TO_CTRY_CL, SHIP_TO_ZONE | |||||
| [Material code] | [Production plant name], [Product name],[Material ENT group name], [Material ENT subgroup name] | PROD_PLANT_LABEL, PRODUCT_LABEL, MAT_ENT_GRP_LABEL, MAT_ENT_SUBGRP_LABEL | |||||
| Stocks | [Ship to KA name], [Production plant name], [Product name],[Material ENT group name], [Material ENT subgroup name] | SHIP_TO_KA, PROD_PLANT_LABEL, PRODUCT_LABEL, MAT_ENT_GRP_LABEL, MAT_ENT_SUBGRP_LABEL | |||||
- For Stock data, Ship to KA is defined just with the material code. We join stock value with all KA wich are connected with the material and have Qty Sold during Y and Y-1.
- For Forecast Accuracy Data, for the join with Material Code, we just recover the dimension Product Name
Common Attributes and naming
| Source | Time | Material Axis | Ship to Axis | Ship to KA | Plant | IECRA | Company | Order Line | Doc Type | Delivery Type | Contr. Lead. | Interco | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Name in Dashboard | MONTH_YEAR | MATERIAL_KEY | MAT_ENT_GRP_LABEL, MAT_ENT_SUBGRP_LABEL, PRODUCT_LABEL, PROD_PLANT_LABEL | SHIP_TO_KEY | SHIP_TO_CTRY_CL, SHIP_TO_ZONE_CL | SHIP_TO_KA | PLANT_LABEL_CL | IECRA_LABEL_CL | COMPANY_LABEL | ORDER_LINE | DOC_TYPE_KEY | DELIVERY_TYPE | CONTR_LEADTIME | FLAG_INTERCO | ||||||||
| Forecast Accuracy | [Year/month] | [Material code] | Mapping with [Material code]on BO MASTER DATA File ([Product name]) | [Ship to code] | Mapping with [Ship to code] on BO MASTER DATA File ([Ship to country name], [Ship to geographical zone code]) | Mapping with [Ship to code]- [Material code] on BO MASTER DATA File ([Ship to KA name] ) | ||||||||||||||||
| Leadtime Respect | [Purchase order date] | Mapping with [Material code]on BO MASTER DATA File ([Material ENT group name] , [Material ENT subgroup name], [Product name], [Production plant name]) For Stocks, if we don’t have [Material code] we use [C_MATPLNT__C_MATGRP], [C_MATPLNT__C_MATSGRP], | [Plant name] | [IECRA name] | [Legal company name] | [Order and line number] | [Commercial document type code] | [Delivery Type] | [Lead time days] | |||||||||||||
| Leadtime Flexibility | [Despatch actual good issue YYYY/MM] | |||||||||||||||||||||
| OTIF-A | [Order first ATP good issue date - YYYY/MM] | |||||||||||||||||||||
| OTIF-C | [Order last requested delivery date cust - YYYY/MM] | |||||||||||||||||||||
| Sales | [Year/month] | N | ||||||||||||||||||||
| Claims | CPNT_DATE_RECP | [Despatch plant code | CPNT_INTR_COMP | |||||||||||||||||||
| PO Changes | Function time [By month]" | Material | [Ship-to party] | Plant | N | |||||||||||||||||
| PO Speed | End time [By month]" | Company code (billing)] | N | |||||||||||||||||||
| Stocks | [_2C_MATNR] | Mapping with [Material code] on BO MASTER DATA File | [_0PLANT] | [_0COMP_CODE] | N | |||||||||||||||||
| Overdues | [_0DEBITOR] | [0DEBITOR__0COUNTRY], [0COMP_CODE__C_ZONE] | [0DEBITOR__C_GRCUST] | [0G_CWWE01] | N | |||||||||||||||||
Mapping
Mainly mapping in application:
Mapping Statut Claims
| CPNT_STAS_VALU | COMP_STATUS_LABEL |
|---|---|
| 1 | Open |
| 2 | Open |
| 3 | Open |
| 4 | Open |
| 5 | Closed |
| 6 | Open |
Mapping Severity Claims
| CPNT_GRAV_SEVERITY | COMP_SEVERITY_LABEL |
|---|---|
| 1 | Standard |
| 2 | Major |
| 3 | Critical |
| 4 | Obsolete |
| 5 | Anomaly |
All mapping are in this URL : \\FRPARQLAP01\f$\Qlikview Storage\Private Data\Source Documents\In Production\RES KA\Sources\MANUAL_SOURCES
Mapping Contractual Leadtime
We have a contractual Leadtime value for combination of each ship to key and material key.
Moreover, we give the month value for each loading and we keep the historical data for Y and Y-1:
[$(VS_QVW_NAME)]:
LOAD Evaluate([SHIP_TO_KEY])*1&'-'&Evaluate([MATERIAL_KEY])*1 AS KA_JOIN_KEY,
[Lead time days],
monthName(makedate(year(today()),num(month(today())),1)) AS MONTH_YEAR,
FROM
[$(VS_FLD_SOURCE_MANUAL)Shared Files\Contractual lead time.xlsx]
(ooxml, embedded labels, table is Sheet1);
IF FileSize('$(VS_FLD_STORE_SOURCE_QVD)$(VS_QVW_NAME).QVD') > 0 then
Concatenate ([$(VS_QVW_NAME)])
Load *
From [$(VS_FLD_STORE_SOURCE_QVD)$(VS_QVW_NAME).QVD] (qvd)
where monthName(makedate(year(today()),num(month(today())),1)) <> MONTH_YEAR
and Year(MONTH_YEAR) >=YEAR(TODAY())-1;
Specific Data
| Source | Attributs | Name in dashboard | New or existing | Comments |
|---|---|---|---|---|
| Forecast Accuracy | [Forecasted Demand (Pre-SOIP M-1)], [Forecasted Demand (Pre-SOIP M-3)], [Actual Demand] | FOAC_FORECAST_M1_KG, FOAC_FORECAST_M3_KG, FOAC_DEMAND_KG | Existing | SUM([Field]) |
| Deviation M1 | FOAC_DEVIATION_M1 | New | fabs(SUM([Actual Demand])-SUM([Forecasted Demand (Pre-SOIP M-1)])) | |
| Deviation M3 | FOAC_DEVIATION_M3 | New | fabs(SUM([Actual Demand])-SUM([Forecasted Demand (Pre-SOIP M-3)])) | |
| LEVEL_AGGR | FOAC_LEVEL_AGGR | New (We concatenate data of Details and Aggregation value in the same table) |
| |
| Leadtime Respect | [Lead Time (Customer Respect)] | LEAD_C_LEADTIME | Existing | |
| LEADTIME RESPECT | LEAD_C_LEADTIME_RESP | New | IF([Lead Time (Customer Respect)]<[Lead time days],0,1) | |
| Leadtime Flexibility | [Lead Time (Delivery Flexibility)] | LEAD_D_LEADTIME | Existing | |
| LEADTIME FLEXIBILITY | LEAD_D_LEADTIME_FLEX | New | IF([Lead Time (Delivery Flexibility)]>=[Lead time days],0,1) | |
| OTIF-A | [OTIF A - On Time Detail], [OTIF A - In Full Detail] | OTIF_A_OTD , OTIF_A_IFD , | Existing | Not used |
| OTIF_A | OTIF_A_FLAG | New | IF([OTIF A?]='YES',1,0) | |
| OTIF-C | [OTIF C - On Time Detail], [OTIF C - In Full Detail] | OTIF_C_OTD , OTIF_C_IFD , | Existing | Not used |
| OTIF_C | OTIF_C_FLAG | New | IF([OTIF C?]='YES',1,0) | |
| Claims | CPNT_ID, CPNT_STAS_VALU, CPNT_GRAV_SEVERITY, META_CPNT_MOTI, RESOL_CODE, [Order Number Smart] | COMP_ID, COMP_STATUS_LABEL, COMP_SEVERITY_LABEL, COMP_MOTIVES, COMP_RESOL_PLANT_KEY, COMP_NUMBER | Existing | |
| Stock | [_0GL_ACCOUNT__C_GL_STYP], [_0VAL_CLASS] | STOCK_GL_ACCOUNT_SUBTYPE, STOCK_VALUATION_CLASS | Existing | |
| [Measures_M_01] to [Measures_M_23] + [Measures_D_01] | STOCK_KG | New | 2 Loadings of the BW query, once for KG once for KRE and crosstable of column per month for keep just 2 attributs | |
| STOCK_KRE | ||||
| Overdues | [Overdues_JAN_Y_1] to [Overdues_DEC_Y] + [Overdues_Previous_day] | OVER_OVERDUES_EUR | New | |
| [AR_JAN_Y_1] to [AR_DEC_Y] + [AR_Previous_day] | OVER_AR_EUR | |||
| Sales | [Actual sales -CP-], [Quantity -PUQ-] | SALES_EURO, SALES_QTY | Existing | |
| PO Speed | [Sales item type original)], CT Order item first confirmation [Person-days], [Number of processes], [Order Cycle Time] | SPEED_SALES_TYPE, SPEED_DAYS_CONFIRMATION, SPEED_TOTAL_DAYS, SPEED_NB_PROCESS | Existing | |
| EXIST_CHANGE | SPEED_EXIST_CHANGE | New | IF([Number of change schedule line]>=1,1,0) | |
| PO Changes | [Number of quantity changes (Origin Solvay)], [Number of delivery date changes (Origin Solvay)], [Number of quantity changes (Origin Customer)], [Number of delivery date changes (Origin Customer)], [Number of processes] | CHANGE_QTY_BY_SOLVAY, CHANGE_DELI_DATE_BY_SOLVAY, CHANGE_QTY_BY_CUST, CHANGE_DELI_DATE_BY_CUST, CHANGE_NB_PROCESS | Existing |
Others new attributes in dashboard:
- RANK_SALES: We calculate the ranking of SHIP TO KA by SALES (€) (Descending Ranking). For this ranking, we keep Sales of Y and Y-1 and we remove the following KA :
- ‘DIVERS’
- ‘DIVERS APRES DECISION’
- ‘SOLVAY’
- SALES_3M_QTY: This attribute is calculated at the least aggregate level.
- We reallocated each value of Sales at M+1 and M+2 :
- FOR i=1 to 2
JOIN (TABLE)
LOAD
_TEMP_KEY, //KEY
- FOR i=1 to 2
- We reallocated each value of Sales at M+1 and M+2 :
AddMonths(MONTH_YEAR, $) AS MONTH_YEAR, // Key
[Quantity -PUQ-] AS Quantity_$
Resident TABLE;
next;
- We calculated the sum of Sales like this :
- SALES_3M_QTY = [Quantity -PUQ-]+ Quantity_1 + Quantity_2
- We remove temporary fields : Quantity_1 and Quantity_2
- We calculated the sum of Sales like this :
- STOCK_COEFF: We calculate a coefficient for each combination of KA and Material. The Sum of this coefficient for each Material is equal to 1. We calculate this coefficient for affected correctly stock value of material to different KA. This coefficient is determined by the quantity sales by KA for each Material during Y and Y-1. If we have stock value for one material but
Example:
STOCK
| Material | Qty |
| 1 | 100 |
| 2 | 50 |
| 3 | 300 |
| 4 | 100 |
SALES
| KA | Material | Qty |
| 1 | 1 | 40 |
| 1 | 3 | 30 |
| 3 | 3 | 50 |
| 2 | 1 | 50 |
| 2 | 2 | 50 |
| 2 | 3 | 20 |
COEFF
| KA | Material | Qty Sales | Qty Stock | Calcul | Coeff | New Stock Value |
| 1 | 1 | 40 | 100 | (40/(40+50)) | 0.44 | 44.4 |
| 1 | 3 | 30 | 300 | (30/(30+50+20)) | 0.3 | 90 |
| 3 | 3 | 50 | 300 | (50/(30+50+20)) | 0.5 | 150 |
| 2 | 1 | 50 | 100 | (50/(40+50)) | 0.55 | 55.6 |
| 2 | 2 | 50 | 50 | 50/50 | 1 | 50 |
| 2 | 3 | 20 | 300 | (20/(30+50+20)) | 0.2 | 60 |
| 4 | 100 | IF(NO SALES, 1) | 1 | 100 |
The material 4 have a coefficient of 1 but he doesn’t reliable with a KA.
Model
Loading
IF([Commercial document type code]='UB' OR [Commercial document type code]='NB','Y','N')
For Stocks BW query, we have one column of stock value by Month : [Measures_D_01] = M, [Measures_M_01]= M-1, [Measures_M_02]=M-2 … [Measures_M_23]=M-23
For Overdues BW query, we have one column of AR an Overdues value by Month : [Overdues_Previous_day], [Overdues_JAN_Y-1], [Overdues_FEB_Y-1], … [Overdues_DEC_Y]


