Release Notes: 5.0.0.13406

When customers can expect this release:

Group 1: June 3, 2020

Group 2: June 4, 2020

Group 3: June 11, 2020

Highlights

  • NEW FEATURE: There is a new feature called OEE Waterfall that displays OEE in a waterfall graphic, breaking down availability, performance, quality, and capacity (if OEEc selected in settings). OEE Waterfall can be further expanded into areas of focus, such as machine state or downtime losses, utilizing Downtime Group configurations. See here for a complete overview of the feature.

  • NEW FEATURE: There is a new feature called Opportunity Pareto that allows users to choose up to 3 levels of Pareto to be shown on screen simultaneously, enabling a deep dive analysis directly into the Whiteboard. Comments are now also available, so users may find Comments against their Losses. Losses may be correlated, and sorted by Occurrences, Duration, or % of Time.

Bug Fixes:

QualityCheckService null exception

Description

`jobRepo.GetCurrentJob` can return null if no current job

https://gitlab.com/shoplogix/pne/-/blame/develop/visualstudionet/Server/Shoplogix.Server/Services/Quality/QualityChecksService.cs#L178

currentJob: jobRepo.GetCurrentJob(machine).Clone(),

https://qatesting.shoplogix.com/logs/2020-05-28%20Web.txt

2020-05-28 08:22:17.9594 04044:019 FATAL Shoplogix.Server.Web.WebApplication AppDomain Unhandled Exception: IsTerminating=True: Object reference not set to an instance of an object. EXCEPTION System.NullReferenceException: Object reference not set to an instance of an object. at Shoplogix.Server.QualityChecksService.ExecuteQualityChecksService() in D:\BuildAgent\work\3378db5a28cef30e\visualstudionet\Server\Shoplogix.Server\Services\Quality\QualityChecksService.cs:line 176 at Shoplogix.Server.QualityChecksService.RepeatRun(CancellationToken token) in D:\BuildAgent\work\3378db5a28cef30e\visualstudionet\Server\Shoplogix.Server\Services\Quality\QualityChecksService.cs:line 241 at Shoplogix.Service.RepeatingService.RepeatingRun(CancellationToken token) in D:\BuildAgent\work\3378db5a28cef30e\visualstudionet\Server\Shoplogix\Service\RepeatingService.cs:line 62 at Shoplogix.Service.ExpandingTimer.<>c__DisplayClass7_0.<.ctor>b__0(Object state, CancellationToken ct) in D:\BuildAgent\work\3378db5a28cef30e\visualstudionet\Server\Shoplogix\Service\Timer.cs:line 29 at Shoplogix.Service.ExpandingTimer.RunInternal(CancellationToken parentToken) in D:\BuildAgent\work\3378db5a28cef30e\visualstudionet\Server\Shoplogix\Service\Timer.cs:line 101 at Shoplogix.Service.ExpandingTimer.Run(CancellationToken parentToken) in D:\BuildAgent\work\3378db5a28cef30e\visualstudionet\Server\Shoplogix\Service\Timer.cs:line 79 at Shoplogix.Service.RepeatingService.ServiceRun(CancellationToken token) in D:\BuildAgent\work\3378db5a28cef30e\visualstudionet\Server\Shoplogix\Service\RepeatingService.cs:line 51 at Shoplogix.Service.ServiceBase.Run(CancellationToken haltToken) in D:\BuildAgent\work\3378db5a28cef30e\visualstudionet\Server\Shoplogix\Service\ServiceBase.cs:line 84 at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.ThreadHelper.ThreadStart()

FIXED

PNE-926

Opportunity Pareto - Area filter is not available for Area/Line Pareto if user navigates from Machine level Pareto

Description

Steps to reproduce:

  1. In Whiteboard Homepage select any machine with Pareto enabled > Select Pareto

  2. Navigate back to Whiteboard Homepage > Select Area/Line with Pareto enabled

  3. Click on Level 1

Expected behavior: Area option is available
Actual behavior: Area option is not available

Workaround: Refresh the page and Area will be available in Level 1

Acceptance should be done by @Jesse Hildebrand (Unlicensed)

PNE-925

