MES 4.0 Current Release Candidate (RC) Release Notes

MES 4.0 RC Release Notes


    4.83.2 RC5 Release Notes

    MES-7853BugChangesets Fixed - Corrected an issue where copying batch recipes in the Gateway scope wouldn't set parameter values.
    MES-7790BugChangesetsOEEFixed - Corrected an issue where operations would not auto-start due to the operation begin property not being copied over from the Definition Segment
    MES-7805BugChangesets Fixed - Corrected an error that prevent analysis task routing servers from being able to start.
    MES-7807BugCore Fixed - Corrected an issue that could cause missing property values when complex properties are added and renamed
    Success Batch Procedure Module: when installing 3.81.12 SP4 you must resync phases, and then validate and save of all batch recipes
    MES-7021BugBatchFixed - Batch Recipes that do not contain at least 1 Unit Procedure, will now sync down to all Enterprise Children.
    MES-7605BugBatchFeature - Updated the Pending Authorizations list with a new design, improved filtering, and support for direct role selection.
    MES-7815BugBatchFixed - New Batch Params added to User Phases on module upgrade, no longer share Property UUIDs
    MES-7818BugBatchFixed - Restart commands are no longer incorrectly sent to Idle phases
    MES-7820BugBatch

    Fixed - Flush any pending parameters to the database when an EBR is requested



    Fixed - Include procedure-level parameters when getting idle step properties.

    MES-3127New FeatureCoreFeature - Added system.mes.changelog scripting namespace that allows acquires Changelog Datasets, similar to those used in the Vision MES Changelog Viewer.
    MES-7801BugCoreFixed - Prevented components from throwing a minimum-size error in the Designer.
    MES-6480BugOEE/DowntimeFixed - downtime reason override behavior so prohibited reasons cannot be overridden and scope rules are consistently enforced across Perspective and Vision and backend update paths.
    MES-7758BugSPCFixed - Corrected an issue where C, NP, and U SPC charts in Perspective would throw errors loading sample definition attributes when refreshing.
    MES-7660BugTrace

    Fixed - Adding new Materials, Personnel, or Supplemental Equipment values to optional Trace operations using modifyOperation, now defaults to using Operation Begin/End date times instead of null.





    MES-7824BugWebServicesFixed - Web Service Gateway REST requests now handle empty HTTP response bodies correctly.
    MES-7344BugWebServicesFixed - Outbound Web Services XML (request and response bodies built from the configured variable tree) now lists elements in the same order as defined in the Web Service configuration, including nested elements, which improves compatibility with strict partner schemas.
    MES-7813BugWebServicesFixed - SOAP consumer response parsing preserves number-like string values (for example, `2E3F`) as strings.
    MES-7814BugWebServicesFixed - REST XML responses from Web Services Provider preserve script dictionary field order, including nested list/dictionary payloads.

    The following updates refine the Batch module by enhancing BatchMasterLogic validation and expanding the scripting functions. These updates enable more dynamic interaction with batch data while enforcing structural rules to preserve recipe integrity during configuration.

    MES-7681
    Core | Production
    Fixed - Data retention now purges all batches outside of the cutoff date instead of limiting it to 1000 batches per day.
    MES-7458Batch

    Improved:

    Success For parameters with a Calculation Expression, if the batch is not active, the last calculated value is returned (if available); otherwise, the Calculation Expression is returned.
    • Updated batch.queue.* script methods to accept either a BatchQueueEntry object or a Batch ID, where possible.

      batchID

      batch ID is a unique identifier assigned to a batch within the Sepasoft MES (Manufacturing Execution System). It is used to reference and manage specific batches during their lifecycle in the batch queue. The batch ID is crucial for retrieving associated control recipes and logic objects, as well as for tracking the status and parameters of the batch.

      For example, in the function system.mes.batch.queue.getBatchObjects(batchID), the batch ID is passed as a parameter to retrieve the control recipe and logic objects associated with that specific batch.

    • Implemented logic that automatically inserts a Start step into a BatchMasterLogic when addStep is invoked before one exists, and links it to the newly added step, streamlining the creation of templates and recipes through scripting.

    • Changed behavior of the Back button in the Batch Recipe Editor component Settings view to go back to the recipe/template list if the item is a template and doesn't have a unit class assigned

    Fixed:

    • Fixed an incorrect/misleading error being thrown in scripting when trying to add a link between two steps that are already linked.
    • Fixed an incorrect/misleading error being thrown in scripting when trying to getParameterValue for a parameter that does not exist
    • Improved error messaging in scripting when trying to save a template or recipe that has sublogic steps that did not have a valid logic reference set on them

    • Fixed issue in BatchRecipeEditor where the diagram would not be centered on load if the item was a template and didn't have a unit class assigned

    Added:

    • Added logic to prevent saving a BatchMasterLogic object that does not have a Start step

    • Added logic to prevent removing the Start step from a BatchMasterLogic using the removeStep() method

    • Added logic to prevent adding more than one Start step to a BatchMasterLogic object

    • Added restrictions to BatchMasterLogic#setLogicType(String) method to prevent changing the logic type under certain conditions:
      • Prevent changing the logic type to UNKNOWN
      • Prevent changing the logic type to Procedure
      • Prevent changing the logic type if logic item is a Procedure logic
      • Prevent changing the logic type if logic item has parent logic (e.g., Unit Procedure logic, Operation logic, or Operation Template)
      • Prevent changing the logic type from template to non-template or vice versa
      • Prevent changing the logic type if sublogic steps are present or child logics have been created from the logic item

    • Added restrictions to BatchMasterLogic#addStep method to prevent adding a step under certain conditions:
      • Prevent adding a step if the logic type is UNKNOWN
      • Prevent adding a step if the phase type is UNKNOWN
      • Prevent adding a step if the step order is negative
      • Prevent adding a sublogic step of the same type, e.g., UP -> UP or Op -> Op
      • Prevent adding a sublogic step of a higher type, e.g., trying to add a UP step to Operation logic
      • Prevent adding a sublogic step of a lower type, e.g., trying to add an Operation step to Procedure logic

     Added new convenience scripting methods:

    • BatchMasterLogic#addStep(String name, MESObjectLink phaseLink) - add a step with the specified name of phaseLink type at the next available stepOrder
    • BatchMasterLogic#addStep(MESObjectLink phaseLink) - add a step with a default name ("step") of phaseLink type at the next available stepOrder
    • AbstractBatchLogicStepsProperty#setTransitionExpression(String expression) - Set the Transition_Expression parameter on a Transition step with the specified expression
    • AbstractBatchLogicStepsProperty#getTransitionExpression() - Get the Transition_Expression for a Transition step
    • AbstractBatchLogicStepsProperty#getPhaseType() - Get the logic phase type for a step

     Other methods that do the same:

    • getLogicPhaseType()
    • AbstractBatchLogicStepsProperty#getOrder() - Get the stepOrder for a step
    • Other methods that do the same:
    • getLogicOrder()
    • getStepOrder()
    MES-7781
    Batch
    Fixed - Batches that are held while a Unit Procedures is waiting for allocation now properly allocate that Unit after the batch has been restarted and a Unit is free
    MES-7754
    Batch
    Fixed - Formula parameters visibility property now correctly defaults to 'True' if not specified
    MES-7253
    Batch
    Fixed - Batch Actions go to RUNNING after a restart
    MES-7718
    Batch | Document Management
    Improved - Updated batch components to apply more translations across Batch components, translate Recipe Names, Recipe Descriptions, Phase Names, Parameter Names, Parameter Values, Phase Types
    MES-7585SPCFixed - Perspective Sample Definition Manager now allows attribute sample sizes different from the definition default, as long as the value is greater than zero.
    MES-7749OEE/DowntimeFixed - OEE Material XML Exports and Imports now handle description fields.
    MES-5839PerspectiveFixed - Copy Equipment Path now reports clear in-app errors when clipboard access is unavailable instead of throwing a browser exception.


    4.83.2 RC4 Release Notes

    Released Date: 3/26/2026

    This RC includes a subset of the tickets that will be released in this month's maintenance: version 4.83.1 SP2.

    MES-7775BugBatchArtifact not found for doc phases in operational templates after upgrading Fixed - Corrected an issue where artifacts could not be found when trying to create a master recipe in scripting and using templates that contain documents.
    MES-7773BugBatchTemplates not updated with new parameters after Sync and Save if created before Propagate_Mode_To_Parent

    Fixed - Synchronize Logic parameters with templates

     

    Fixed - Prevent an error removing extra sub-parameters from logic objects when a unit procedure or operation comes from a template

    MES-7367ImprovementBatch Add Formula Name & Version to EBR
    MES-7587BugBatch Adding TransferOut / TransferIn phases to Unit Class not added to MES Tag provider
    MES-7670ImprovementBatch Add BatchID to script phases as a default parameter
    MES-7708BugBatch Batch ChangeBy column in definition changelog is Null for Task Routing
    MES-7717ImprovementBatch Make All Batch Recording Type Fields Editable
    MES-7733BugBatch Batch Calculation Expressions may be encoded incorrectly when parameter names are similar
    MES-7737BugBatchTask-RoutingBatch Task Routing fails to load Enterprise Batch Recipe Settings
    MES-7775BugBatchArtifact not found for doc phases in operational templates after upgrading Fixed - Corrected an issue where artifacts could not be found when trying to create a master recipe in scripting and using templates that contain documents.
    MES-7773BugBatchTemplates not updated with new parameters after Sync and Save if created before Propagate_Mode_To_Parent

    Fixed - Synchronize Logic parameters with templates

     

     

     

    Fixed - Prevent an error removing extra sub-parameters from logic objects when a unit procedure or operation comes from a template

    MES-7778BugChangesetsReconcile isn't removing changesets that are removed from diskFixed - Reconcile will now remove changeset meta records that are not matching a file on disk
    MES-7778BugChangesetsReconcile isn't removing changesets that are removed from diskFixed - Reconcile will now remove changeset meta records that are not matching a file on disk
    MES-7648BugCore Vision: Equipment Manager: cannot edit Shift
    MES-7668ImprovementCore Ability to set the names/descriptions in E-signature challenge
    MES-7690New FeaturePerspective Expose the equipment path/object selected in the Equipment Manager
    MES-7757BugSettings&Changeover S&C - Recipe Export/Import Script functions do not respect equipment assignment

     

    4.83.2 RC3 Release Notes

    MES-7760BugChangesetsFixed - Copy Recipe Change Events from source object to the changeset copy so they are recorded correctly in the SCO Changelog Viewer
    MES-7753BugChangesetsFixed - Objects in a pending open changeset will respect Object Selectors `showEquipmentPath` setting.
    MES-7752BugChangesets

    Fixed - system.mes.changeset.commit(UUID) now reuses existing close and apply logic.


    Added - system.mes.changeset.getSessionChangesetUUID() returns the current changeset UUID for the session as a string, or null if there isn't a changeset associated with the session.

    MES-7751BugChangesetsFixed - New changesets created via scripting are now immediately visible in the open changesets list.
    MES-7742BugChangesetsAdded - New ignition conf argument that can be set with `-Dcom.sepasoft.changeset.allowHashRewrite=True` that allows recomputing the hash during changeset bootstrapping.
    MES-7734BugChangesetsFixed - Corrected an issue where Batch Documents wouldn't propagate from the Master Logic to the Control Logic correctly.
    MES-7725BugChangesetsFixed - Prevented an issue where saving the same object type with the same name would allow duplicate object names on types that require global or sibling unique names
    MES-7724BugChangesetsFixed - saveMESObjects can be called on unmodified objects without an exception
    MES-7693BugChangesetsFixed - The 'Move Equipment' in the Perspective Equipment Manager now works as expected.

     

    4.83.2 RC2 Release Notes

    Change Sets (Script APIs + REST)

    Software Version Restrictions: Change Sets are exclusively for 4.x environments.

    For user information, see Changesets

    See notes below:


    Summary

    Change Sets add an isolated, session-scoped workflow for staging MES configuration changes without impacting the live system until explicitly applied. Changes are captured within a Change Set tied to a Perspective user session, serialized as human-readable JSON on disk, and can be promoted between environments using export/import style workflows (Dev → Test → Prod).

    What’s New (Key Features & Concepts)

    • Session Isolation and Safe Staging: Change Sets are bound to a specific user session (Perspective browser session). While Change Sets are open, edits to MES objects, such as Recipes and Operations, are held temporarily and isolated within a specific user session. Staged changes do not affect the live database, production runs, or other user sessions until the Change Sets are closed, approved, and applied.

    • JSON-on-Disk for Version Control: Change Sets are serialized into human-readable JSON files. This supports storing MES configuration changes in version control, like Git, and using Software Development Life Cycle (SDLC) workflows such as review, commit, and promote.

    • Environment Promotion: Change Sets facilitate promoting the same validated configuration across environments. Change Sets created and validated in Test can be exported and imported into Production to apply an identical configuration package.

    • Lifecycle and Statuses: Change Sets progress through several statuses. 

      • Open means they are accepting new staged changes. 

      • Close (Pending Approval) means staged changes are frozen and waiting for approval prior to commit. 

      • Applied means changes have been committed to the live MES database. 

      • Canceled means the Change Sets are discarded, but a record is retained for audit purposes.

    Scripting Interface (New/Updated APIs)

    Applies a Closed Change Set

    system.mes.changeset.applyChangeset()

    Applies a Closed Changeset.

    Activate an Open Changeset

    system.mes.changeset.attachSessionChangesetUUID()

    Activates the Open Changeset, causing edits to be attributed to it.

    Update a Database with Changeset

    system.mes.changeset.commit()

    Updates the database with the current state of the target Open Changeset.

    Create a New Changeset

    system.mes.changeset.createNewChangeset()

    Creates a new Open Changeset for the current session. Does not activate it for the session.

    Deactivate the Session’s Open Changeset

    system.mes.changeset.detachSessionChangeset()

    Deactivates the session's currently active Open Changeset, causing further edits to no longer be attributed to it.

    Cancel a Session’s Open Changeset

    system.mes.changeset.cancelChangeset()

    Cancels an Open Changeset.

    Closes an Open Changeset

    system.mes.changeset.closeChangeset()

    Closes an Open Changeset.

    View All Closed Changesets

    system.mes.changeset.listClosed()

    Returns a list of all Closed Changesets found for the current session.

    View All Open Changesets

    system.mes.changeset.listOpen()

    Returns a list of all Open Changesets found for the current session.

    View a Closed Changeset

    system.mes.changeset.getClosedConfigurationChangeset()

    Fetches a Closed Changeset. Will return an empty Closed Changeset if none exists with the given UUID.

    View an Open Changeset

    system.mes.changeset.getOpenConfigurationChangeset()

    Fetches an Open Changeset. Will generate a new Open Changeset if none exists with the given UUID.

    Create a Change Set

    system.mes.changeset.create()

    Creates a new Change Set for the current session. After creation, configuration edits made within the session are captured to the Change Set rather than written to the live database.

    Apply a Change Set

    system.mes.changeset.apply(changesetUUID)

    Commits staged changes to the live MES database.

    Cancel a Change Set

    system.mes.changeset.cancel(changesetUUID)

    Discards a Change Set that has not been applied and reverts all uncommitted modifications staged within it.

    REST API Access (OpenAPI)

    Change Sets also expose REST APIs (OpenAPI-compliant) to allow external systems to:

    • list Change Sets

    • retrieve Change Set details

    • apply Change Sets programmatically

    This supports automation scenarios like CI/CD-style promotion gates and controlled rollout workflows.  https://gateway/openapi 

    Considerations

    • Scope: Change Sets are 4.x only and introduced in MES 4.83.2 RC2.

    • Isolation: Changes are session-bound and isolated until applied.

    • Auditing: Canceled Change Sets retain a record for audit purposes (even though changes are discarded).


    4.83.2 RC1 Release Notes

    Permissive Start adds an optional “ready-to-start” gate so a batch equipment phase can be prevented from starting until the equipment/PLC reports a permissive condition. This helps reduce failed starts and operator workarounds by aligning “Start” with real equipment readiness.  With Permissive Start enabled, the system can hold off on issuing the START command until the permissive state is satisfied, while preserving the existing command/state handshake pattern.

    Warning Important note: Permissive Start is intended for operational coordination. It is not a replacement for safety-rated interlocks.

    4.83.0 RC4 Release Notes

    MES-7624BugCoreFixed - MES Settings page is accessible without errors.
    MES-7606BugCoreFixed - Pie chart can now become a ring chart.

     

    4.83.0 RC3 Release Notes

    MES-7484BugCoreFixed - Replace instances of removed library 'org.joda.time' with equivalents from 'java.time'
    MES-7522BugCoreFixed - Task Routing Visualization servers now correctly registers components
    MES-7563BugWeb ServicesFixed - An NPE is no longer thrown after upgrading a Web Services project from 3.0 to 4.0.
    MES-7564BugCoreFixed - Vision Clients no longer throw a client permission error stopping the modules from starting up.
    MES-7521BugCoreImproved - Provide better user feedback if settings are not available on the current server type.
    MES-7575BugCoreFixed - Resolved issue where some scripting functions would fail to return the correct Dataset object

     

    4.83.0 RC2 Release Notes

     Production Module

    MES-7484BugProduction ModuleFixed - Replace instances of removed library 'org.joda.time' with equivalents from 'java.time'.