Wednesday, November 28, 2012

Peopletools 8.52 Integration Network WorkCenter (Part 2/2)

On the first part, we’ve seen how Integration Network WorkCenter makes the live much easier for those who are setting messaging (Gateway, nodes, domain). For each component, the WorkCenter marks as correct or not. It will most likely make it all right, and make avoid sometime pain to know what is missing.

Here after I’ll try to go a little bit further and go to the menu. Setting the messaging themselves.

The first part is rather obvious :
Be sure your environment is ready to be used (Configuration Status):
INW_130
The Gateway menu goes to the standard Gateway page, Node Network to the node definition and Domain to the domain status. All keeping the left-frame.

1. Network Status
This is the home page of WorkCenter (but also from the Administration part). In case of multiple nodes, you are able to ping all at once and have all the error/success status at once as well.
INW_111 

2. Introspection
Probably one of the best part.
Going to the service/operation and check if deployment is required on local or remote node. I deliberately chose USER_PROFILE for the coming tests below :
INW_068
Here, I have no remote node, so, go for the local node, and click on “continue” :
INW_069 
Run the introspection process :
INW_071
If necessary, check the non-deployed operation, and run it :
INW_072
INW_073
This obviously can be done through the former Integration Broker menu, but here looks much easy, all on board.

And if you have a remote node, you can also check it (I have a FSCM91 database, created a remote node on a separate gateway).
INW_112
INW_120
You may have the following after running the introspection :
INW_113
Well, could be more friendly message, isn’t it ? It could say which routing…
Fortunately, the target logfile says a little bit more :
PSAPPSRV.3756 (1) [11/28/12 14:29:28 VP1@JavaClient IntegrationSvc](3) Unable to find a Routing corresponding to the incoming request message.External Operation Name: GETNETWORKMETADATA.v1Requesting Node: PSFT_HROperation Type: syncUserId: PS
[psoft@orion6 LOGS]$

3. Service operation permission
Rather easy to understand, but again, instead of going to special menu, manage all from WorkCenter. From within the previous error message, here we go :
INW_122
INW_123
PS and VP1 (on both sides) have already this permission list granted through the new role I created earlier (see my previous article). So it should be something else. Let’s check the service operation and routing (unfortunately, it cannot be done from the WorkCenter).
Here we can see the inbound routing is not active, let’s activate (on both sides):
INW_124
INW_125
Save and quit, return to WorkCenter, and retry the introspection previously failed on remote node.

4. Introspection (bis) :

Going back to the WorkCenter introspection of USER_PROFILE onto the remote node :
INW_127 
And magically, here we can see all what is required on remote system to make it works :
INW_128 
INW_129 
That’s rather nice, the system is apparently able to do most of the tasks automatically whereas by the past it was to be done manually one by one, and most of the time we forgot one little thing which we can spend quite a lot of time on.
So, let’s follow the advices and do only the automatic steps. Here again, the message of the manual step is truncated.
Anyway, let’s apply the automatic steps :
INW_138
INW_140 
All the automatic actions have not been applied, again for some, there’s a missing routing. From the logfile :
PSAPPSRV.3770 (3) [11/28/12 15:22:47 VP1@JavaClient IntegrationSvc](3) Unable to find a Routing corresponding to the incoming request message.External Operation Name: EXECUTEDEPLOYMENT.v1Requesting Node: PSFT_HROperation Type: syncUserId: PS
EXECUTEDEPLOYMENT, as for the activated previous routings, is from service IB_NETWORK. Instead of going in error one by one, check all at once and activate the corresponding routings on local/remote sides.
You should actually activate the routing of all the operations of the service IB_NETWORK to be able to work properly within WorkCenter.
INW_141
Once all the routing have been activated, on both sides, rerun the introspection and deployment.
Finally, re-run the introspection after all automatic actions have been done :
INW_145
Nothing else is required. Note here, that’s only for a one-way message, in my case HCM => FSCM. If you want HCM <=> you need to do it on both sides.

5. Network Monitor Setup
For setting the monitoring of messages’ page
INW_089
The “IB Profile Status On” checkbox makes (or makes not) the statistics to be gathered.

