Preventing fields from Editing Once Record is in Workflow

Preventing fields from Editing Once Record is in Workflow

I like this problem because it involves a few components to make it work.

The business problem that is being solved here is if the user would like a field or fields to not be editable once the work order, in this case, enters workflow.  This example focuses on the WORKTYPE field, but this script could easily be expanded to include other fields.

The components you will need for a successful script are:

  • A list of fields that will be made read only once record is in workflow.
  • A list of viable statuses for the workflow to know when the records should be evaluated.
  • A SQL query to determine if record is on workflow.
  • Setting fields to be read only if evaluation is true.

Creating a list of fields to be made read only

You can create a list of fields to be read only by using an array.  Here I only have one field but using an array gives you the flexibility to quickly add additional fields.

#List of fields that will be read only
readOnlyFields = ['WORKTYPE']
#Example with additional fields
readOnlyFields = ['WORKTYPE', 'DESCRIPTION']

Obtain list of viable workflow statuses

In this scenario we care about records that are actively in workflow.  So we get a list of statuses using the workflow status domain.

# Get a list of valid workflow assignment statuses
statusList = mbo.getTranslator().toExternalList("WFASGNSTATUS", "ACTIVE")

Query to determine if record Is actively in workflow

Construct a query to determine if the record is in workflow.

# Construct a where clause to find the existing workflow assignment 
# for this work order. Ensure that one exists before proceeding. 
whereClause = SqlFormat(mbo.getUserInfo(), "ownertable = :1 and ownerid = " + woId + " and assignstatus in (" + statusList + ")")
whereClause.setObject(1, "WFASSIGNMENT", "OWNERTABLE", "WORKORDER")

Setting field(s) flag to read only

If it is determined that the record is in workflow then we set the fields listed in the array, readOnlyFields to read only.

if not wfAssignmentSet.isEmpty():
    logger.error("WF Assignments assignments for this work order")
    # Make fields read only if the work order is in workflow
 	# There will be more read only fields.  Fields can also be made
    # required using the same principle.
 	mbo.setFieldFlag(readOnlyFields, MboConstants.READONLY, True)

Steps to create automation script

Create a new automation script with Object Launch Point. We called it WOPREVEDIT in this example.

Create a launch point with Initialize Value selected.

Here is the full automation script.

#Script: WORKORDER.INIT
#Make fields read only if record is in workflow
#Launch Point: WORKORDER.INIT
#Launch Point Type: OBJECT
#Launch Point Object: WORKORDER
#Language: Python
#Author: A3J Group
  
  
from psdi.mbo import SqlFormat
from psdi.server import MXServer
from psdi.util.logging import MXLoggerFactory
from psdi.mbo import MboConstants
  
logger = MXLoggerFactory.getLogger("maximo.script.woinit")
  
# Get the associated work order
wo = mbo.getString("WONUM")
woId = mbo.getLong("WORKORDERID")
#woId = str(woId)
#woId = woId.replace(',','')
  
#Logging
logger.info("Value for woId is " + str(woId))
  
#List of fields that will be read only. Add additional fields with a comma.
readOnlyFields = ['WORKTYPE']
  
# Get a list of valid workflow assignment statuses
statusList = mbo.getTranslator().toExternalList("WFASGNSTATUS", "ACTIVE")
  
# Construct a where clause to find the existing workflow assignment 
# for this work order. Ensure that one exists before proceeding. 
whereClause = SqlFormat(mbo.getUserInfo(), "ownertable = :1 and ownerid = " + str(woId) + " and assignstatus in (" + statusList + ")")
whereClause.setObject(1, "WFASSIGNMENT", "OWNERTABLE", "WORKORDER")
  
# Get record set and filter it by the where clause
wfAssignmentSet = mbo.getMboSet("$WOAPPR", "WFASSIGNMENT", whereClause.format())
wfAssignmentSet.reset()
  