Opportunity Pareto - Time Window in splat issues

Description

  • Changing default time with chevrons and applying an additional grouping level is not working as expected

Steps to reproduce:

  1. In Whiteboard Homepage select any machine with Pareto enabled > Select Pareto

  2. Click on left chevron --> time window has changed as expected

  3. Add any option available in Level 2 > Update

Expected behavior: Time window stays the same
Actual behavior: Time window is set back to default time

Note: In addition, chevrons are not working after Update (time window is header is changing, but displayed data stays the same).

Acceptance should be done by @Jesse Hildebrand (Unlicensed)

PNE-922

Opportunity Pareto - Custom Areas does not work

Description

Custom Areas don't appear to be working, no data loaded

https://saas54.whiteboard/#/opportunitypareto/areas/1003/start/20200302T071500.000/end/20200306T151500.000/level1=machine&maxsub=3&level2=reason&level3=comment

PNE-914

OEE Waterfall Cleanup

Description

Issues:

  1. For food and bev customers with high speed machines the cycle times of their jobs is regularly less than 1 second however the cycle time field in Waterfall only shows HH:MM:SS so it just shows as 00:00:00, example below:

https://saas60.shoplogix.com/Whiteboard/#/oeewaterfall/area/3/start/20190904T071500.000/end/20190905T151500.000/line

 

2. The units of the pieces that are displayed isn't captured anywhere. Mondelez makes use of various units compared to other customers so there's the possibility for confusion if the units aren't displayed anywhere. Options are to show them in the title bar like in other views (Shifthours) or show them in the table next to the value or label. Options shown below:

 

 

 

3. MTBF is for the bottleneck machine for lines, want that to be specified in the table. Example below:

 

If any of these aren't clear or you need more info we can do a quick call to clarify. Thanks!

Attachments

  •  

  •  

  •  

  •  

  •  

PNE-906

Database Changes Performance on MDLZ-BADDIQA

Description

When comparing performance on version 13132 vs 12521 I noticed there were a few queries that would fail under certain situations and also that the web logs were filled with fatal errors. Link to logs and results of performance testing are below:

https://mdlz-baddiqa.shoplogix.com/logs/

https://mdlz-baddiqa.shoplogix.com/logs/2020-05-20%20[00028]%20Web.txt

Attachments

  •  

PNE-847

New Config - Machine Types Clean up 1.0

Description

Issue # 1

  • PN 360, New 360, - Machine States - editable only Colour, Time Offset, MTBF Failure and Checkboxes

Issue # 2

  • PN 360 and New 360 - Remove ID and Frequency from variables, part counts

Issue # 3

  • XML and Plantnode Cloud, - remove Frequency from machine states, variables, job settings and employee settings

Issue # 4

  • Plantnode Cloud - add ID in machine states

Issue # 5

  • Add Order field to Device Settings GUI and API

Issue #6

  • Remove Plantnode, Manual, Red Lion and Hydra machine types from adding new machine dropdown

Issue #7

  • Need 'Disable Microstops' in Downtime machine states as a checkbox option

ADDITIONAL ISSUES caught in the final round of testinghttps://slxdev.atlassian.net/browse/PNE-825 :

Issue #8

  • Thresholds are messed up when saving in peconfig → This was working fine before (Regression)

Steps to reproduce:

  1. In flash config select any OPC machine (ex: Test_Machine_AD) > Device Settings > Set DT Threshold = 120 > Machine States > Micro Stoppage > Set Threshold = 150 > Save > Tools > Save

  2. In peconfig select the same machine > Machine States → Thresholds are as expected

  3. Edit > Save > Refresh

  4. Select the same machine > Machine States

Expected Behavior: Thresholds are not changed
Actual Behavior: Thresholds are changed (DT Threshold = 1.2 and Micro Stoppage threshold = 1.5)

Issue #9

  • Categories with space (Operator Efficiency, Slow Running and Material Handling) in Generic variable are not saved

@Alex Karyakin (Unlicensed) feel free to amend/add/remove anything from Description, if needed.

 