6. Network Monitor
We will retrieve here the list of messages. For the need of this test case, previous step configured the service USER_PROFILE. So, let’s create a new user (a copy) and see what happens over here.
INW_147
Coming back to the Network Monitor of WorkCenter, we can see all the local messages processed :
INW_148 
If we go to the details :
INW_149 
The message has been send to the remote node PSFT_EP.
It can be seen from the subscription contracts tab once the proper node is selected :
INW_153
Rather nice, we don’t have to go on the remote system to check if the message has been applied.

7. Transactional tracker
More or less the same as the Monitor network, but dedicated to the remote(s) node(s).
INW_150
INW_151
And if a message has been sent to more than one node, we can see which ones in details.

In the end we can say that Integration Network WorkCenter is a great help for the administrator and a nice panel of all the commands and tests required to do all the networking/messaging configuration and checking. And that’s huge.

Note that it is planned to have several improvements on this part within the next Peopletools release (please read the Peopletools 8.53 RVP). Wait and see.

Nicolas.

Monday, November 26, 2012

Peopletools 8.52 Integration Network WorkCenter (Part 1/2)

With the Peopletools 8.52 comes a new and nice feature regarding the Integration Broker management.
It has always been rather complicated to manage all the different components to make it all work.
The Integration Network WorkCenter is supposed to make it easier. It is worth to try. And really, it is worth to use.

But first of all, the setting to get it requires some work before hands. Quite a long story… sorry.

On the page, for the first time, it will probably look like the following :
INW_001
INW_001a
INW_002
Ok, let’s do the necessary work to configure before using it.

1. Network Status Configuration

Go to the Gateway (left menu), it opens the well known Gateway page, but all in the same frame, this is WorkCenter.
INW_004 INW_005
If you already have configured it, then you should not have this to do, otherwise, load the connectors.
INW_006
And try to ping the Gateway.
INW_007INW_008
Then you must define some more properties in the Gateway, go to the Setup page, again, it may or may be not required depending if you already did it :
INW_010 INW_011 
You should fill a node definition, in the “Node Name” field :
INW_012
And to be able to do that, you should have a messaging PUB/SUB server running. I have one dedicated to the messages :
INW_013
Now we can give all the details, and the ping should work :
INW_014
INW_015
Ok, the server was not started, after starting it up, the ping just works fine :
INW_017
Go to the Advanced Properties page of the gateway, the keystore password must be encrypted :
INW_018
Use the given utility to get the encrypted value of your password :
INW_019 INW_020
And replace the value in clear by the returned encrypted value :
INW_021 INW_022
Quit and save.

Coming back to the Integration Network WorkCenter, it is now looking like this :
INW_026
That’s right, even though the messaging server is started, it has not been activated yet, let’s do that.
INW_028
INW_029
INW_031

Now, back on the Integration Network WorkCenter, it is configured !
INW_032
That was nice to do all these tasks within the same menu, much easier than ever.

2. Network Integration Status
Once the configuration is done, we must set the Integration status. Otherwise, it’s no use.
Ping the node works fine :
INW_033INW_034 
But getting the Network Integration Status raises an error :
INW_035
INW_036  
When I get such message, the fist is to check the log file, here is an extract :
INW_037
In other words, the routing operation GETNETWORKSTATUS is not known…
Let’s find it out and modify it accordingly :
INW_038
INW_039
INW_040
INW_041
Here we go, the status of the routing is not activated. Do the change, save and go back to the WorkCenter :
INW_042
INW_043
INW_045
Ok, it’s clear enough on this error, let’s see what’s the permission of this service operation. Again, we can do it from the WorkCenter :
INW_047
INW_048
INW_049
And from the backend, no user is granted to this permission list :
SQL> l
  1  SELECT   distinct c.roleuser
  2  FROM     psclassdefn a, psroleclass b, psroleuser c
  3  WHERE    a.classid = b.classid
  4  AND      b.rolename = c.rolename
  5* AND      a.classid = 'PTPT4000'
SQL> /

