12 Replies Latest reply: May 16, 2013 8:59 PM by Frank.Hampshire-Oracle RSS

    Getting preseedId and user for plugin

    dos1
      Hi,

      For using autosave functionality from OPA to Siebel automatically once goal is known, I am using below code which is working fine. I have below question

      1.For new session which are pre-seeded from siebel and not yet saved, could I generate following caseId
      ",<user>,<preseedId>,<mapping>"
      2. How do I get preseedId and user value in the plugin so that I could replace it dynamically?


      below is the code
      --------------------------------------------------------------
      <code>

      package com.oracle.determinations.web.platform.example;

      import com.oracle.determinations.interview.engine.InterviewSession;
      import com.oracle.determinations.interview.engine.SecurityToken;
      import com.oracle.determinations.interview.engine.security.BasicSecurityToken;
      import com.oracle.determinations.web.platform.controller.SessionContext;
      import com.oracle.determinations.web.platform.eventmodel.events.OnGetScreenEvent;
      import com.oracle.determinations.web.platform.eventmodel.events.OnInvestigationEndedEvent;
      import com.oracle.determinations.web.platform.eventmodel.handlers.OnGetScreenEventHandler;
      import com.oracle.determinations.web.platform.eventmodel.handlers.OnInvestigationEndedEventHandler;
      import com.oracle.determinations.web.platform.plugins.PlatformSessionPlugin;
      import com.oracle.determinations.web.platform.plugins.PlatformSessionRegisterArgs;
      import java.util.*;

      public class AutoSaveTrigger implements OnInvestigationEndedEventHandler {

      public AutoSaveTrigger() {
      //parameter-less constructor to satisfy Plugin requirement
      }


      //Triggers autosaving when an investigation of a goal finishes
      public void handleEvent(Object sender, OnInvestigationEndedEvent event) {
                SessionContext currentContext = event.getSessionContext();

      SecurityToken token = new BasicSecurityToken("");
      InterviewSession currentSession = currentContext.getInterviewSession();
      String caseID = currentContext.getCaseID();

      //This calls the DataAdaptor save() when the investigation finishes, thus saving the user's answer to the last Question
      if (caseID != null) {

      String newCaseID = currentSession.getDataAdaptor().save(token, currentContext.getCaseID(), currentSession);

      if (!"".equals(newCaseID))
      currentContext.setCaseID(newCaseID);
      }
                else{
           
                String newCaseID = currentSession.getDataAdaptor().save(token,",0-1,42-DFD,PRD",currentSession);

           if (!"".equals(newCaseID))
      currentContext.setCaseID(newCaseID);     
                }
      }

      public PlatformSessionPlugin getInstance(PlatformSessionRegisterArgs args) {
      //Demonstration of a Plugin only registering if the current rulebase is 'ExtFrameworkAutoSave'
      if (args.getContext().getInterviewSession() != null &&
      (args.getContext().getInterviewSession().getRulebase().getIdentifier().equals("PRD"))) {
                     
      return new AutoSaveTrigger();
      } else {
      return null;
      }
      }
      }

      </code>

      Edited by: Dos1 on May 6, 2013 2:34 AM

      Edited by: Dos1 on May 6, 2013 7:15 AM
        • 1. Re: Getting preseedId and user for plugin
          Frank.Hampshire-Oracle
          I'm not 100% sure that I understand the question, but I'll try to explain.

          You shouldn't need to set the caseID directly. The data-adapter will set the caseID for you

          1.For new session which are pre-seeded from siebel and not yet saved, could I generate following caseId
          ",<user>,<preseedId>,<mapping>"
          If a session has been preseeded, it will already have a caseID and you can get it from the SessionContext (you can see this in the code you attached).
          2. How do I get preseedId and user value in the plugin so that I could replace it dynamically?
          The user id is the logged in user in web determinations. This is determined by the start session parameter "user"

          The preseed id is contained in the caseID sent in the start session and indicates the siebel object used to preseed the session. Once the case is saved, its merely an indication of where the original pre-seeding data came from.

          In either case, the values are contained in the caseID which can be got from the SessionContext .







          >
          below is the code
          --------------------------------------------------------------
          <code>

          package com.oracle.determinations.web.platform.example;

          import com.oracle.determinations.interview.engine.InterviewSession;
          import com.oracle.determinations.interview.engine.SecurityToken;
          import com.oracle.determinations.interview.engine.security.BasicSecurityToken;
          import com.oracle.determinations.web.platform.controller.SessionContext;
          import com.oracle.determinations.web.platform.eventmodel.events.OnGetScreenEvent;
          import com.oracle.determinations.web.platform.eventmodel.events.OnInvestigationEndedEvent;
          import com.oracle.determinations.web.platform.eventmodel.handlers.OnGetScreenEventHandler;
          import com.oracle.determinations.web.platform.eventmodel.handlers.OnInvestigationEndedEventHandler;
          import com.oracle.determinations.web.platform.plugins.PlatformSessionPlugin;
          import com.oracle.determinations.web.platform.plugins.PlatformSessionRegisterArgs;
          import java.util.*;

          public class AutoSaveTrigger implements OnInvestigationEndedEventHandler {

          public AutoSaveTrigger() {
          //parameter-less constructor to satisfy Plugin requirement
          }


          //Triggers autosaving when an investigation of a goal finishes
          public void handleEvent(Object sender, OnInvestigationEndedEvent event) {
                    SessionContext currentContext = event.getSessionContext();

          SecurityToken token = new BasicSecurityToken("");
          InterviewSession currentSession = currentContext.getInterviewSession();
          String caseID = currentContext.getCaseID();

          //This calls the DataAdaptor save() when the investigation finishes, thus saving the user's answer to the last Question
          if (caseID != null) {

          String newCaseID = currentSession.getDataAdaptor().save(token, currentContext.getCaseID(), currentSession);

          if (!"".equals(newCaseID))
          currentContext.setCaseID(newCaseID);
          }
                    else{
               
                    String newCaseID = currentSession.getDataAdaptor().save(token,",0-1,42-DFD,PRD",currentSession);

               if (!"".equals(newCaseID))
          currentContext.setCaseID(newCaseID);     
                    }
          }

          public PlatformSessionPlugin getInstance(PlatformSessionRegisterArgs args) {
          //Demonstration of a Plugin only registering if the current rulebase is 'ExtFrameworkAutoSave'
          if (args.getContext().getInterviewSession() != null &&
          (args.getContext().getInterviewSession().getRulebase().getIdentifier().equals("PRD"))) {
                         
          return new AutoSaveTrigger();
          } else {
          return null;
          }
          }
          }

          </code>

          Edited by: Dos1 on May 6, 2013 2:34 AM

          Edited by: Dos1 on May 6, 2013 7:15 AM
          • 3. Re: Getting preseedId and user for plugin
            dos1
            Thanks Frank

            What I was looking for
            1. CaseId seems optional parameter as per documentation, however it does not work. If I just provide CaseId(hard coded to ",0-1,42-DFD,PRD" for testing purpose) as input to data adpater :-
            currentSession.getDataAdaptor().save(token,",0-1,42-DFD,PRD",currentSession);
            It works well. My question is whether to pass caseId always in this format ",0-1,42-DFD,PRD" to data adapter when the session is preseeded from Siebel and not yet saved into Siebel.

            Also as per your suggestion, the caseId comes as Null foe these type of session in to plugin hence there is else part in the code.

            2. How do I get user,rule base name, current Siebel row_id in plugin so that I could substitute it directly if above solution is applicable.

            Edited by: Dos1 on May 7, 2013 7:57 AM
            • 4. Re: Getting preseedId and user for plugin
              Frank.Hampshire-Oracle
              Dos1 wrote:
              Thanks Frank

              What I was looking for
              1. CaseId seems optional parameter as per documentation, however it does not work. If I just provide CaseId(hard coded to ",0-1,42-DFD,PRD" for testing purpose) as input to data adpater :-
              currentSession.getDataAdaptor().save(token,",0-1,42-DFD,PRD",currentSession);
              It works well. My question is whether to pass caseId always in this format ",0-1,42-DFD,PRD" to data adapter when the session is preseeded from Siebel and not yet saved into Siebel.

              Also as per your suggestion, the caseId comes as Null foe these type of session in to plugin hence there is else part in the code.

              2. How do I get user,rule base name, current Siebel row_id in plugin so that I could substitute it directly if above solution is applicable.

              Edited by: Dos1 on May 7, 2013 7:57 AM
              Dos,

              There are two cases where you need to think about saving.

              1. A new interview where no data has been got from Siebel
              2. An exising interview where data has been got from Siebel

              For case 1. ThecaseID will be null, but the DataAdaptor can accept a null or blank caseID and will return the "saved" caseID when it completes. You shouldn't need to do anything here.

              For case 2. The caseID will be set already and can be got from the session context. If this session has never been saved before the caseID will be modified (the addition of the string before the first comma).

              In either case, you don't need to worry about constructing the caseID.

              Cheers
              Frank
              • 5. Re: Getting preseedId and user for plugin
                dos1
                Thanks Frank,

                1. When I use currentSession.getDataAdaptor().save(token,"",currentSession); the plugin raise the exception.

                2. As a workaround, I am trying to use deprecated caseID in symbolic URL with format as ",<user>,<Source Object Id>,<rulebase>".

                For pt1 exception in the tomcat log file:-
                ==========================

                80641 [http-8080-10] ERROR com.oracle.determinations.web.siebel.SiebelOutcomeMapping - Decision report property detected, but value null is not a valid outcome
                80641 [http-8080-10] ERROR com.oracle.determinations.web.siebel.SiebelOutcomeMapping - Decision report property detected, but value null is not a valid outcome
                80641 [http-8080-10] ERROR com.oracle.determinations.web.siebel.SiebelOutcomeMapping - Decision report property detected, but value null is not a valid outcome
                80641 [http-8080-10] ERROR com.oracle.determinations.web.siebel.SiebelOutcomeMapping - Decision report property detected, but value null is not a valid outcome
                80641 [http-8080-10] ERROR com.oracle.determinations.web.siebel.SiebelOutcomeMapping - Decision report property detected, but value null is not a valid outcome
                80641 [http-8080-10] ERROR com.oracle.determinations.web.siebel.SiebelOutcomeMapping - Decision report property detected, but value null is not a valid outcome
                80641 [http-8080-10] ERROR com.oracle.determinations.web.siebel.SiebelOutcomeMapping - Decision report property detected, but value null is not a valid outcome
                80641 [http-8080-10] WARN com.oracle.determinations.web.siebel.SiebelBOClient - External Id Attribute SRNum does not exist on the global entity in this rulebase.
                81485 [http-8080-10] ERROR com.oracle.determinations.web.platform.templatingengine.ErrorRenderer - Could not save session data to siebel
                com.oracle.determinations.interview.engine.exceptions.PluginException: Could not save session data to siebel
                     at com.oracle.determinations.web.siebel.SiebelBOClient.saveSession(SiebelBOClient.java:155)
                     at com.oracle.determinations.web.siebel.SiebelDataAdapter.save(SiebelDataAdapter.java:214)
                     at com.oracle.determinations.web.platform.example.AutoSaveTrigger.handleEvent(AutoSaveTrigger.java:42)
                     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
                     at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
                     at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
                     at java.lang.reflect.Method.invoke(Unknown Source)
                     at com.oracle.util.reflection.ClassWrapper.invokeMethod(ClassWrapper.java:248)
                     at com.oracle.util.plugins.events.EventDispatcher.fireEvent(EventDispatcher.java:214)
                     at com.oracle.determinations.interview.util.EventUtils.fireEvent(EventUtils.java:29)
                     at com.oracle.determinations.web.platform.controller.actions.InvestigateAction.submit(InvestigateAction.java:97)
                     at com.oracle.determinations.web.platform.servlet.WebDeterminationsServlet.doPost(WebDeterminationsServlet.java:134)
                     at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
                     at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
                     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
                     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
                     at com.oracle.determinations.web.platform.util.CharsetFilter.doFilter(CharsetFilter.java:46)
                     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
                     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
                     at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
                     at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
                     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
                     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
                     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
                     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
                     at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861)
                     at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606)
                     at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
                     at java.lang.Thread.run(Unknown Source)
                Caused by: com.oracle.determinations.interview.engine.exceptions.InterviewEngineException: Error running sub-process 'Policy Automation SaveSession Impl' at step 'Save Session'.(SBL-BPR-00183)
                     at com.oracle.determinations.web.siebel.SaveSessionRequest.sendRequest(SaveSessionRequest.java:71)
                     at com.oracle.determinations.web.siebel.SiebelBOClient.saveSession(SiebelBOClient.java:133)
                     ... 28 more
                Caused by: Error running sub-process 'Policy Automation SaveSession Impl' at step 'Save Session'.(SBL-BPR-00183)
                     at org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder.java:222)
                     at org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.java:129)
                     at org.apache.axis.encoding.DeserializationContext.endElement(DeserializationContext.java:1087)
                     at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(Unknown Source)
                     at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(Unknown Source)
                     at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(Unknown Source)
                     at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source)
                     at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(Unknown Source)
                     at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
                     at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
                     at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
                     at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
                     at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
                     at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
                     at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl.parse(Unknown Source)
                     at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)
                     at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)
                     at org.apache.axis.Message.getSOAPEnvelope(Message.java:435)
                     at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:62)
                     at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206)
                     at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
                     at org.apache.axis.client.Call.invoke(Call.java:2767)
                     at org.apache.axis.client.Call.invoke(Call.java:2443)
                     at org.apache.axis.client.Call.invoke(Call.java:2366)
                     at org.apache.axis.client.Call.invoke(Call.java:1812)
                     at com.oracle.determinations.siebelinbound.PolicyAutomationSaveSessionStub.policyAutomationSaveSession(PolicyAutomationSaveSessionStub.java:260)
                     at com.oracle.determinations.web.siebel.SaveSessionRequest.sendRequest(SaveSessionRequest.java:69)
                     ... 29 more
                ==================================
                Inbound Web service call is throwing below exception
                ===================================
                <?xml version="1.0" encoding="UTF-8"?><SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Body><SOAP-ENV:Fault><faultcode>SOAP-ENV:Server</faultcode><faultstring>Error running sub-process &apos;Policy Automation SaveSession Impl&apos; at step &apos;Save Session&apos;.(SBL-BPR-00183)</faultstring><detail><siebelf:siebdetail xmlns:siebelf="http://www.siebel.com/ws/fault"><siebelf:logfilename>siebel.log</siebelf:logfilename><siebelf:errorstack><siebelf:error><siebelf:errorcode>SBL-BPR-00183</siebelf:errorcode><siebelf:errorsymbol></siebelf:errorsymbol><siebelf:errormsg>Error running sub-process &apos;Policy Automation SaveSession Impl&apos; at step &apos;Save Session&apos;.(SBL-BPR-00183)</siebelf:errormsg></siebelf:error><siebelf:error><siebelf:errorcode>SBL-BPR-00162</siebelf:errorcode><siebelf:errorsymbol></siebelf:errorsymbol><siebelf:errormsg>Error invoking service &apos;EAI Siebel Adapter&apos;, method &apos;Synchronize&apos; at step &apos;Upsert&apos;.(SBL-BPR-00162)</siebelf:errormsg></siebelf:error><siebelf:error><siebelf:errorcode>SBL-DBC-00111</siebelf:errorcode><siebelf:errorsymbol></siebelf:errorsymbol><siebelf:errormsg>Method &apos;WriteRecord&apos; of business component &apos;Policy Automation Session&apos; (integration component &apos;Policy Automation Session&apos;) for record with search specification &apos;[Id] = &quot;42-1R13&quot;&apos; returned the following error:&quot;An error has occurred writing to a record.

                Please continue or ask your systems administrator to check your application configuration if the problem persists.(SBL-DBC-00111)&quot;(SBL-EAI-04451)</siebelf:errormsg></siebelf:error></siebelf:errorstack></siebelf:siebdetail></detail></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>

                =====================================================================================
                Siebel Log file content
                =====================================================================================

                INSERT INTO SIEBEL.S_PA_SESSION (
                CONFLICT_ID,
                DB_LAST_UPD_SRC,
                DB_LAST_UPD,
                LAST_UPD,
                CREATED,
                LAST_UPD_BY,
                CREATED_BY,
                MODIFICATION_NUM,
                ROW_ID,
                ASSOC_RULE_DEF,
                EXTERNAL_ID,
                RULE_DEF_ID,
                SESSION_TS)
                VALUES (?, ?, current utc timestamp, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)


                ObjMgrSqlLog     Detail     4     00000002518a16c0:0     2013-05-08 19:59:05     Bind variable 1: 0

                ObjMgrSqlLog     Detail     4     00000002518a16c0:0     2013-05-08 19:59:05     Bind variable 2: Object Manager - Default

                ObjMgrSqlLog     Detail     4     00000002518a16c0:0     2013-05-08 19:59:05     Bind variable 3: 05/08/2013 14:29:05

                ObjMgrSqlLog     Detail     4     00000002518a16c0:0     2013-05-08 19:59:05     Bind variable 4: 05/08/2013 14:29:05

                ObjMgrSqlLog     Detail     4     00000002518a16c0:0     2013-05-08 19:59:05     Bind variable 5: 1-GHAQAN

                ObjMgrSqlLog     Detail     4     00000002518a16c0:0     2013-05-08 19:59:05     Bind variable 6: 1-GHAQAN

                ObjMgrSqlLog     Detail     4     00000002518a16c0:0     2013-05-08 19:59:05     Bind variable 7: 0

                ObjMgrSqlLog     Detail     4     00000002518a16c0:0     2013-05-08 19:59:05     Bind variable 8: 42-1QYM

                ObjMgrSqlLog     Detail     4     00000002518a16c0:0     2013-05-08 19:59:05     Bind variable 9: CDT

                ObjMgrSqlLog     Detail     4     00000002518a16c0:0     2013-05-08 19:59:05     Bind variable 10: attr-not-def

                ObjMgrSqlLog     Detail     4     00000002518a16c0:0     2013-05-08 19:59:05     Bind variable 11: Unknown

                ObjMgrSqlLog     Detail     4     00000002518a16c0:0     2013-05-08 19:59:05     Bind variable 12: 05/08/2013 23:59:05

                ObjMgrBusCompLog     Error     1     00000002518a16c0:0     2013-05-08 19:59:05     (wccon.cpp (2156)) SBL-DBC-00111: An error has occurred writing to a record.

                Please continue or ask your systems administrator to check your application configuration if the problem persists.

                ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
                After running the sql with bind variables populated, I got below error message:-

                Column 'USER_ID' in table 'S_PA_SESSION' cannot be NULL
                • 6. Re: Getting preseedId and user for plugin
                  Frank.Hampshire-Oracle
                  1. When I use currentSession.getDataAdaptor().save(token,"",currentSession); the plugin raise the exception.
                  Use null instead of blank for a new case.
                  currentSession.getDataAdaptor().save(token, null ,currentSession);
                  THis should definitely work.
                  • 7. Re: Getting preseedId and user for plugin
                    dos1
                    Hi Frank

                    Tried below code line with no luck:-
                    currentSession.getDataAdaptor().save(token, null ,currentSession);

                    The error signature was also same as posted above.

                    I have modified Siebel Business component "Policy Automation Session"|| Field "User ID" to have "post default" value as current webservice userId and it did let me autosave the session. This is not feasible workaround as it will always save webservice UserId not the actual OPA session userId.

                    What I observed from web determination screen(top right):-

                    1. Generated case Id is <row-id>,,<row-id>,<rulebase> when autosave happens from plugin.
                    2. Generated case Id is <row-id>,<LOGIN>,<row-id>,<rulebase> when I presses Save button of OPA(before autosave happens.)

                    Surely in autosave plugin, it is missing UserId as a result when it tries to save to Siebel, it fails as User Id is non nullable column in Siebel. Could we set context in the plugin for user so that during autosave it could take it?Could you throw light on it?

                    Thx
                    Dos
                    • 8. Re: Getting preseedId and user for plugin
                      dos1
                      hi.

                      Could someone let me know where I am wrong?
                      • 9. Re: Getting preseedId and user for plugin
                        Ravindra D-Oracle
                        CaseID in OPA for a new case: sessionID,userID,rowid,MappingName

                        Session ID in not present for a new case while if it is preseed(loading a session) will have existing sessionID from siebel.

                        The userID passed on should be a valid siebel userID to create a case.
                        I will suggest to pass UserID as parameter to OWD and use that to trigger the save.

                        before saving the caseID should looklike ,userID,,MappingName
                        after saving Session Id,userID,RowID,MappingName

                        Let me know if this helps.

                        Thanks!
                        Ravindra
                        • 10. Re: Getting preseedId and user for plugin
                          Frank.Hampshire-Oracle
                          Dos,

                          There will be a user Id for the session. Without being specified when start session is called (http://...../startsession/rulebase?user=<user>) it will be "guest". The user name is got from the SecruityToken passed in the the save call. If you are creating a new empty token (eg: new SecurityToken() ) that will be the reason you are not getting a user name.

                          The best option is to get the correct SecruityToken from the SessionContext (ie getSecurityToken() method). That should ensure that you have a username even it is just "guest".

                          Cheers
                          Frank
                          • 11. Re: Getting preseedId and user for plugin
                            dos1
                            Thanks Frank,

                            We are in the assessment stage and have found workaround to pass CaseId in one of the OPM variable as ",<<User Id>>,<<Source Object Id>>,<<Rulebase>>". WE are getting the value in the plugin and passing this caseId in the else part where it was giving the error.

                            PS: We thought of passing caseId as URL argument in the symbolic URL but could not get success. We are in 10.4.2 and Siebel connector guide says this is deprecated but still could be used. However we see "Bad Request" in the tomcat server log file.
                            • 12. Re: Getting preseedId and user for plugin
                              Frank.Hampshire-Oracle
                              Dos, the reason we deprecated caseID was Siebel's inability to url encoded the arguments when they had been concatenated into a single request.

                              caseID should work, however, if the siebel object id contains characters that need to be encoded for an url you will need to use the preseedID which is a single argument and can be encoded.

                              Cheers
                              Frank