Hino Pringnitz → Not part of UAT would like to discuss adding them in the future

  • Please add a Manual Machine checkbox for Manual operation machines this would be added to OPC machines (manual machines are actually OPC machines)

  • Please consider adding the ability to add manual variables

  • Please test a Red lion, hydra, and manual machine just to make sure your configuration won’t overwrite.

PS I am willing to do the testing but I am not sure how that Fits in your design.

 

AK:

Issue #10

  • When saving flash config with modified Slow Running name and Micro Stop states the New config is not saving the type of the threshold which is causing the issues. Need to add the threshold type to Slowr Run and Micro Stop

PNE-844

Navigation - OEE Waterfall, Paging and Opportunity Pareto should be translated in Navigation menu

Description

Precondition:

In config file on Plant level set <PagingEnabled>1</PagingEnabled>, <OeeWaterfallEnabled>1</OeeWaterfallEnabled> and <OpportunityParetoEnabled>1</OpportunityParetoEnabled>

Spanish:

French:

German:

Acceptance Criteria:

  • Paging, OEE Waterfall and Opportunity Pareto are translated and in upper case in Spanish/French/German

PNE-820

Cycle gauge value doesn’t match on Plant Meeting and Shift Line if Cycle Gauge is set as ‘Cycle' or 'SPH’

Description

Example:

Shift Line: https://qatesting.shoplogix.com/whiteboard/#/shiftline/FFD4D9CF-EFAA-ED58-0298-AD1A4F13C386/start/20200219T145504.000/gauge1=1&gauge2=8&gauge3=0&timeMetric=0&cycleDP=1&cycleTOL=0&gaugeTOL=0&overCycling=0&goalgreen=1&goalyellow=0.75&goalred=0.5&scrapgreen=0.02&scrapyellow=0.05&scrapred=0.1

Plant Meeting: https://qatesting.shoplogix.com/whiteboard/#/plantlevellinemeeting/area/5/start/2020-02-19T07:00:00.000/end/2020-02-19T15:00:00.000/snaptoshift=false&goalgreen=1&goalyellow=0.75&goalred=0.5&scrapgreen=0.02&scrapyellow=0.05&scrapred=0.1&cycleTOL=0&gaugeTOL=0&cycleDP=1

@Hank Shin (Unlicensed) investigated the issue in https://slxdev.atlassian.net/browse/PNE-768:

  • in many shift based views, they are using a derived cycle factor (expectedCycles / target production)

  • unfortunately, in multi job multi cycle factor scenarios, real cycles != derived cycle factor * total

  • an overhaul is required to every component that uses this derived cycle factor.

tl;dr - shiftline is wrong

Affected Views:

  • Shift Hours

  • Shift Line

  • Shift Rollup

  • Area Meeting

Affected Gauges:

  • PPH

  • PPM

  • Strikes Per Hours

  • Strikes Per Minute

  • Part Cycle Time

PNE-814

Changeover time on Shift Line is incorrect in Job bar

Description

Ex: https://qatesting.shoplogix.com/whiteboard/#/shiftline/FFD4D9CF-EFAA-ED58-0298-AD1A4F13C386/start/20200219T131656.000/gauge1=1&gauge2=8&gauge3=0&timeMetric=0&cycleDP=1&cycleTOL=0&gaugeTOL=0&overCycling=0&goalgreen=1&goalyellow=0.75&goalred=0.5&scrapgreen=0.02&scrapyellow=0.05&scrapred=0.1&units=3

Based on Job bar, 'Jesse Job' is ended after start of hour 5 (11 am), however the changeover happened before the end of hour 4.

 

Similar bug was fixed for Shift Hours in https://slxdev.atlassian.net/browse/CS-434

PNE-708

Pareto Translation to Spanish

Description

The following is not translated:

Shifts:
Day
Night
Afternoon

No values to display:
unscheduled
No Comment Entered
No Job Recorded
No Group Defined
No Job Filter Defined

Automatic States:
Idle
Micro Stoppage
Slow Running
Setup
Plantnode Downtime
Late Start
Early Departure
Shift Start Up
Break
Unscheduled

CS-2364

Unable to enter scrap on Dashboard

Description

Customer is unable to enter reasons scrap on Dashboard view. The scrap entry works on the hourly and other views but not on the Dashboard.