no rows selected Let’s create a role especially for this permission list, and add to the user PS (I’m on HCM91).
INW_058
INW_059
INW_060
INW_063
Save and quit.
And from the backend, we can see PS with this permission list :
SQL> l
  1  SELECT   distinct c.roleuser
  2  FROM     psclassdefn a, psroleclass b, psroleuser c
  3  WHERE    a.classid = b.classid
  4  AND      b.rolename = c.rolename
  5* AND      a.classid = 'PTPT4000'
SQL> /

ROLEUSER
------------------------------
PS

Coming back to the WorkCenter, getting the Network Integration Status now returns :
INW_065


Next time, I will go further in details of the WorkCenter possibilities, please see part 2 here.

Nicolas.

Tuesday, October 30, 2012

Peopletools patch 8.52.11 : a temp directory for process scheduler

Just installed the Peopletools patch 8.52.11 (released on October, the 16th 2012) on Oracle Linux 6.3.
When configuring the process scheduler, it raises a warning about a temporary directory…
----------------------------------------------
Quick-configure menu -- domain: hcmdemo1
----------------------------------------------
      Features                      Settings
     ==========                    ==========
  1) App Engine        : Yes    6) DBNAME     :[hcmdemo1]
  2) Master Scheduler  : Yes    7) DBTYPE     :[ORACLE]
                                8) PrcsServer :[PSUNX]
                                9) UserId     :[PS]
                               10) UserPswd   :[PS]
                               11) ConnectID  :[people]
                               12) ConnectPswd:[peop1e]
                               13) ServerName :[]
                               14) Log/Output Dir:[%PS_SERVDIR%/log_output]
                               15) SQRBIN     :[%PS_HOME%/bin/sqr/%PS_DB%/bin]
                               16) AddToPATH  :[]

      Actions
     =========
  3) Load config as shown
  4) Custom configuration
  5) Edit environment settings
  h) Help for this menu
  q) Return to previous menu

HINT: Enter 5 to edit DBNAME, then 3 to load

Enter selection (1-16, h, or q): 4

Warning:  no changes detected, some configuration files will not be updated.
Loading configuration...

==============WARNING!================
The domain does not appear to have a TMP directory set in the configuration.
Your environment will inherit the value of TMP from the parent environment
==============WARNING!================
Domain configuration complete.


This has never been there till this patch. According to the readme of the patch this is probably something related to a bug fix (thanks to Michel for pointing this out in the thread I created) :
”14301709 : IDENTIFY A DIRECTORY TO WRITE INTERMEDIATE FILES INSTEAD WRITING INSECURE TMPDIR
Post Windows 2008 Server, Windows appends the session ID with the User Temp Path which is deleted once user logs off. This causes certain sub-process which relies on Windows Temp Path like Pagelet Wizard to crash. This resolution would add the possibility of other non-volatile Temporary Path Location like {LOGDIR}.
”

However it is also there on one of my Windows 2008 R2 SP1 server even though I tried to change my user temp variable outside my user default location:
----------------------------------------------
Quick-configure menu -- domain: hcmdemo1
----------------------------------------------
      Features                      Settings
     ==========                    ==========
  1) App Engine        : Yes    6) DBNAME     :[hcmdemo1]
  2) Master Scheduler  : Yes    7) DBTYPE     :[ORACLE]
                                8) PrcsServer :[PSNT]
                                9) UserId     :[PS]
                               10) UserPswd   :[PS]
                               11) ConnectID  :[people]
                               12) ConnectPswd:[peop1e]
                               13) ServerName :[]
                               14) Log/Output Dir:[E:\apps\ptools852\appserv\prcs\hcmdemo1\log_output]
                               15) SQRBIN     :[E:\apps\ptools852\bin\sqr\ORA\binw]
                               16) AddToPATH  :[C:\Windows;C:\Windows\SYSTEM32]
                               17) DBBIN      :[E:\apps\oracle\product\11.2.0\client_32bit\BIN]
                               18) Crystal Path:[.]

      Actions
     =========
  3) Load config as shown
  4) Custom configuration
  5) Edit environment settings
  h) Help for this menu
  q) Return to previous menu