if not wfAssignmentSet.isEmpty():
 	logger.info("Found WF Assignments for this WO – settings fields readonly")
 	# Make fields read only if the work order is in workflow
 	# There will be more read only fields.  Fields can also be made
    # required using the same principle.
 	mbo.setFieldFlag(readOnlyFields, MboConstants.READONLY, True)
 	
if mbo.getThisMboSet().getParentApp() == "WOTRACK":
 	woOwner = mbo.getOwner()

 

One of our missions A3J Group is to share knowledge whenever we can. We hope this helps you in your day!

Customizing Ad Hoc Reports

We all want to make our Maximo reports as informative and readable as possible, but sometimes the available attributes for an Ad Hoc report don’t provide the information we want to see. For example, let’s look at a Work Order record. If I wanted to pull this Work Order into a report, I would have a hard time knowing what company is being used as the Vendor and which “Ed” is supervising the Work Order. So instead of using these attributes on our Work Order reports, why not use the display name of the Supervisor or the name of the Vendor company? In the steps below, I’ll use the “company name” example to demonstrate creating an Ad Hoc report with an attribute from a separate application.

First things first, let’s see what it looks like if I try to create a report that includes the name of the Vendor company. There isn’t anything related to the Companies object on the left side panel, so I can’t access the attribute I need yet. However, we can see the description of our reporting Object Structure at the top. (We’ll save that piece for later!)

For now, let’s grab the information we need to create a relationship between the Work Order object and the Companies object. I’ll have to use my trusty ALT+i shortcut to get the value of two different attributes: the attribute representing the record I want to access and the attribute on that record which is being displayed. In my case, the Work Order “VENDOR” attribute represents the record I want to reach and the “COMPANY” attribute stores that same value in the Companies object.

 

 

 

Now we can go into the Database Configuration and see if there is a relationship from the Work Order object to the Companies objects which uses these fields. Looks like there are none, so let’s create a new row and make it ourselves!

I’ve filled in my details as shown below. Remember when creating a new relationship between objects, the Relationship should have the same name as the Child Object to avoid creating duplicates in the future. In your Where Clause, the value of the Child attribute is listed first and attributes on the Parent are retrieved using a binding ‘:’ symbol.

Now that the Work Order knows how to access the Companies application, let’s go to the Object Structures application and use this relationship to alter the reporting structure we saw earlier.

Scroll to the “Source Objects” section and create a new using the COMPANIES Object, the WORKORDER Parent Object, and the brand-new COMPANIES Relationship. Make sure to enter a Reporting Description so anyone creating an Ad Hoc report knows what this object represents.

Finally, let’s go back to Work Order Tracking and create a new report. We can now see the new Vendor Information object in the structure and select it. This is where I can access any of the attributes that the Companies object has to offer.

Once I’ve added the company Description to my report, I can go ahead and run a preview to see it in action. This version of my report is much easier to understand, and it saves me time digging around in Company records for more information. So, try creating new object relationships and adding to object structures to make your Ad Hoc reports the best they can be!

MxMobile Update June 2023 Release

ibm_mxmobile_maximo mobile_app_application_suite_report_maintenance_reliability_industry_4_work_order_enterprise_asset_management_inventory_perform_count_log_time_create_meter_reading_shipping_and_recieving_mobility_admin_service_request_issue_parts_material_approve_task_job_plan_software_upgrade

A3J Group is happy to announce the latest MxMobile releases below. As an IBM Maximo mobile solution provider, A3J Group consistently improves the functionality and features of MxMobile. Enriching the experience of MxMobile users is an important part of our user mission. Our uers enjoy the freedom of Maximo mobility and are happy request interface features, functionality needs and our team actively delivers on those requests. You can download MxMobile apps from the Apple App or Google Play store.

The releases will be available on Monday, June 12, 2023.

June Release Updates

MxMobile:

    • Ability to organize and group saved queries on the home screen
    • Ability to make work orders read-only based on status and labor timer status
    • Prompt user to save if certain screens have been edited but not committed
    • General bug fixes and performance improvements