Logs show this warning "WARN Shoplogix.Server.Services.ApiScrapService Failed: No scrap match edit:"
Dev tools show: bundle-5.0.0.13148.js?132345575945900000:1 PUT https://saas126.shoplogix.com/web/api/scrap/A085D026-0FF4-8648-CF6D-95B6D992B5D5/?1.16.18 400 (Bad Request)
r._onFinish @ bundle-5.0.0.13148.js?132345575945900000:1
(anonymous) @ bundle-5.0.0.13148.js?132345575945900000:1
(anonymous) @ bundle-5.0.0.13148.js?132345575945900000:1
r.emit @ bundle-5.0.0.13148.js?132345575945900000:1
S @ bundle-5.0.0.13148.js?132345575945900000:1
p @ bundle-5.0.0.13148.js?132345575945900000:1
(anonymous) @ bundle-5.0.0.13148.js?132345575945900000:1
m.run @ bundle-5.0.0.13148.js?132345575945900000:1
f @ bundle-5.0.0.13148.js?132345575945900000:1
setTimeout (async)
l @ bundle-5.0.0.13148.js?132345575945900000:1
i.nextTick @ bundle-5.0.0.13148.js?132345575945900000:1
i @ bundle-5.0.0.13148.js?132345575945900000:1
u.exports @ bundle-5.0.0.13148.js?132345575945900000:1
(anonymous) @ bundle-5.0.0.13148.js?132345575945900000:1
d @ bundle-5.0.0.13148.js?132345575945900000:1
t.exports @ bundle-5.0.0.13148.js?132345575945900000:1
then @ bundle-5.0.0.13148.js?132345575945900000:1
(anonymous) @ bundle-5.0.0.13148.js?132345575945900000:1
r.dispatch @ bundle-5.0.0.13148.js?132345575945900000:1
scrapAdjustHandler @ bundle-5.0.0.13148.js?132345575945900000:1
saveClickHandler @ bundle-5.0.0.13148.js?132345575945900000:1
executeDispatch @ bundle-5.0.0.13148.js?132345575945900000:1
executeDispatch @ bundle-5.0.0.13148.js?132345575945900000:1
(anonymous) @ bundle-5.0.0.13148.js?132345575945900000:1
executeDispatchesInOrder @ bundle-5.0.0.13148.js?132345575945900000:1
r @ bundle-5.0.0.13148.js?132345575945900000:1
t.exports @ bundle-5.0.0.13148.js?132345575945900000:1
processEventQueue @ bundle-5.0.0.13148.js?132345575945900000:1
handleTopLevel @ bundle-5.0.0.13148.js?132345575945900000:1
p @ bundle-5.0.0.13148.js?132345575945900000:1
perform @ bundle-5.0.0.13148.js?132345575945900000:1
batchedUpdates @ bundle-5.0.0.13148.js?132345575945900000:1
batchedUpdates @ bundle-5.0.0.13148.js?132345575945900000:1
dispatchEvent @ bundle-5.0.0.13148.js?132345575945900000:1
bundle-5.0.0.13148.js?132345575945900000:1 Error: No scrap match edit
at r.IncomingMessage.<anonymous> (bundle-5.0.0.13148.js?132345575945900000:1)
at bundle-5.0.0.13148.js?132345575945900000:1
at r.IncomingMessage.r.emit (bundle-5.0.0.13148.js?132345575945900000:1)
at k (bundle-5.0.0.13148.js?132345575945900000:1)
at bundle-5.0.0.13148.js?132345575945900000:1
at m.run (bundle-5.0.0.13148.js?132345575945900000:1)
at f (bundle-5.0.0.13148.js?132345575945900000:1)

 

Sample URL

https://saas126.shoplogix.com/whiteboard/#/dashboard/A085D026-0FF4-8648-CF6D-95B6D992B5D5/alloweditreason&cycle=1&gauge1=1&gauge2=8&gauge3=6&timeMetric=0&goalgreen=1&goalyellow=0.75&goalred=0.5&scrapgreen=0.02&scrapyellow=0.05&scrapred=0.1