HINT: Enter 5 to edit DBNAME, then 3 to load

Enter selection (1-18, h, or q): 3

Warning:  no changes detected, some configuration files will not be updated.
Loading configuration...

==============WARNING!================
The domain does not appear to have a TEMP directory set in the configuration.
Your environment will inherit the value of TEMP from the parent environment
==============WARNING!================
Domain configuration complete.

I’m still looking for a way to workaround the warning. I don’t like warning that I don’t know exactly where they come from and what they mean exactly.

All the ideas are welcome.

Nicolas.

Finally the answer is here :
E-AS: Windows 2008 TEMP Directory and the Use of XSL Transformation PeopleCode API [ID 1486978.1]
Special thanks to Yvonne Hogan who sent me an email about that.
To make it short, for the existing domains, add the following two lines containing temp reference in the .ubx file of your domain ($PS_CFG_HOME/appserv/prcs/<your_domain>/psprcsrv.ubx) :
*PS_ENVFILE
TEMP={LOGDIR}{FS}tmp
TMP={LOGDIR}{FS}tmp

And magically, warning just gone. It will create subdirectory like $PS_CFG_HOME/appserv/prcs/<your_domain>/{LOGDIR}/tmp, most of the time {LOGDIR} is named LOGS.
It works for Windows as well as for Linux.
If you want to make it working for the new domain, do it also in the file $PS_HOME/appserv/prcs/psprcsrv.ubx.

It seems it will be solve in Peopletools 8.53 and back ported in PT8.52.

Thanks again to Yvonne !

Nicolas.

Tuesday, October 23, 2012

PT8.52 on OL6.3 : “strings: '/lib/libc.so.6': No such file” (bis)

One and an half year ago, I wrote a blog entry giving a workaround about such error when installing Peopletools 8.51 on Oracle Linux 6.0, it was not certified combination at that time though, so no support.

Right now, there’s Peopletools 8.52 for quite a while and Oracle Linux 6.3. According to the certification matrix on My Oracle Support, it is certified.
However, when running a simple install, we are still facing this issue (that’s why I’ve wrote “bis” in the title).
[psoft@orion6 Disk1]$ ./setup.sh
Setting temporary directory /tmp/IA.7738
Executing setup.linux   -DCOMP_NAME=orion6.phoenix.nga -DPS_UMASK=0002
Preparing to install...
Extracting the JRE from the installer archive...
Unpacking the JRE...
Extracting the installation resources from the installer archive...
Configuring the installer for this system's environment...
strings: '/lib/libc.so.6': No such file

Launching installer...

Preparing CONSOLE Mode Installation...
<...stopping Peopletools install...>

So, let’s have a try to apply the same workaround that I described in that other entry and see if it is still doing the trick.
[root@orion6 lib]# ln -s /usr/lib64/libc.so libc.so.6
[root@orion6 lib]# su - psoft

[psoft@orion6 Disk1]$ ./setup.sh
Setting temporary directory /tmp/IA.14170
Executing setup.linux   -DCOMP_NAME=orion6.phoenix.nga -DPS_UMASK=0002
Preparing to install...
Extracting the JRE from the installer archive...
Unpacking the JRE...
Extracting the installation resources from the installer archive...
Configuring the installer for this system's environment...

Launching installer...

Preparing CONSOLE Mode Installation...

<...install Peopletools 8.52 successfully...>

We get the Peopletools installed painlessly. But later on, we need to invoke psconfig.sh to set the Peopletools environment :
[psoft@orion6 ~]$ cd $PS_HOME
[psoft@orion6 ptools852]$ . ./psconfig.sh
[psoft@orion6 ptools852]$ ls
ls: error while loading shared libraries: /lib/libc.so.6: invalid ELF header
[psoft@orion6 ptools852]$
[psoft@orion6 ptools852]$ vi psconfig.sh
vim: error while loading shared libraries: /lib/libc.so.6: invalid ELF header