What do you need to do?

  • Updates are available to current clients automatically by updating your apps via the appropriate app store.
  • If you would like to request a new feature or report a bug, please follow our new support ticket guidelines submitting a video and a support form describing the request.https://apps.apple.com/us/developer/a3j-group-llc/id1190321094

If your like to learn more, please fillin the form below and we’ll be in contact!

Workflow Delegates

Pretend you are going to take a real vacation, two weeks in Spain with no work laptop. You have planned and prepared for your trip but, what about all the work that is going to keep going while you are away? Work orders still need to be reviewed, assigned, and approved by someone. Purchase Orders and Invoices need to be approved so vendors can get paid. You know that giving your username and password to your co-workers so they can log in and do your work is against company policy (and no one wants to get on IT’s bad side). Lucky for you Maximo has a way to help you out so you can eat tapas in peace knowing work is being handled, it is called Workflow Delegates.

Workflow delegates allow you to select a single person to receive all records that are sent to you via workflow in Maximo. Maximo allows you to set a start and end date for your delegate to receive the records or you can just enter a start date and never select an end date.

There are some things to think about when selecting a workflow delegate.

  • Any records that were sent to them while they are acting as a delegate will stay with them even after the delegation ends.
  • For financial records if the delegate does not have sufficient limits and tolerances they will not be able to approve the record. Depending on how Maximo is configured this may result in an error message or the record may be routed to an approver with higher limits and tolerances.
  • If the delegate does not have security access to the application the record was created in then the delegate will not be able to view the record. Selecting a delegate with the equal or greater security privileges is advised.

Once you return from your trip to Spain you can log into Maximo knowing that work has continued without you.

How to set a workflow delegate:

  1. Navigate People application from Administration > Resources > People and open a Person record.maximo_workflow
  2. Populate the Workflow Delegate field and at least the Delegate From field.maximo_workflow

Automations with Selenium IDE

ibm_maximo_managed_service_predictive_maintenance_reliability_enhancements_it_support_configuration_maximo_as_a_service_cmms_system_patching_environment_upgrade_troubleshoot_change_management_automation_script_report_software_deployment_integration_data_loading_analysis_bug_fix_enterprise_asset

While automations themselves were developed to mitigate repetitive and time consuming tasks, ironically developing them faces the same challenges. The Selenium IDE web browser plugin, however, makes the process of developing automations significantly easier. The tool simplifies the process of automating tasks in a do it once, repeat forever format. In this fashion Selenium IDE reduces much of the stress and hassle associated with developing automations, providing a user-friendly interface for creating and executing test scripts.

Every element on a webpage has a unique identifier, which is necessary for directing mouse and keyboard events. These identifiers can range from simple, short strings to complex and lengthy strings. In the case of Maximo, the identifiers are typically the later, making manual testing and automation a challenging task. However, with the Selenium IDE, this process is streamlined and simplified.

With the Selenium IDE running, you can provide the application with a start page, such as the Maximo login screen. Then, press the record button and begin performing all the steps required to complete the desired process. The tool will capture all your actions, including mouse and keyboard events, and record them in detail with multiple identifiers for each element. The recorded actions can then be replayed either in Selenium IDE directly or you can use the easy-to-read notation to write your code.

In addition to its automation capabilities, the Selenium IDE also provides a flexible and scalable platform for writing and executing test scripts. The tool supports multiple programming languages, including Java, Python, C#, and Ruby, making it easy to integrate with other development tools and technologies. This allows developers to take advantage of the power of the Selenium IDE, even if they already have existing development tools and processes in place.

In conclusion, the Selenium IDE is a powerful and user-friendly tool that makes the process of developing automations easier, faster, and more efficient. With its ability to automate repetitive tasks, record and replay actions, and support multiple programming languages, the Selenium IDE provides a flexible and scalable platform for automating software testing and development tasks. Whether you are a software developer, tester, or other professional involved in software development, the Selenium IDE is a tool that you should consider using to streamline your work and improve your productivity.

MxMobile Update February 2023 Release