CS-2250

Messaging through Real Time Variables not functioning

Description

The messaging at Kellogg's Rome using Real Time Variables has stopped functioning
All of the machines in areas 38 and 39 have it turned on using RTV but are not displaying anything
This was configured on 5May2020
It has previously worked, but those areas have stopped updating
The XML data from the machines shows the tags sending the correct data; the Hourly and Analysis shows the values changing

This would not be urgent if it wasn't for multiple previous issues at the facility

Sample URL

https://saas123.shoplogix.com/whiteboard/#/shiftrollup/areas/38 https://saas123.shoplogix.com/whiteboard/#/shiftrollup/areas/39

CS-2013

Possible XML bug - Machine state/reason changed without input from XML system

Description

https://saas77.shoplogix.com/whiteboard/#/perioddetail/XMLCN_IACLogrono12/start/2020-01-23T06:00:00.000/end/2020-01-26T14:00:00.000/bucket/60/gauge1=1&gauge2=8&gauge3=6&timeMetric=0&cycleDP=1&cycleTOL=0&gaugeTOL=0&overCycling=0&goalgreen=1&goalyellow=0.75&goalred=0.5&scrapgreen=0.01&scrapyellow=0.02&scrapred=0.05

Over the course of a week no changes occurs in the input, yet during this time the system went through multiples changes

https://saas77.shoplogix.com/Web/xmldata/XMLCONECTORLCN_IAC001/XMLCN_IACLogrono12/202002/OpcCore_20200212.xml?contentType=text/plain

most egregious example was at midnight on the 11th 00:00 of the 12th when the system just went into setup spontaneously.

During this time the customer did not do anything and yet the system changed (multiple times!)

At no point did this machine do anything in the real world it was offline.

The OPC core is unhelpful as it simply says Automatically Edited which I believe means our system is changing.

~ Hino

CS-2007

Machine and User Reasons Resets On New Shift does not work for setup

Description

Hi Guys,

Machine Reasons & Manual reasons will not reset on a new shift.

Here is a sample:
https://saas117.shoplogix.com/whiteboard/#/shiftrollup/areas/46/start/20200417T222859.000/gauge1=1&gauge2=8&gauge3=0&timeMetric=0&cycleDP=1&cycleTOL=0&gaugeTOL=0&overCycling=0&goalgreen=1&goalyellow=0.75&goalred=0.5&scrapgreen=0.02&scrapyellow=0.05&scrapred=0.1

and here is another sample:
https://saas117.shoplogix.com/whiteboard/#/shiftrollup/areas/46/start/20200417T222859.000/offset/-1/gauge1=1&gauge2=8&gauge3=0&timeMetric=0&cycleDP=1&cycleTOL=0&gaugeTOL=0&overCycling=0&goalgreen=1&goalyellow=0.75&goalred=0.5&scrapgreen=0.02&scrapyellow=0.05&scrapred=0.1

Customer is complaining and requesting that this is urgently fixed as this is ruining their OEE figures. I have tried disabling Automatic Setup on a job change to see if it will remove the historic events of setup but it doesn't work.

Today I've noticed that if operators manually select any of the downtimes reasons labelled as setup and when the shift resets, the reason is removed and displays machine state "Setup" on new shift even though I have auto setup disabled. I will try to get a screenshot as the customer is using this system live so it's hard to get a screenshot on time to show this behaviour.

This is happening on all of Fareva BCM machines and potentially the entire server.

Sample URL

https://saas117.shoplogix.com/whiteboard/#/shiftrollup/areas/46/start/20200417T222859.000/offset/-1/gauge1=1&gauge2=8&gauge3=0&timeMetric=0&cycleDP=1&cycleTOL=0&gaugeTOL=0&overCycling=0&goalgreen=1&goalyellow=0.75&goalred=0.5&scrapgreen=0.02&scrapyellow=0.05&scrapred=0.1

CS-1551

API Calls for Reason returns time but no occurrences for Setup Reasons

Description

In HTML - Appears that the first reason pulled will show occurrences but many others will have occurrences = 0. They are machine reasons with downtime edit and coming off a PLC. These are steps of the setup process. In JSON - just no occurrence tag

