Closed Loop ERP

Closed-Loo ERP

Why ERP Schedulers Aren’t Enough for Manufacturing

  • Planners and Line Supervisors are still using whiteboards for day-to-day Scheduling
  • Schedule Adherence can’t be managed as a real-time metric
  • The integration between Shop Floor production and the ERP Schedule is non existent and takes a lot of manual effort to measure expected vs. actual values
Request A Demo
ERP Schedulers Aren't Enough
Epicor- Informance Scheduler Module

A better way.. The Epicor/Informance Scheduler Module

Informance schedules the line and uses the current ERP planning rates

  1. Each line has two color-coded rows, the top row for activities on the line, the bottom row for line availability
  2. Three types of events can be created, Production Orders, Line Activities, and Down Periods for the line
  3. As users modify the schedule, the projected inventory levels are updated

Scheduling the Production Orders

Scheduling the Production Orders

Production Order execution & tracking

Informance tracks the performance of the run, OEE, downtime, output, etc.

  • Actual cases produced are tracking in real-time
  • Planned to actual output variance is calculated
  • Statistics such as Time to Complete Order, OTIF and Schedule Adherence are provided in real-time
Example Data FieldsExample Values
Actual Cases1382
Planned to actual Case variance-118
Production order Statusin process, complete, not started
Actual cases1216
Planned to actual variance104
In full Yes / no
Time left to complete order2:20 minutes estimated
On timeYes / no
OTIFYes / no
Schedule Adherence%

Real-time production order status can then be propagated to stakeholders

Real-Time-Production-Order-Status-1
Real-Time-Production-Order-Status-2
Real-Time-Production-Order-Status-3
Real-Time-Production-Order-Status-4
On Desktops in the office
  • Real-time order status
  • Current / Prev shift orders
  • Sch Adh stats
On the Operator terminals
  • Order to actual
  • Time remaining
On Overhead displays
  • Real-time order status
On the Scorecard views
  • Current / Prev shift orders
Closing the Loop

That’s great… but how about closing the loop with ERP

The Epicor/Informance planning rate module analyzes historical run data.

Data sufficiency tests are conducted to determine whether SKUs qualify for analysis.

The application brings in the RIGHT amount of data for analysis.

Implications if planning rates are wrong…

Too LOW…

  • Underestimating capacity
  • Production runs take less time to complete than planned
  • Creates the potential for “waiting on product” from upstream areas
  • Significant for capacity-constrained operations

Too HIGH…

  • Overestimating capacity
  • Production runs take longer to complete than planned
  • Creates the potential for missed promised dates and lower customer service levels, overtime to recover, etc.
Implications

A better way to review and adjust planning rates

How are rates established?
…more random than you would think

pht-dice

  • With new equipment: based on machine capability
  • With older equipment:
    • Reviewed annually at best
    • Without rigorous analysis
    • The 13 week analysis rule of thumb…this is flawed

The Epicor / Informance planning rate module applies statistical rigor….

  • Parameters for analysis:
    • A minimum number of runs
    • A minimum number of run hours
  • Self adjusting date ranges based on data sufficiency thresholds

Running the Planning Rate Module is a 3 step process…

planning Rate Module Steps
Schedule Performance

Closing the loop

What happens when the planning and execution loop is closed…dramatic improvement.

  • Production orders are fed from ERP
  • The orders are tracked for performance, OEE, downtime, output, etc.
  • Planning rates are analyzed for more accurate rates
  • Schedule attainment is improved

See What Closed Loop ERP Can Do For You

Closed-Loo ERP
  • This field is for validation purposes and should be left unchanged.