ibm_mxmobile_maximo mobile_app_application_suite_report_maintenance_reliability_industry_4_work_order_enterprise_asset_management_inventory_perform_count_log_time_create_meter_reading_shipping_and_recieving_mobility_admin_service_request_issue_parts_material_approve_task_job_plan_software_upgrade

A3J Group is happy to announce the latest MxMobile releases below. The releases will be available on Monday, February 13, 2023.

All apps are now able to be deployed on a windows device. If you are interested in using MxMobile on a windows device, please reach out to support@a3jgroup.com for more information.

What do you need to do?

  • Updates are available to current clients automatically by updating your apps via the appropriate app store.
  • If you would like to request a new feature or report a bug, please follow our new support ticket guidelines submitting a video and a support form describing the request.

To learn more about MxMobile or other A3J Group products and services fill in the contact form below.

MxMobile Update January 2023 Release

As an IBM Maximo mobile solution provider, A3J Group consistently improves the functionality and features of MxMobile. Enriching the experience of MxMobile users is not only our passion, but necessary. Our users enjoy the freedom of Maximo mobility and are happy to report bugs and request interface features, and our team actively delivers on those requests. You can download MxMobile apps from the Apple App or Google Play store.

A3J Group is happy to announce the latest MxMobile news below. This release is available as of Monday, January 23, 2023.

January Release Updates 

MxWork:

  • Ability to upload and remove files from Inspections
  • Conditionally hide fields on Inspections
  • Support for entering continuous meter readings on Inspections
  • New calendar date / time picker
  • General bug fixes and performance improvements

MxAsset

  • New calendar date / time picker
  • General bug fixes and performance improvements

MxAsk:

  • New calendar date / time picker
  • General bug fixes and performance improvements

What do you need to do? 

  • Updates are available to current clients automatically by updating your apps via the appropriate app store.
  • If you would like to request a new feature or report a bug, please follow our new support ticket guidelines submitting a video and a support form describing the request.
  • If you would like to opt out of receiving these communications in the future, please reply STOP to this email.

We hope you enjoy the new updates of A3J Group’s MxMobile suite of IBM Maximo mobile apps. If you have any suggestions, feature requests or need to report a bug, please contact support@a3jgroup.com. If you would like to be notified via email when A3J Group posts a new blog sign up in the form below.

MxMobile Update November 2022 Release

As an IBM Maximo mobile solution provider, A3J Group consistently improves the functionality and features of MxMobile. Enriching the experience of MxMobile users is not only our passion, but necessary. Our users enjoy the freedom of Maximo mobility and are happy to report bugs and request interface features, and our team actively delivers on those requests. You can download MxMobile apps from the Apple App or Google Play store.

A3J Group is happy to announce the latest MxMobile news below. This release is available as of Monday, November 7, 2022.

November Release Updates

MxMobile

  • The MxMeter app is now available in MxMobile!
  • The MxAsk app is now available in MxMobile!
  • The MxIssue app is now available in MxMobile!
  • Apps can now be shown and hidden within MxMobile on a user-by-user basis
      • This is controlled in Maximo through Object Structure security
      • Contact us to learn more!
  • MxIssue now allows more configuration options inside the app
    • General bug fixes and performance improvements

MxApprove

  • Enabled Azure Proxy login capability
    • General bug fixes and performance improvements

 

What do you need to do?

  • Updates are available to current clients automatically by updating your apps via the appropriate app store.  
  • If you would like to request a new feature or report a bug, please follow our new support ticket guidelines by submitting a video and a support form describing the request.  

We hope you enjoy the new updates of A3J Group’s MxMobile suite of IBM Maximo mobile apps. If you have any suggestions, feature requests or need to report a bug, please contact support@a3jgroup.com. If you would like to be notified via email when A3J Group posts a new blog sign up in the form below.

Product Launch: Ninja Fix – Duplicate Service Request Identifier

So you have an A-team that is super proactive about reporting issues and creating service requests, right? Great! However, this often can lead to scenarios where multiple users submit service requests about the same issue.

The Ninja Fix Duplicate Service Request Identifier combats that issue. This product adds a table to the Service Request application in Maximo. The table will show potential duplicate work order records created from SRs for the same asset and/or location. Only service requests that are open and not canceled, closed or completed will be displayed.