Hmmm, not nice, is it ? So, let’s have a look what happens if we remove that file :
[root@orion6 lib]# ls -lrt
total 36
drwxr-xr-x.  2 root root 4096 Apr 16  2012 security
drwxr-xr-x.  6 root root 4096 Oct 23 09:27 terminfo
lrwxrwxrwx.  1 root root   14 Oct 23 09:28 cpp -> ../usr/bin/cpp
drwxr-xr-x.  3 root root 4096 Oct 23 09:29 alsa
drwxr-xr-x.  3 root root 4096 Oct 23 09:29 crda
drwxr-xr-x.  6 root root 4096 Oct 23 09:31 kbd
drwxr-xr-x.  2 root root 4096 Oct 23 09:31 lsb
dr-xr-xr-x.  6 root root 4096 Oct 23 10:05 modules
drwxr-xr-x. 45 root root 4096 Oct 23 10:05 firmware
drwxr-xr-x.  5 root root 4096 Oct 23 11:44 udev
lrwxrwxrwx.  1 root root   18 Oct 23 12:14 libc.so.6 -> /usr/lib64/libc.so
[root@orion6 lib]# rm -f libc.so.6
[root@orion6 lib]# su - psoft
[psoft@orion6 ~]$ . $PS_HOME/psconfig.sh
[psoft@orion6 ~]$ ls
bea  psft
[psoft@orion6 ~]$

It works much better. But then any further installation will fail again as explained earlier…
For the record, here’s the OS details (OL6.3) :
[psoft@orion6 ptools852]$ more /etc/redhat-release
Red Hat Enterprise Linux Server release 6.3 (Santiago)
[psoft@orion6 ptools852]$
[root@orion6 ~]# uname -a
Linux orion6.phoenix.nga 2.6.39-200.34.1.el6uek.x86_64 #1 SMP Thu Oct 18 17:00:17 PDT 2012 x86_64 x86_64 x86_64 GNU/Linux
[root@orion6 ~]#

Finally, there’s something looking much better. A link to an other library, a 64bit :
[root@orion6 lib]# ln -s /lib64/libc.so.6 /lib/libc.so.6
[root@orion6 lib]# su - psoft
[psoft@orion6 ~]$ . $PS_HOME/psconfig.sh
[psoft@orion6 ~]$ ls
bea  psft
[psoft@orion6 ~]$

You have a working environment, and the Peopletools installation is also working fine with this last symbolic link :
[psoft@orion6 Disk1]$ ./setup.sh
Setting temporary directory /tmp/IA.23315
Executing setup.linux   -DCOMP_NAME=orion6.phoenix.nga -DPS_UMASK=0002
Preparing to install...
Extracting the JRE from the installer archive...
Unpacking the JRE...
Extracting the installation resources from the installer archive...
Configuring the installer for this system's environment...

Launching installer...

Preparing CONSOLE Mode Installation...

===============================================================================
PeopleTools                                      (created with InstallAnywhere)
-------------------------------------------------------------------------------
<… continuing…>

So in first instance I was probably wrong last year, whereas it should be a symbolic link from /lib/libc.so.6 pointing to /lib64/libc.so.6.
----
But overall, we can also ask why this link is needed for the installation even though Peopletools claims to be a real 64bit…
It should be somewhere in the setup itself.
Just going a little bit further, having a look into ./Disk1/InstData/setup.linux, if you're searching for "libc", there's only one occurrence, and you'll see the libc.so.6 is hardcoded to be tested under /lib. Sic.
Here’s an extract:
…
nptl="`strings /lib/libc.so.6 | grep -i nptl`"
if [ "$nptl" ]; then
        debugOut "NPTL detected! checking for vulnerable JVM....";

…
Obviously, when running the strings command (the very first line from above), it aborts within the same error message that we get during the very first installation :
[psoft@orion6 InstData]$ strings /lib/libc.so.6 | grep -i nptl
strings: '/lib/libc.so.6': No such file
[psoft@orion6 InstData]$

So, apart from creating a link as earlier in this article, you may prefer to modify the setup.linux. At least it affects only the installer, not the system itself, so most likely better.
Remove the link created above and replace the given line in setup.linux.
However, since it's an binary file, you cannot just edit the file, modify and save.
       nptl="`strings /lib/libc.so.6 | grep -i nptl`"
