Seifware Inc.
1-87-SEIFWARE
Workflow email filter is a SaaS friendly extension of the Maximo standard workflow email notifications allowing end-users to selectively receive emails that match their level of interest.
This article demonstrates how emails can be managed through filters matching the level of interest of intended audience. Since every organization has its unique requirements, the below suggested solution is intended for general use only. Please contact our professional services for demo, guaranteed solutions/support and extended solutions to workflow delegations and re-assignments.
Background:
The Maximo standard functionality enables end-users to select their preferred level of interest for workflow email notifications once new assignments are activated. End-users can select one of the below four possibilities:
Issue:
The standard workflow email notification functionality does not provide end-users with an option to filter (or receive all) email notifications based on the level of email importance and end-users preference. Often, customers complain about receiving too many workflow email notifications that are distracting them from other important emails in their inbox. However, certain email notifications for document review and approval are crucial and would require end-user’s attention.
Solution Design:
Adding too many roles, groups and communication templates in Maximo workflow with detailed logical nodes are not ideal and would introduce unnecessary complexity that can be avoided.
Adding a filter to the email (or communication template) and another filter for end-user’s level of interest will allow Maximo to send the right message to the right party at the right time.
The suggested solution is SaaS friendly (works on IBM Cloud, does not require additional efforts for upgrade and does not require package re-deployment). Also, this solution is mutually exclusive with the standard Maximo workflow notification:
Technical Details:
Follow these steps to enable the Workflow Email Filter extension:
Object | Attribute Name | Database Type | Domain ID |
PERSON | ENABLEEMAILFILTER | YORN | |
EMAILFILTER | INTEGER | EMAILFILTER | |
COMMTEMPLATE | EMAILFILTER | INTEGER | EMAILFILTER |
Domain ID | Domain Type | Value | Description |
EMAILFILTER | NUMERIC | 25 | Highest Importance |
50 | Medium Importance | ||
75 | Low Importance | ||
100 | No Filter (All) |
#####################################################################
#### Source: Seifware.com ###########################################
### For Maximo end-users only: License: Restricted (GPL V3 ) #######
############# https://www.gnu.org/licenses/gpl-3.0.en.html ##########
############# Keep this header section when source code is copied####
### For Solution providers: ########################################
#Restricted (Please contact us for more information).################
#####################################################################
from java.lang import String
from psdi.mbo import MboRemote
maxStatus=mbo.getTranslator().toInternalString("WFASGNSTATUS", mbo.getString("ASSIGNSTATUS"))
prevMaxStatus=mbo.getTranslator().toInternalString("WFASGNSTATUS", mbo.getMboValue("ASSIGNSTATUS").getPreviousValue().asString())
person=mbo.getMboSet("ASSIGNEE").getMbo(0)
javaStr=String.forName("java.lang.String")
mboRemote=MboRemote.forName("psdi.mbo.MboRemote")
if "ACTIVE"==maxStatus and "ACTIVE"!=prevMaxStatus and not (person is None) and mbo.getBoolean("EMAILNOTIFICATION"):
personFilter=person.getInt("emailfilter")
if personFilter is None:
personFilter=100
wfStandardMailElection=mbo.getTranslator().toInternalString("WFMAILELECTION", person.getString("WFMAILELECTION"))
comTemplate=mbo.getMboSet("COMMTEMPLATE").getMbo(0)
comTemplateFilter=comTemplate.getInt("emailfilter")
if comTemplateFilter is None:
comTemplateFilter=100
if "NEVER"==wfStandardMailElection and person.getBoolean("enableemailfilter"):
if personFilter>=comTemplateFilter:
invokesubsValues=mbo.getClass().getDeclaredMethod("substituteValues",javaStr,mboRemote)
invokesubsValues.setAccessible(True)
invokesubsValues.invoke(mbo,"DESCRIPTION",mbo.getWFInstance().getControlledMbo())
mbo.sendNotification(person)
* Licensing may apply
Our approach is to keep things simple and keep you informed of all available options. Contact us for more details!