Maximo

Maximo

Come for answers, stay for best practices. All we're missing is you.

 View Only
Expand all | Collapse all

MIF: E-mail addresses being Case Sensitive causing Inbound message to FAIL

  • 1.  MIF: E-mail addresses being Case Sensitive causing Inbound message to FAIL

    Posted Tue August 02, 2022 03:29 PM
    I'm using the MIF to update Person records, using the default Enterprise Service MXPERSONInterface.

    When the person has a primary email address "john@mail.com" and an inbound interface message has a PRIMARYEMAIL with value "John@mail.com" (with capital) ... then an error occurs: "record already exists".Ensure that the key value for given record is Unique

    If the inbound message has address "john@mail.com" (without capital) there's no error.

    If the inbound message has address "JOhn@mail.com" (mixed letters) then an error occurs: "Record already exists".Ensure that the key value for given record is Unique.

    Globally, e-mail addresses are not case sensitive. But Maximo sees an address with different casing as both different and identical to the existing one.

    Could anyone suggest some solution how can we make this work for So that Interface message process Successfully.

    ------------------------------
    Reetika Agrawal
    ------------------------------

    #AssetandFacilitiesManagement
    #Maximo


  • 2.  RE: MIF: E-mail addresses being Case Sensitive causing Inbound message to FAIL

    Posted Wed August 03, 2022 08:26 AM
    Email in Maximo was intended to be made unique in the 7.1 release. For the longest time, customers on case sensitive database platforms (Oracle/DB2) were able to utilize different casing for the email address. But this can cause problems because the assumption was that email was unique. So when we perform the check, we now get the lower version of it (converting their value and the value in the database to lowercase) to do the comparison when it's changed. Unfortunately in your scenario, what's occurring is the Java strings are different so we're triggering the validation on the field and throwing the error. 

    You can try and open a case because we could handle this scenario better. Whether it would be accepted as a defect or require an enhancement request is hard to predict. 

    In the interim, you could create an object structure inbound processing automation script to change the value from the external to match what exists in the database before processing. We have some documentation on object structure automation scripts here: https://ibm-maximo-dev.github.io/maximo-autoscript-documentation/integration/osevents

    ------------------------------
    Steven Shull
    ------------------------------



  • 3.  RE: MIF: E-mail addresses being Case Sensitive causing Inbound message to FAIL

    Posted Wed August 03, 2022 08:46 AM

    I created Integration script on Enterprise service/ External exit/Request.
    Below is the code .
    I am trying to read personid data from inbound XML and then fetching data  from EMAIL  table and match the personid
    if it matches then simply fetch the emailaddress from EMAIL table for that person and Set it to record.

    However issue i am getting is the message is getting processed but the email id which it set on person records is same as received in XML.
    Any Suggestions on this??

    SYNC.X1PERSONINTERFACE.EXTEXIT.IN

    from psdi.server import MXServer

    from psdi.util.logging import MXLoggerFactory

    from psdi.util.logging import MXLogger

    log = MXLoggerFactory.getLogger("maximo.script.customscript")

    erData.breakData()

    mxServer = MXServer.getMXServer()

    userInfo = mxServer.getSystemUserInfo()

    personID = str(erData.getCurrentData('PERSONID'));

    try:

                emailSet = mxServer.getMboSet("EMAIL", userInfo)

                emailSet.setWhere("PERSONID = '" + personID + "'" )         

                log.info("email Set1"+str(emailSet.getCompleteWhere()))

                log.info("email Set2"+str(emailSet.count()))

                if not emailSet.isEmpty(): # Check if email is existing

                    emailID = emailSet.moveFirst().getString("EMAILADDRESS")

                    erData.setCurrentData("PRIMARYEMAIL", emailID)               

                      

    finally:

                emailSet.close()



    ------------------------------
    Reetika Agrawal
    ------------------------------