<Machine MachineId="2F7A21DB-1165-653C-118D-B6E38D096B0E" MachineName="RDG Evap 2"

If you look at the details of the machine in the 2nd query, you will see some steps have occurrences and others do not.

Sample URL

dfa.shoplogix.com/web/api/export/summary?Start=20200301&End=20200313&metrics=reasons,&groupBy=machine,&machines=2F7A21DB-1165-653C-118D-B6E38D096B0E&format=xml https://dfa.shoplogix.com/web/api/export/summary?start=20200301&end=20200313&metrics=,states,reasons&groupBy=Machine&Machines=,,,894B4B12-D324-FF85-319F-ACD8F848AD6B,2FAEBDB5-A3EA-25FE-18D9-20196D6F82F6,OPCCN_DFA_Portales021,2B600A89-D911-322D-CB51-B70FAA10DE3D,710DD708-C6B3-9146-21AF-B710DA346381,DC93CEA6-FCB0-F3CD-380E-B712BAAC3B9A,E1A224A4-8253-97E6-8A36-67691129B2A8,E801D753-8D22-CC9E-9FA7-6769112995F5,&format=xml&rnd=2 JSON Call https://dfa.shoplogix.com/web/api/export/summary?start=20200301&end=20200313&metrics=,states,reasons&groupBy=Machine&Machines=,,,894B4B12-D324-FF85-319F-ACD8F848AD6B,2FAEBDB5-A3EA-25FE-18D9-20196D6F82F6,OPCCN_DFA_Portales021,2B600A89-D911-322D-CB51-B70FAA10DE3D,710DD708-C6B3-9146-21AF-B710DA346381,DC93CEA6-FCB0-F3CD-380E-B712BAAC3B9A,E1A224A4-8253-97E6-8A36-67691129B2A8,E801D753-8D22-CC9E-9FA7-6769112995F5,&rnd=2

CS-760

Production Summary shows Comment that Shift Hours does not

Description

The meeting view of a machine shows a comment for a non-existent reason. the internal comment query shows a comment but the hourly view don't show any reason .

saas113 - Huercasa
Username: Huercasa
Password: Veg360SLXpack

API query: https://saas113.shoplogix.com/web/api/comments/machines/72E1868A-E681-BB40-F5BB-81943805CB0B/start/20200124T060000.000/end/20200125T060000.000

hourly view: https://saas113.shoplogix.com/whiteboard/#/shifthours/72E1868A-E681-BB40-F5BB-81943805CB0B/start/20200124T100000.000/gauge1=1&gauge2=8&gauge3=6&cycleDP=2&goalgreen=1&goalyellow=0.75&goalred=0.5&scrapgreen=0.02&scrapyellow=0.05&scrapred=0.1&nowrap=true&timeMetric=0&cycle=1&cycleTOL=0&gaugeTOL=0&overCycling=0

Meeting view: https://saas113.shoplogix.com/whiteboard/#/productionsummary/72E1868A-E681-BB40-F5BB-81943805CB0B/start/2020-01-24T06:00:00+01:00/end/2020-01-25T06:00:00+01:00/bucket/60/gauge1=2&gauge2=8&gauge3=6&timeMetric=0&goalgreen=1&goalyellow=0.75&goalred=0.5&scrapgreen=0.02&scrapyellow=0.05&scrapred=0.1&cycleDP=1&cycleTOL=0&gaugeTOL=0

the image shows the comment and the reason

Underlying issue is each comment pulls a little bit differently -

The “MEETING VIEW” Should match the SHIFT ROLLUP query.

So please change the underlying query used in the Meeting view to be the same query as the Shift rollup.

there are 3 linked bugs that may or may not be resolved by solving this.

Sample URL

https://saas113.shoplogix.com/whiteboard/#/productionsummary/72E1868A-E681-BB40-F5BB-81943805CB0B/start/2020-01-24T06:00:00+01:00/end/2020-01-25T06:00:00+01:00/bucket/60/gauge1=2&gauge2=8&gauge3=6&timeMetric=0&goalgreen=1&goalyellow=0.75&goalred=0.5&scrapgreen=0.02&scrapyellow=0.05&scrapred=0.1&cycleDP=1&cycleTOL=0&gaugeTOL=0