[gravityform id="7" title="false" description="false" ajax="true"]
<div class='gf_browser_unknown gform_wrapper' id='gform_wrapper_7' ><div id='gf_7' class='gform_anchor' tabindex='-1'></div><form method='post' enctype='multipart/form-data' target='gform_ajax_frame_7' id='gform_7' action='/solutions/closed-loop-erp/#gf_7'> <div class='gform_body'><ul id='gform_fields_7' class='gform_fields top_label form_sublabel_below description_below'><li id='field_7_1' class='gfield form-field-name gfield_contains_required field_sublabel_hidden_label field_description_below hidden_label gfield_visibility_visible' ><label class='gfield_label gfield_label_before_complex' >Name<span class='gfield_required'>*</span></label><div class='ginput_complex ginput_container no_prefix has_first_name no_middle_name has_last_name no_suffix gf_name_has_2 ginput_container_name' id='input_7_1'> <span id='input_7_1_3_container' class='name_first' > <input type='text' name='input_1.3' id='input_7_1_3' value='' aria-label='First name' aria-required="true" aria-invalid="false" placeholder='First Name'/> <label for='input_7_1_3' class='hidden_sub_label screen-reader-text'>First</label> </span> <span id='input_7_1_6_container' class='name_last' > <input type='text' name='input_1.6' id='input_7_1_6' value='' aria-label='Last name' aria-required="true" aria-invalid="false" placeholder='Last Name'/> <label for='input_7_1_6' class='hidden_sub_label screen-reader-text'>Last</label> </span> </div></li><li id='field_7_3' class='gfield gfield_contains_required field_sublabel_below field_description_below hidden_label gfield_visibility_visible' ><label class='gfield_label' for='input_7_3' >Enter your email<span class='gfield_required'>*</span></label><div class='ginput_container ginput_container_email'> <input name='input_3' id='input_7_3' type='text' value='' class='medium' placeholder='Enter your email' aria-required="true" aria-invalid="false" /> </div></li><li id='field_7_8' class='gfield field_sublabel_below field_description_below hidden_label gfield_visibility_visible' ><label class='gfield_label' for='input_7_8' >Phone</label><div class='ginput_container ginput_container_phone'><input name='input_8' id='input_7_8' type='text' value='' class='medium' placeholder='Phone' aria-invalid="false" /></div></li><li id='field_7_7' class='gfield gfield_contains_required field_sublabel_below field_description_below hidden_label gfield_visibility_visible' ><label class='gfield_label' for='input_7_7' >Company<span class='gfield_required'>*</span></label><div class='ginput_container ginput_container_text'><input name='input_7' id='input_7_7' type='text' value='' class='medium' placeholder='Enter your company' aria-required="true" aria-invalid="false" /></div></li><li id='field_7_9' class='gfield gform_hidden field_sublabel_below field_description_below gfield_visibility_visible' ><input name='input_9' id='input_7_9' type='hidden' class='gform_hidden' aria-invalid="false" value='' /></li><li id='field_7_10' class='gfield gform_hidden field_sublabel_below field_description_below gfield_visibility_visible' ><input name='input_10' id='input_7_10' type='hidden' class='gform_hidden' aria-invalid="false" value='' /></li><li id='field_7_11' class='gfield gform_hidden field_sublabel_below field_description_below gfield_visibility_visible' ><input name='input_11' id='input_7_11' type='hidden' class='gform_hidden' aria-invalid="false" value='' /></li><li id='field_7_12' class='gfield gform_validation_container field_sublabel_below field_description_below gfield_visibility_visible' ><label class='gfield_label' for='input_7_12' >Phone</label><div class='ginput_container'><input name='input_12' id='input_7_12' type='text' value='' /></div><div class='gfield_description' id='gfield_description_7_12'>This field is for validation purposes and should be left unchanged.</div></li> </ul></div> <div class='gform_footer top_label'> <input type='submit' id='gform_submit_button_7' class='gform_button button' value='WATCH THE VIDEO' onclick='if(window["gf_submitting_7"]){return false;} window["gf_submitting_7"]=true; ' onkeypress='if( event.keyCode == 13 ){ if(window["gf_submitting_7"]){return false;} window["gf_submitting_7"]=true; jQuery("#gform_7").trigger("submit",[true]); }' /><!-- Begin Daddy Analytics fields --><input type="hidden" name="" value="" /><input type="hidden" name="" value="" /><!-- End Daddy Analytics fields --> <input type='hidden' name='gform_ajax' value='form_id=7&amp;title=&amp;description=&amp;tabindex=0' /> <input type='hidden' class='gform_hidden' name='is_submit_7' value='1' /> <input type='hidden' class='gform_hidden' name='gform_submit' value='7' /> <input type='hidden' class='gform_hidden' name='gform_unique_id' value='' /> <input type='hidden' class='gform_hidden' name='state_7' value='WyJbXSIsIjkxNDIyMmFlMTAxZmQ0Y2JiZGRlMTcwMzZjMjBlNDQxIl0=' /> <input type='hidden' class='gform_hidden' name='gform_target_page_number_7' id='gform_target_page_number_7' value='0' /> <input type='hidden' class='gform_hidden' name='gform_source_page_number_7' id='gform_source_page_number_7' value='1' /> <input type='hidden' name='gform_field_values' value='' /> </div> </form> </div> <iframe style='display:none;width:0px;height:0px;' src='about:blank' name='gform_ajax_frame_7' id='gform_ajax_frame_7' title='This iframe contains the logic required to handle Ajax powered Gravity Forms.'></iframe> <script type='text/javascript'>jQuery(document).ready(function($){gformInitSpinner( 7, 'https://d361pqspa6t978.cloudfront.net/production/wp-content/plugins/gravityforms/images/spinner.gif' );jQuery('#gform_ajax_frame_7').on('load',function(){var contents = jQuery(this).contents().find('*').html();var is_postback = contents.indexOf('GF_AJAX_POSTBACK') >= 0;if(!is_postback){return;}var form_content = jQuery(this).contents().find('#gform_wrapper_7');var is_confirmation = jQuery(this).contents().find('#gform_confirmation_wrapper_7').length > 0;var is_redirect = contents.indexOf('gformRedirect(){') >= 0;var is_form = form_content.length > 0 && ! is_redirect && ! is_confirmation;var mt = parseInt(jQuery('html').css('margin-top'), 10) + parseInt(jQuery('body').css('margin-top'), 10) + 100;if(is_form){jQuery('#gform_wrapper_7').html(form_content.html());if(form_content.hasClass('gform_validation_error')){jQuery('#gform_wrapper_7').addClass('gform_validation_error');} else {jQuery('#gform_wrapper_7').removeClass('gform_validation_error');}setTimeout( function() { /* delay the scroll by 50 milliseconds to fix a bug in chrome */ jQuery(document).scrollTop(jQuery('#gform_wrapper_7').offset().top - mt); }, 50 );if(window['gformInitDatepicker']) {gformInitDatepicker();}if(window['gformInitPriceFields']) {gformInitPriceFields();}var current_page = jQuery('#gform_source_page_number_7').val();gformInitSpinner( 7, 'https://d361pqspa6t978.cloudfront.net/production/wp-content/plugins/gravityforms/images/spinner.gif' );jQuery(document).trigger('gform_page_loaded', [7, current_page]);window['gf_submitting_7'] = false;}else if(!is_redirect){var confirmation_content = jQuery(this).contents().find('.GF_AJAX_POSTBACK').html();if(!confirmation_content){confirmation_content = contents;}setTimeout(function(){jQuery('#gform_wrapper_7').replaceWith(confirmation_content);jQuery(document).scrollTop(jQuery('#gf_7').offset().top - mt);jQuery(document).trigger('gform_confirmation_loaded', [7]);window['gf_submitting_7'] = false;}, 50);}else{jQuery('#gform_7').append(contents);if(window['gformRedirect']) {gformRedirect();}}jQuery(document).trigger('gform_post_render', [7, current_page]);} );} );</script><script type='text/javascript'> jQuery(document).bind('gform_post_render', function(event, formId, currentPage){if(formId == 7) {if(typeof Placeholders != 'undefined'){ Placeholders.enable(); }jQuery('#input_7_8').mask('(999) 999-9999').bind('keypress', function(e){if(e.which == 13){jQuery(this).blur();} } );} } );jQuery(document).bind('gform_post_conditional_logic', function(event, formId, fields, isInit){} );</script><script type='text/javascript'> jQuery(document).ready(function(){jQuery(document).trigger('gform_post_render', [7, 1]) } ); </script>