IBM Support

PI81428: SETTING A CLIENT IDENTIFIER IN GLOBAL CONTEXT WOULD NOT ENABLE SAM MODE IN OP APPLICATION.

Subscribe to this APAR

By subscribing, you receive periodic emails alerting you to the status of the APAR, along with a link to the fix after it becomes available. You can track this item individually or track all items by product.

Notify me when this APAR changes.

Notify me when an APAR for this component changes.

 

APAR status

  • Closed as new function.

Error description

  • If a custom trigger is defined to set a client identifier for
    all the openpages sessions created in the openpages database
    then System Admin mode cannot be enabled unless the client
    identifier is cleared from the openpages session.
    
    When a client identifier is set using
    dbms_session.set_identifier then the SQL always returns that SAM
    is not on  as below -
    
    
    exec op_context_mgr.enter_single_user_mode;
    SELECT OP_CONTEXT_MGR.is_in_single_user_mode FROM DUAL;
    
    RESULT is "N"  - not is SAM mode.
    
    Exclude OPENPAGES user in the trigger code:
    
    if user != 'OPENPAGES' then
        v_clientid := substr('SVC='||v_svcname||'
    '||v_externalname,1,63);
        dbms_session.set_identifier(v_clientid);
    end if;
    
    exec op_context_mgr.enter_single_user_mode;
    SELECT OP_CONTEXT_MGR.is_in_single_user_mode FROM DUAL;
    
    RESULT is "Y"  - is in SAM mode.
    
    
    Workaround:
    
    Clear the client identifier set using below SQL -
    
    exec DBMS_SESSION.CLEAR_IDENTIFIER
    
    
    Prerequisites:
    
    A custom logon trigger that sets a client identifier for all the
    database sessions that includes both openpages and opworkflow.
    
    
    Steps to Reproduce:
    
    Create a custom logon trigger that sets a client identifier as
    follows -
    
    TRIGGER LOGON_AUDIT_SVCNAME
    after logon on database
    declare
      v_svcname varchar2(64) := '';
      v_externalname varchar2(64) := '';
      v_clientid varchar2(64) := '';
      v_proxy varchar2(64) := '';
      v_lproxy varchar2(64) := '';
    begin
      SELECT substr(sys_context('userenv','service_name'),1,63) into
    v_svcname FROM dual;
      if v_svcname is not null
       then
          SELECT
    substr(sys_context('userenv','enterprise_identity'),1,63) into
    v_extern alname FROM dual;
          SELECT
    substr(sys_context('userenv','proxy_enterprise_identity'),1,63)
    into v_ proxy FROM dual;
          SELECT substr(sys_context('userenv','proxy_user'),1,63)
    into v_lproxy FROM dua l;
          if v_externalname is not null then
            if instr(v_externalname,',',1,2) > 0 then
               v_externalname := 'EUS-USR: ' ||
    substr(v_externalname,1,instr(v_externalnam e,',',1,2)-1);
            end if;
          elsif v_proxy is not null then
           if instr(v_proxy,',',1,2) > 0 then
              v_externalname := 'EUS-PRX: ' ||
    substr(v_proxy,1,instr(v_proxy,',',1,2)-1);
           end if;
          elsif v_lproxy is not null then
           v_externalname := 'LOCAL-PRX: ' || substr(v_lproxy,1,32);
          else
             v_externalname := '';
         end if;
         if instr(v_svcname,'.') > 0 then
           v_svcname := substr(v_svcname,1,instr(v_svcname,'.')-1);
        end if;
        v_clientid := substr('SVC='||v_svcname||'
    '||v_externalname,1,63);
        dbms_session.set_identifier(v_clientid);
     end if;
    end;
    
    
    Expected Results:
    
    For all openpages and opworkflow sessions, determine if there is
    a client identifier and if it exists  then clear the identifier
    for all the openpages and opworkflow sessions.
    
    Actual Results:
    
    With a client identifier set, System Admin cannot be enabled as
    the SQL to determine SAM status always comes as false.
    
    
    Error Message:
    
    There are no errors other than the SQL to determine SAM status
    always comes as false.
    

Local fix

Problem summary

Problem conclusion

  • Problem:
    If the client has a logon trigger that sets the
    CLIENT_IDENTIFIER via DBMS_SESSION then SAM mode will not work.
    Cause:
    This setting of the client identifier causes our code in
    OP_CONTEXT_MGR to fail since it expects the client identifier
    to match the client identifier with the session.
    Environment:
    All environments using the Oracle database
    Solution:
    Modify the package body OP_CONTEXT_MGR
    

Temporary fix

Comments

APAR Information

  • APAR number

    PI81428

  • Reported component name

    OPENPAGES FCM

  • Reported component ID

    5725D51FC

  • Reported release

    710

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt / Xsystem

  • Submitted date

    2017-05-11

  • Closed date

    2018-03-22

  • Last modified date

    2018-03-22

  • APAR is sysrouted FROM one or more of the following:

  • APAR is sysrouted TO one or more of the following:

Modules/Macros

  • 999
    

Fix information

  • Fixed component name

    OPENPAGES FCM

  • Fixed component ID

    5725D51FC

Applicable component levels

[{"Business Unit":{"code":"BU048","label":"IBM Software"},"Product":{"code":"SSC8G6Z","label":"Financial Controls Management"},"Component":"","ARM Category":[],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"710","Edition":"","Line of Business":{"code":"","label":""}}]

Document Information

Modified date:
22 March 2018