CS-200

You can still edit a downstate even if it is configured to not allow users to edit it

Description

Masco discovered you can edit machine reasons that are classified as 'non-editable' in the shift rollup and the shift chrono views.

Why?

Sample URL

None

New Features / Status on Long-term Work:

Opportunity Pareto - Re-enable Pareto for non DB cache servers

Description

Enable old and new(DB version for improved performance) Pareto versions to work together using UseDatabaseCache=True flag in settings.cs to select with one will be used

Acceptance Criteria:

When UseDatabaseCache=True Pareto DB version for improved performance should be used
If NOT Old Pareto Version should be used

Opportunity Pareto - Re-enable Pareto for non DB cache servers

Description

Enable old and new(DB version for improved performance) Pareto versions to work together using UseDatabaseCache=True flag in settings.cs to select with one will be used

Acceptance Criteria:

When UseDatabaseCache=True Pareto DB version for improved performance should be used
If NOT Old Pareto Version should be used

PNE-923

OEE Waterfall - Add Under Construction pop-up

Description

Add under construction pop-up

Same mechanics as opportunity pareto, only once per browser, use different key then opportunity pareto

PNE-915

Rest API for Portal Dashboard REST connector

Description

  • /web/api/analyticsportal/core/start/{start}/end/{end}/bucket/{numberOfMinutes=5}

    • given start and end time

    • Get all coredata into 5 minute buckets

    • buckets

      • start

      • end (redundant, but maybe useful given bucket duration)

      • records

Sisense Docs

CDATA Docs (connector partner for Sisense)

PNE-901

New Config - Create validation framework for form rather than per field

Description

Create a form validator for the main save button on the configuration screen that would validate fields all at once based on the selected screen / tab. This new validator can be passed into sub-components or done on the main config screen prior to save.

For this card, simple validation will be added to the Device Settings tab in the New Config.

Fields to be validated:

  • Machine Name cannot be blank

  • Order needs to be a number that’s >= 0

This is all the validation to be added for now. More will be added in future cards.

 

Technical Details:

Using the validate.js library, we can use it's validate() function to help with common/simple form validations.

https://www.npmjs.com/package/validate.js
https://validatejs.org/

To cover custom rules, error messages, or overrided functions we will create a validation class. This class can act as a wrapper to the validate.js library to help out with any specifics to the project.

This can be applied onto a Save/Submit button in the onSaveClick event, which would validate all fields in the form.

Alternatively it can be applied to an onChange event for each field, validating just that field.

This new library and class should be used on the Device Settings tab of the new config so it can be properly tested.

 

Scenarios:

User visits the Device Settings tab and starts editing. They leave Machine Name blank and hit save.

Expected: Error message appears that tells the user that this field cannot be blank.

 

User tries editing the order field, inputs a negative number and hits save.

Expected: Error message appears that tells the user that this field cannot be negative.

 

User tries editing the order field, inputs a word and hits save.

Expected: Error message appears that tells the user that this field must be a number.

PNE-893

Plant Level Line Summary (PLLS) - improve performance (remove pareto bottleneck)

Description

Problem:
PLLS is slow. The slowest part of the call is the "pareto" bars at the bottom.

Possible solutions:
converting that part of the query to sql queries. Be sure with profiling where the time goes to be sure you've identified the real bottleneck.

Depending on number of machines in the line, the PLLS pareto is the longest step and can be replaced by SQL.

Acceptance Criteria:

  • a monthly PLLS for both plants on QA13 takes about 1.7min. Reduce that as much as possible. On QA13, two line machines, two non-line, meaning we can expect ~33% reduction.

Technical notes:

  • Requires coredata in the database.

PNE-848

Refactor QualityChecksService.cs to be able to test it

Description

Refactor the service to make it testable

Testing:

No Acceptance required. Testing only to ensure functionality has not changed

PNE-843

Preloading database when we turn it on - data still isn't complete.

Description

Problem: We preload all the data we can from the disk cache. But the disk cache isnt perfect and has gaps. (This is a spin off story from PNE-673)