must be replaced by 
       nptl="`strings /lib64/libc.so.6|grep -i nptl`" 
Note that luckily enough, whether we need two more characters for “64”, and we can remove two extra spaces to keep the same amount of bytes in the binaries file. 
Using sed command, it’s doable (do not forget to save the source file first!):
[psoft@orion6 InstData]$ cat setup.linux.bak|sed "s/\/lib\/libc.so.6 | grep -i nptl/\/lib64\/libc.so.6|grep -i nptl/">setup.linux.new

Now the script looks like :
# LD_ASSUME_KERNEL for Native POSIX Threading Library on some Linux distros
if [ `uname` = "Linux" -a -n "`which strings 2>/dev/null`" ]; then
        debugOut "checking for NPTL + JVM vulernability..."
        #check libc to see if it was compiled with NPTL
        nptl="`strings /lib64/libc.so.6|grep -i nptl`"
        if [ "$nptl" ]; then
                debugOut "NPTL detected! checking for vulnerable JVM....";


To be convinced this is working, here a run without the link :
[psoft@orion6 InstData]$ cp setup.linux.bak setup.linux
[psoft@orion6 InstData]$ cd ../
[psoft@orion6 Disk1]$ ./setup.sh
Setting temporary directory /tmp/IA.30517
Executing setup.linux   -DCOMP_NAME=orion6.phoenix.nga -DPS_UMASK=0002
Preparing to install...
Extracting the JRE from the installer archive...
Unpacking the JRE...
Extracting the installation resources from the installer archive...
Configuring the installer for this system's environment...
strings: '/lib/libc.so.6': No such file

Launching installer...

Preparing CONSOLE Mode Installation...

===============================================================================
PeopleTools                                      (created with InstallAnywhere)
-------------------------------------------------------------------------------

===============================================================================
Welcome
-------

InstallAnywhere will guide you through the installation of PeopleTools 8.52.

PRESS <ENTER> TO CONTINUE: ^C
[psoft@orion6 Disk1]$

Now going for the new file:
[psoft@orion6 Disk1]$ cp InstData/setup.linux.new InstData/setup.linux
[psoft@orion6 Disk1]$ ./setup.sh
Setting temporary directory /tmp/IA.30741
Executing setup.linux   -DCOMP_NAME=orion6.phoenix.nga -DPS_UMASK=0002
Preparing to install...
Extracting the JRE from the installer archive...
Unpacking the JRE...
Extracting the installation resources from the installer archive...
Configuring the installer for this system's environment...

Launching installer...

Preparing CONSOLE Mode Installation...

===============================================================================
PeopleTools                                      (created with InstallAnywhere)
-------------------------------------------------------------------------------

===============================================================================
Welcome
-------

InstallAnywhere will guide you through the installation of PeopleTools 8.52.

PRESS <ENTER> TO CONTINUE:
<…skipped…>
===============================================================================
Installation Complete
---------------------

Congratulations. PeopleTools has been successfully installed to:

   /apps/psoft/ptools852

PRESS <ENTER> TO EXIT THE INSTALLER:
[psoft@orion6 Disk1]$ exit
logout
[root@orion6 lib]# su – psoft
[psoft@orion6 ~]$ . $PS_HOME/psconfig.sh
[psoft@orion6 ~]$ cd $PS_HOME/appserv
[psoft@orion6 appserv]$ ./psadmin -v
Version 8.52
[psoft@orion6 appserv]$

Of course (sic), the same applies to all the Peopletools patches as well… for instance:
[psoft@orion6 InstData]$ pwd
/nfs/software/PeopleSoftCD/PeopleTools/PT8.52/PeopleTools8.52.02/cd85202/Disk1/InstData
[psoft@orion6 InstData]$ grep libc setup.linux
        #check libc to see if it was compiled with NPTL
        nptl="`strings /lib/libc.so.6 | grep -i nptl`"
[psoft@orion6 InstData]$


In the end, whether this error can probably be ignored, it should be better to have this cleaned definitely from within the installer (or why it is missing from the OS level ?).

Nicolas.