If the new SR is a duplicate, the user that created the SR can choose to link the duplicate SR to the work.

Scenario:

A call comes in from a user complaining that a room is too cold. The representative that takes the call creates a service request record, creates a work order for work to be performed and routes the work order to a technician. While the technician is on route to the location another call comes in from a different user for the same location. An entry will appear in the Potential Duplicate Work Orders table alerting the user that there may already be a work order dispatched to fix the problem at the location. This development can eliminate duplicate work and help your team stay focused.

If you find this solution valuable to your facility, you are able to purchase and download the installer which will automatically configure your Maximo Environment to include this helpful feature. Click here to purchase.

Log4J Security Vulnerability System Patching for WebSphere

At the end of 2021, many companies were faced with the log4j security vulnerabilities. This was a worldwide security that has caused a lot of problems. For users of IBM Maximo, their Maximo environments were not affected, however WebSphere was impacted. The vulnerability caused Apache Log4j to allow a remote attacker to execute arbitrary code on the system. If an attacker were to access the system they would be able to write access to the Log4j configuration and de-serialize untrusted data. If the deployed application is configured to use JMSAppender, an attacker could exploit this vulnerability to execute arbitrary code on the system. IBM has released a fixed for this issue in which the update removes the Apache Log4j from Admin Console and UDDI Registry application. The Log4j security vulnerability is resolved by upgrading WebSphere to 9.0.5.10 or newer versions. If you are running on any 8.0 version of WebSphere then upgrading to 8.5.5.20 or newer version will remedy the issue as well.

 

How to update WebSphere to the current version.

  1. Log into Maximo and go to System Information. Observe the WebSphere version.

ibm maximo system information websphere log4j security vulnerability blog

  1. Next, open the Services application and stop the following WebSphere services: IBM HTTP Server V9.0, IBM WebSphere Application Server V9.0-ctgCellManager01, IBM WebSphere Application Server V9.0-ctgNode01.

ibm maximo security patch log4j update fix

  1. Open the application, “IBM Installation Manager”.

a3j group troubleshooting ibm maximo blog log4j issue update

  1. After IBM Installation Manager opens, Click on “Update”

ibm installation manager update ibm maximo websphere log4j issue

5. Observe to see all of the packages that are available for an update. Click on the checkbox, “Update all packages with recommended updates and recommended fixes”

troubleshoot ibm maximo update websphere log4j issue a3j group

6. Log into your IBM account to download the recommended updates and fixes, then click “Next” after it finishes searching for the updates.

a3j group blog ibm maximo issue fix log4j websphere update

7. Accept the terms in the license agreements to proceed with the update.

ibm maximo patch log4j issue websphere update system

  1. In this view you can observe all of the updates that are going to occur before you click on the “Update” button. Then, click on Update.

a3j group blog patch ibm maximo log4j security vulnerability websphere update

  1. At this point, we have successfully updated WebSphere with all the recommended fixes and updates. Click “Finish”

ibm maximo blog a3j group websphere fix log4j security update

  1. Open the Services application, Start WebSphere back up by starting the following services: IBM HTTP Server V9.0, IBM WebSphere Application Server V9.0-ctgCellManager01, IBM WebSphere Application Server V9.0-ctgNode01.

security patch ibm maximo websphere integration log4j update a3j group blog

  1. Log into Maximo and go to System Information. Observe the new WebSphere version.

ibm maximo websphere integration security patch log4j issue blog update a3j group

Once, you have confirmed that your WebSphere system has been updated, you can rest assured that your Log4J security vulnerability has been remedied. As humans become more involved with technology and dependent on systems to run daily business operations, it is increasingly important to stay mindful of these types of breach opportunities. Emphasizing monitoring and remaining informed on the latest security vulnerabilities is imperative if you want your systems to remain impenetrable. Hopefully, this guide served you well in patching the Log4J security vulnerability! If you would like to receive an email when we post a new blog, subscribe below.