Additionally, invalidation queries come in and aren’t “pushed” to the db until they are requested with the pipeline query. This solution should address those invalidation queries.

Possible Solution:

  1. A repeating service in the web process that loads missing data into the db over time. Add it on to the batch process.

Acceptance Criteria:

  1. Performance: the system shouldn't be much slower, but should slowly load all the core data until 2020-01-01 without causing servers to reach memory or CPU limits.

  2. The system must persist invalidations through system resets (like config edits and upgrades).

  3. The system must have a setting to throttle performance called CoreDataBackloadProcessorCount in web.config.

  4. (ignore for QA) Technical: a full “Responsible Invalidates” assessment. (Addressing the second problem)

Testing ideas:

  1. See comments below

Technical design:

  • A time-limited addition to the batch process. Let it run for 10% of the batch time, perhaps.

  • the discrete unit of runtime, and their relative priority should be:

    • an invalidation query rebuild (these could be long.. is there a problem here?)

    • a machine-day not yet in the database.

  • Details:

    • a table:

      • core_data_backload_dates

      • read it at start of backload process, write new values at end of backload process.

    • query db for rowcount in the machine-day. >0 and move on…

      • result 0 → call sqlreport.get() with a query for that machine and day. That will generate and write to db.

    • Question for Joe: We will be consuming plenty of extra memory by doing this. Want to circumvent the memcache for these read and writes?

 

Table: core_data_backload_dates

  • eventually all machines will get to the oldestloaddate. If we want to backload more data for mondelez we can do so later with this process.

PNE-835

Implement Quality Check Match Options

Description

Summary

Need it implement all match options as seen in the Flash Quality Config

Details

Currently the only option for quality check selection based on Job filters is EXACT.
Available match options as seen in the Flash Quality Config are:

  • EXACT

  • CONTAINS

  • EXCLUDE

  • STARTS

  • ENDS

  • GREATER

  • LESS

These options are seen when the Filters are configured for the line, see Configuring Filter Data Type for Extended Filtering Options

Match Option Config Values

Match Option Values can be found here:ServerQualityConfig.as#L25
Match Option GREATER and LESS can be found here:

Sample Quality Config:

Showing CONTAINS config Match="1"

Attachments

  •  

PNE-760

Pareto Comment Performance Improvement

Description

Summary


Currently Pareto has been limited to:

  • Only showing comments either for a machine or when Machine is picked as a preceding level (e.g. comments will never be grouped for an entire area)

  • Max 50 machines

  • Max 3 month time period

    These limitation were put in place mainly due to performance problems surrounding comments. We would like to see the database to do more grouping of comments and finalizing the output to match what's needed for Pareto.

Server


saas16.shoplogix.com -> Kamtek first saw this problem
saas16clone.shoplogix.com -> a clone of saas16 taken around November 2019, data from this time frame can be used for testing (e.g. from July 2019 to November 2019 provides many comment records)

Investigation Steps


Use the opportunity pareto report as a guide to see how comments maybe grouped then look at making changes to the way the database is queried with respect to comments so that the results produced require little to no processing before being outputted.

For an example see: https://saas16.shoplogix.com/Whiteboard/#/opportunitypareto/areas/71/start/20200101T000000.000/end/20200102T000000.000/level1=reason&maxsub=3&level2=machine&level3=comment

Proposed Changes

Lookup and grouping operations will be done on the database

The database will return all the information needed to create the final ParetoDataResponse object, Lookup and grouping operations will be done on the database.

1.- Create a New Repository e.j. “SqlOpportunityParetoRepository” for all DB calls related to pareto.

2.- Create GetParetoDataResponse Function to create the adequate T-SQL depending on the parameters.

3.- Create a mapper function to translate table format database response into ParetoDataResponse multi level structure.

4.- Remove unused code and wire up the new one

PNE-569

Deliver file-delta from Connector realtime socket to Realtime pipeline

Description

  1. Modify BatchProcessItem to include delta text

  2. Add delta in realtimeuploadHandler, during the adding to the batch part

  3. Add delta in realtimeSignalHandler, during the adding to the batch part