Saturday, 13 December 2008

SP23_W1 AS/400 installation

A couple of beauties from this simple upgrade:


I noticed that the install instructions for SP23 are wrong, and I thought that I would tell you. There is a section which says that if you are upgrading from < SP22, you need to FTP the printqueue members from the old to the new.

The CD and LCD commands in that section are mixed up.

You need to:

CD B7334SYSBK
LCD B7334SYS
BIN
MGET PRINTQUEUE.*

The instructions say:
LCD B7334SYSBK
CD B7334SYS
BIN
MGET PRINTQUEUE.*

Note that GET does get from CD (foreign dir) to LCD (local dir)


And another one:

Users could not run jobs after applying the new servicePack. Note that this was really strange. The Jobs WERE running, but they could not write to the F986110 or select from the F986111.

The other very strange thing was that the first one DID work. This must have been because the selection to the F986111 failed to get a next number, and it inserted a record with a blank job number in the F986110. Ironically I could see the record, because this was the only record in WSJ for this user. I did not notice that the job number was blank (i.e. no sequencing for 1 record!!). Totally fortuitous that it worked the first time, crazy.

Got error OS40002001 -803 in the UBE kernel jde log files.

1) Add the following line in JDE.INI on server to disable
CLI SQL Server mode-
[DB SYSTEM SETTINGS]
sqlServerMode=0
NOTE: If the customer is not running vertex or running
older release of vertex which does not require CLI SQL
server mode and the customer is running 8.11 SP1 and
below
application release, customer can disable server mode
using
the sqlServerMode = 0 in the jde.ini
2) Stop E1 services on enterprise server (ENDNET).
3) Stop Extended Dynamic Remote SQL (EDRSQL) server (
i.e.
ENDTCPSVR SERVER(*EDRSQL)
4) Start all services: EDRSQL, i.e. STRTCPSVR SERVER(*EDRSQL
) and EnterpriseOne Service (STRNET).

Thursday, 11 December 2008

Might have found the answer to the above, you'll never believe it

so, I told you that it was strange... I also told you that I thought I've seen it before (not too sure about that now).

https://metalink3.oracle.com/od/faces/secure/km/DocumentDisplay.jspx?id=659174.1&h=Y
SOLUTION:
The NIC driver on the deployment svr was out of date. After updating it to the latest version of the driver from the vendor svr pkg's can now be built successfully from the deployment svr.

Case #SRX070813601731 was opened with Microsoft and SAR # 8729592 was created for this issue.

It was found that problem was with the network card. Customers need to update the network card. This was the issue where system try to send data, but the OS call send() would return failure even when all the data had been received on the other side of the socket. In 5 separate customer cases, each of the customers updated their network card drivers and it appears to have resolved the issue. The 2 network cards in issue are Broadcom BCM5708S NetXtreme II GigE and HP NC373i.

Full package only sending 10 header files

Man, this is a good one. The full server package is not sending all of the header files, just 10. I think that the problem is that I'm running the package from a web server and there are some conflict with all of the ports - well 6014 to be precise. I've changed all of the listener ports and I still get the same problems.

I've got a very strange feeling that I've had this problem before... Very strange feeling... And when I find it, I'll probably regret posting this...

Thursday, 20 November 2008

email from 812

Generally I edit the AN8 that is associated with the P0092 record for the user.

Goto row, who's who

Choose email

Add the email information and you might start getting emails.

Your enterprise server must have an SMTP server in the [JDEMAIL] section. Note also that you might have to put a proper email address within that stanza, or your SMTP server may not permit relay.

"telnet SMTPSERVERNAME 25" to test if that is up and running.

You can goto gh902 and choose employee mailboxes and then row exit for email preference for the user that you want to change too.

Monday, 17 November 2008

Script that'll restart your listeners

Above the wmIS service is restarted, then I give the listener a poke with the following script. Remember that you need to create the EnableFinancialRTEListener service in the webMethods developer.

url="http://nsgshsjdnwb01u:5555/invoke/services/EnableFinancialRTEListener"
Set objHTTP = CreateObject("MSXML2.XMLHTTP.3.0")
Call objHTTP.Open("GET", url, FALSE)
wscript.sleep 1000
objHTTP.Send

Friday, 14 November 2008

WSG - Starting a listener with a script

I thought this would be simple... Is that crazy of me... surely there would be a simple script that would take a couple of arguements like package or adapter or listener and you pass is -start or -stop... Bobs your uncle, Fanny your aunt (I said aunt) things would be starting or stopping...

No chance...

You need to use the development tool, to create a flow and start this through the web browser.

Ahhhh...

So, I create a new package through webmethods ddeveloper, new folder "Services" and new flow called "EnableFinancialRTEListener"

Within this, choose -> (insert) browse and then use the following:

2. Call "WmART::pub::art::connection" and select enableConnection for all the adapter services
3. Type input value "connection:E1_GuaranteedEvents" for connectionAlias.
4. Call "WmART::pub::art::listener" and select enableListener for the listener.
5. Type input value "Listeners:NotificationEnterpriseOne" for the listenerName
6. Run this flow from the developer and make sure it works.
7. Run the following from a web browser

You then save this to the integration server.

Once saved, you can call the service with the following URL:
http://servername:5555/invoke/services/EnableFinancialRTEListener

It then prompts you for a username and password, I need to work that one out... But it does start your service.

I'll post again when I work out the username and password issue.

The last part was easy, I changed the execute ACL to be anonymous and then it could be run by just going to the URL. next is to execute the URL through a VBS script.

Thursday, 13 November 2008

UTC Calendar popup wrong date

All the users were getting an error where the incorrect date was in the calendar popup until 11:00am, funny thing was, this is when GMT would click over to the next day. We found that in the user profile P0092 we had to give them a UTC of 16, then all of the popups worked. Crazy hey. Users had been dealing with this for about 8 months, but enough it enough... Fair enough!

I used the following SQL to make things quicker:

update sy812.f00921 set ULUTCTIME = '16' where ULUTCTIME = ' '

That's it for now.

Manifest - shite-fest

The manifest at one of my clients is all wrong. The full package thinks one thing, the web server another - what always occurs is that the web server clears it's serialised objects - thanks for that - awesome!

There are some calls in the KG about if the pacakge is built in the afternoon, the date time stamps will be wrong between manifests (12 hours out) and this will cause the clearing of serialised objects - nice one JDE.

Am I able to insert documents in my blog? I might try to insert it as a image?? Nope that does not work. you can get this half decent document from the metalink3 site.

The manifest is stored in the F98770 table, it is also stored in the F989999 table with particular formats (which I'm attempting to find).

Ahh, found the fu*ker

select wbuid, wboid from py812.f989999 where wboid like '%MANI%' ;

WBUID WBOID
-------------------- --------------------------------------------------
DEFAULT MANIFEST-MANIFEST

So, I wonder what this looks like in databrowser.

You gotta guess the contents...

When you do a generate-manifest from the java generator, it reads the MANIFEST-MANIFEST record from the F989999 that you are currently looking at.

When you generate a manifest, the code works out the latest full package and then selects from the F98770 table for that package, ie:

SELECT SMERBLOB FROM dbo.F98770PY812FH WHERE ((SMFMAT = ? ))

Then does:
Entering createSOManifest. Pathcode = PY812; specManifest = SpecManifest, type PACKAGE; audit track = Audit: user = JDE, host = nsgshsjdnwb01u, port = 6014, Timestamp = Thu Nov 13 13:46:19 EST 200

Then it deletes the manifest record from the F989999 and replaces it with the record from the F98770.

DELETE FROM CRPDTA.F989999 WHERE ((WBUID = ? AND WBOID = ? ))
INSERT INTO CRPDTA.F989999(WBJPO,WBUID,WBOID,WBLNGPREF) VALUES (?,?,?,?)

The thing is, this does not write any of the updates.

It gets the correct build and deploy dates, but none of the updates that are in the F98770.

???WTF???

So it seems that you can nick a manifest from another package, by getting the MANIFEST-MANIFEST record - but it's tough to get all of the correct stuff from the F98770 into the F989999 to stop your serialized objects being truncated all of the time... Damn those BLOBS!

I read somewhere that if you generate any object with the WebDevelopment=FALSE set, the MANIFEST would be set straight... Lets test this.

Note also that the manifest has FU&# all to do with the package that you are doing the generation from, which is SHIT. It just reads the currently deployed package and writes that to the manifest. You gotta make sure that you deploy your package before you generate your manifest, otherwise you'll be in sh#tsville.

So, I logging into the generator with WebDevelopment=FALSE (you cannot see the manifest option, cool). Generated the R0010P and went back in to check the manifest. Note that wen you have WebDevelopment=FALSE, you get the standard JDE splash screen and login, not the little popup.

That fixes it!!! It actually writes the proper manifest record with all of the update packages.

I really don't know about this, I'll need to have a good think about it. What I do know is that it's crap.

Tuesday, 11 November 2008

UBE security - must read!

I love problems. I'm honestly not too sure whether I like solutions as much as problems... Solutions are creative, there are many ways to solve a problem - yet the problem itself is quite 1 dimensional.

We had an issue where a report launched another report. The subsequent report stopped running... The user only had 1 role, there was no security for the user, just the role. There was no environment overrides for the user, just the one role that the user had. Security had not changed in weeks. The job stopped running...

Come on, have a think about it? Got a reason? Got a solution?

Well, as it happens the following SQL is run by the UBE:
SELECT * FROM SY812.F00926 WHERE ( AUSEQNO = 50.000000 )

This is subsequent to a bunch of other jobs, but at the end of the day this statement is run. After this statement the select on the F986101 is run, using some of the results from the previous query... Problem is that our system had a couple of roles (one old and not used before) at the same status as the real role.

This was being picked up and used in the query of security! Wow. I'm going to work out if there should be a unique index on the F00926 with AUSEQNO??

Crazy problem. I guess this means that all of the security on the server could be dodgey for this reason! I don't really want to delete all of the old roles out of this table, in case all jobs stop working because security has finally kicked in. this could happen! Remember that the web server will stop all of the one off jobs from being launched, but it's only jobs in a calling chain that would get "done in" by this.

Simple information about auditing

Remember in JDE auditing, the following is used:

The base table (say F0911) is converted to a view of the same name.
The data from the base table is copied to a table called F0911_ADT. (insert into select * from)
Triggers are installed on the F9011_ADT to write audit records to the A0911.

All of the existing indexes are built against the ADT table - but they are all rebuilt!!! This takes a long time for a big table.

Wednesday, 5 November 2008

New trigger for job queue substitution...

Damn that queue kernel coming in after the UBE kernel and updating all of the fields that I update in the "AFTER INSERT" trigger... Do you know what I mean?? My trigger used to update the QUEUE name after the insert from the UBE kernel (insert into the F986110 - Duh?). Anyways so some message must be passed between the queue kernel and the UBE kernel, because the queue kernel just comes in and splats over the top of what my trigger changes... Dirty bastard. Here is the new improved trigger text:

CREATE OR REPLACE TRIGGER JobQueueSubstitution
BEFORE UPDATE
ON SVM812.F986110 FOR EACH ROW
DECLARE
chgFlag NUMBER ;
BEGIN
IF ltrim(rtrim(:new.jcjobque)) = 'QBATCH' and ltrim(rtrim(:new.jcjobsts)) = 'S' and ltrim(rtrim(:old.jcjobsts)) = 'W' THEN
SELECT COUNT(*) INTO chgFlag
FROM F0005
WHERE drsy = '55'
AND drrt = 'JQ'
AND ltrim(rtrim(drky)) = ltrim(rtrim(:NEW.JCUSER)) ;
IF chgFlag > 0 THEN
:new.JCJOBQUE := 'Q812';
END IF;
END IF;
END JobQueueSubstitution;

Friday, 24 October 2008

Fast way for row counts in SQL

One of the best things I've ever seen:

select o.name, rows from sysobjects o inner join sysindexes i on o.id = i.id where i.indid < 2 and xtype='u' and o.name not in ('dtproperties')

Woo hoo...

Hey, ever had orphaned SQL server users... come on, tell the truth... YES YOU HAVE!

First, make sure that this is the problem. This will lists the orphaned users:

EXEC sp_change_users_login 'Report'

If you already have a login id and password for this user, fix it by doing:

EXEC sp_change_users_login 'Auto_Fix', 'user'

If you want to create a new login id and password for this user, fix it by doing:

EXEC sp_change_users_login 'Auto_Fix', 'user', 'login', 'password'

Be careful when you use a web server as a generation machine

Make sure that you have separate WEB-INF dirs. One with WEB-DEVELOPMENT on and one with WEB-DEVELOPMENT off. If you don't do this, your web server will start and run, but will not be able to launch UBEs. Trust me. Just create a GEN-WEB-INF dir as a copy of the WEB-INF dir and alter the gen.bat to point to that dir. You can then customise the generator jbdj.ini to make things faster!!

Java generation, oh how ye sucks

I seem to have a lot of problems with Java Generation. I'm trying to understand why...

Get this, my latest problem set.

So, for some reason (I'm going to find out, trust me). My PY812 f989999 was generated with an OID and UID with VARCHAR. So, all of the deletes had loads of spaces in the front, and they found no rows... then the inserts failed... Meanwhile, I've had a PY webserver down for 2 days and have been too scared to promote anything to production in case the same thing was going to occur.

No matter what I did, truncate F989999 & F989998 - generate to a different location... Nothing seemed to work. I was at the end of my tether and saw an ancient call (and remembered it when it first came out) about changing OID and UID to CHAR - not VARCHAR.

Of course when I looked at my PY812 F989999 they were NVARCHAR. I don't know how it happened, but it did happen!

Note that there is also an option in the jdbj.ini
disableOracleNcharTrimming

Man, if I had have looked at that a little closer!

Monday, 20 October 2008

WAS and ports and locks and stuff

Well, I've just spent the morning recovering from a doozie of a problem. The JAS.INI for a web server was changed to have the [WEB DEVELOPMENT] section inserted with the WebDevelopment=true line added too. Holy moly - what a f*ck up!. This had the affect of letting people in, but they could not run reports. There were errors in the logs about:

20 Oct 2008 10:03:51,979 [SEVERE] MOIRS - [METADATA] Cause exception com.jdedwards.database.base.JDBException: [DATABASE_CONNECT_FAILED] Database Connection failed for DataSource SPEC_MSDE.
20 Oct 2008 10:03:51,979 [SEVERE] MOIRS - [METADATA] JDESpec error code = JDBj_SELECT_FAILURE com.peoplesoft.pt.e1.base.metadata.dataAccess.JDESpecException: JDBj select to spec RDB table failed for Spec Type RDASPEC.
20 Oct 2008 10:03:51,995 [SEVERE] MOIRS - [JAS] SubmitUBE.launchUBE() : Exception thrown during UBE submission! | Report Name : R0010P, Version Name : XJDE0001, Server Name : null, User Name : MOIRS com.jdedwards.system.kernel.LaunchUBEException: JDBj select to spec RDB table failed for Spec Type RDASPEC.
com.jdedwards.system.kernel.LaunchUBEException: JDBj select to spec RDB table failed for Spec Type RDASPEC.
at com.jdedwards.jas.SubmitUBEXML.packageSpecsAndSubmit(Unknown Source)
at com.jdedwards.jas.SubmitUBE.launchUBE(Unknown Source)
at com.jdedwards.jas.JDEOWDirect.jdeOWDirect(Unknown Source)
at com.jdedwards.jas.JDEOWDirect.processServerRequest(Unknown Source)
at sun.reflect.GeneratedMethodAccessor31.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java(Compiled Code))
at java.lang.reflect.Method.invoke(Method.java(Compiled Code))
at com.jdedwards.jas.ServletProxy.callServerComponent(Unknown Source)
at com.jdedwards.jas.ServletProxy.servletProxy(Unknown Source)
at com.jdedwards.jas.ServletProxy.dispatch(Unknown Source)
at com.jdedwards.jas.net.NetConnection.callJAS(Unknown Source)
at com.jdedwards.jas.net.NetManager.processRequest(Unknown Source)


So, to find the problem I'm thinking, why is only this cluster member trying to load serialized objects from MSDE??? It could not be the manifest, it had to be the jdbj.ini (or jas.ini as in this case). I checked the [BOOTSTRAP] DS settings, I thought that it was going to be this, and it was not. I then stumbled on the JAS.INI and found the Web-Development setting.

Ok, great, I know why everything is f*cked, now.. Easy fix. Send everyone a SAW message. Restart the JVM - bing bang bong. The perfect crime...

But the instance would not start again, I kept getting the errors below:

[20/10/08 10:30:03:478 EST] 0000001f ChannelFramew E CHFW0029E: Error initializing chain DCS because of exception com.ibm.wsspi.channel.framework.exception.RetryableChannelException: Address already in use: bind
[20/10/08 10:30:03:509 EST] 0000001d TCPPort E TCPC0003E: TCP Channel TCP_5 initialization failed. The socket bind failed for host nsgshsjdnwb02.news.newslimited.local and port 9352. The port may already be in use.
[20/10/08 10:30:03:509 EST] 0000001d ChannelFramew E CHFW0029E: Error initializing chain DCS-Secure because of exception com.ibm.wsspi.channel.framework.exception.RetryableChannelException: Address already in use: bind
[20/10/08 10:30:08:494 EST] 0000001f TCPPort E TCPC0003E: TCP Channel TCP_5 initialization failed. The socket bind failed for host nsgshsjdnwb02.news.newslimited.local and port 9352. The port may already be in use.
[20/10/08 10:30:08:494 EST] 0000001f ChannelFramew E CHFW0029E: Error initializing chain DCS because of exception com.ibm.wsspi.channel.framework.exception.RetryableChannelException: Address already in use: bind
[20/10/08 10:30:08:525 EST] 0000001d TCPPort E TCPC0003E: TCP Channel TCP_5 initialization failed. The socket bind failed for host nsgshsjdnwb02.news.newslimited.local and port 9352. The port may already be in use.


So, I use the netstat command to find the pid that is locking the port:

netstat -b -v | findstr 9352

It tells me launchJVM.exe is doing this. Note that before being this smart, I tried restarting the nodeagent, then the network deployment node agent - of course none of this worked.

So, WTF??? This WEB-DEVELOPMENT section in the JAS.INI must control the LaunchJVM.exe process. This was locking all of my ports and making the machine a cluster f&ck. I did not want to bounce the entire machine, because half my users were happy in Prod.

Anyway, we are all happy now and I've got faith in windows netstat.

Friday, 3 October 2008

Some more generic tech notes that I need on the web

The below script will generate owner rename statements in SQLServer. I use them all the time for data refreshes. Just do database backup, restore and then run these puppies for DTA and CTL!

select 'EXEC sp_changeobjectowner ' + '''' + 'JDE_CRP.PRODDTA.' + so.name +
'''' + ', ' + '''' + 'CRPDTA' + '''' + ';'
from sysobjects so, sysusers su
where so.name like 'F%'
and so.xtype = 'U'
and su.uid = so.uid
and su.name = 'PRODDTA'

Get your oracle version from the SQL command like:

select banner from v$version

Installing peoplebooks?
PSOL documentation code FFFFFFFFF1

start ftp on linux
service vsftpd start

service smb start
/etc/samba/smb.conf


find and delete all files that are older than 6 days
find . -mtime +6 -print | xargs -i rm -f {}

Thursday, 2 October 2008

Create table with SELET statement in SQL Server

any other database is

CREATE TABLE XX AS SELECT * FROM YYY;

No worries, simple... works in DB2, UDB & oracle... But SQL Server needs:


select * into NEW from OLD where sdsudfut2 = 'PY812' ;

What a crock!

RDP information

Do you ever get that message when you are RDP'ing to a client that it has too many open connections and you don't know what to do... well, here is a treat for you.

At the windows command line enter:

qwinsta /server:SERVERNAME

Will list all of the sessions, choose one that you can delete and then:

rwinsta /server:SERVERNAME ID_NUMBER

That'll get rid of the pesky session and let you log in - ripper!

remember to RDP to the console of a machine with the /console option after the machine name, that way you can share it with everyone (if you log in with the same user).

Tuesday, 30 September 2008

All the AS/400 SQL you'll need for a ENT server rename

Note that this is AS/400 SQL syntax.

update svm7333/f98611 set omsrvr = 'NEWSERVER' where omsrvr =
'OLDSERVER'

31 rows updated in F98611 in SVM7333.

update svm7333/f98611 set omll = 'NEWSERVER' where omll =
'OLDSERVER'

31 rows updated in F98611 in SVM7333.

update svm7333/f98611 set omdatp = 'NEWSERVER - B7333 Server Map'
where omdatp = 'OLDSERVER - B7333 Server Map'

1 rows updated in F98611 in SVM7333.

update svm7333/f98611 set omdatp = 'NEWSERVER'
where omdatp = 'OLDSERVER'

1 rows updated in F98611 in SVM7333.
update svm7333/f986101 set omdatp = 'NEWSERVER'
where omdatp = 'OLDSERVER'

6 rows updated in F986101 in SVM7333.

SYS7333 F98611
update sys7333/f98611 set omdatp = 'NEWSERVER - Logic'
where omdatp = 'OLDSERVER - Logic'

1 rows updated in F98611 in SYS7333.

update sys7333/f98611 set omdatb = 'NEWSERVER - B7333 Server Map '
where omdatb = 'OLDSERVER - B7333 Server Map '

3 rows updated in F98611 in SYS7333.

update sys7333/f98611 set omsrvr = 'NEWSERVER' where omsrvr =
'OLDSERVER'

43 rows updated in F98611 in SYS7333.

update sys7333/f98611 set omll = 'NEWSERVER' where omll =
'OLDSERVER'

44 rows updated in F98611 in SYS7333.

update sys7333/f98611 set omdatp = 'NEWSERVER - B7333 Server Map'
where omdatp = 'OLDSERVER - B7333 Server Map'

1 rows updated in F98611 in SYS7333.

update sys7333/f98611 set omdatp = 'NEWSERVER'
where omdatp = 'OLDSERVER'

1 rows updated in F98611 in SYS7333.
update sys7333/f986101 set omdatp = 'NEWSERVER'
where omdatp = 'OLDSERVER'

24 rows updated in F986101 in SYS7333.

update sys7333/f986101 set omdatp = 'NEWSERVER - Logic'
where omdatp = 'OLDSERVER - Logic'

11 rows updated in F986101 in SYS7333.
update sys7333/f9650 set mmmkey = 'NEWSERVER' where mmmkey = 'OLDSERVER'

1 rows updated in F9650 in SYS7333.

update sys7333/f9650 set mmdatp = 'NEWSERVER - B7333 Server Map'
where mmdatp = 'OLDSERVER - B7333 Server Map'

1 rows updated in F9650 in SYS7333.

update sys7333/f9651 set mdmkey = 'NEWSERVER' where mdmkey =
'OLDSERVER'

5 rows updated in F9651 in SYS7333.

Make sure EDRSQL TCP service is running "STRTCPSVR SERVER(*EDRSQL)". Make sure that it starts automatically (use iSeries nav for this)

AS/400 issues

I like AS/400 issues... Why, because there are always so many logs... I really love job logs... As far as an OS is concerned, does logging get any better? Event viewer is good, but not great. stdin and stdout is okay, but job logs... They boil my potato!

I was configuring a DR AS/400 today and was getting a really strange error "Cannot resolve to object QBFCPRCED". When we looked for that object on the DR machine, it did not exist... YET, when I looked at the object on the prod machine it did... what does that tell you? Not a good start to a DR machine it tells me. How do people expect this thing to work without the correct foundation... Anyways... Despite this, there were a bunch of PTF's that were installed but not applied. We IPL'd the 400 (30 mins later, brand new 520!) to install the PTFs - Bob's your uncle and fanny is your aunt (I said aunt) She started working!

Remember if you want to build up an ent server (or change the name), you gotta do the following:
JDE.INI on the server - old to new
update SY and SVM F98611 and F986101
Update F9650 and F9651
Update client ini files

All of the fat client ODBC's needed to be changed, export the ODBC part of the reg and do a search and replace - much easier.

Remember that the web servers (despite maybe having a fat client), do not use ODBC - all JDBC. These are loaded up on the fly from F98611 - so you don't gotta worry about them.

Tuesday, 23 September 2008

WebDev client for OAS

Remember that if the web dev is not working, you can go to the deployment server under OneWorld Client install\WebDevFeature and run the installer from there. You'll know if it's working because it'll finish (ironic!). If the installer does not finish, reinstall your fatty and then run that again.

JDE and LDAP

It's not the best implementation of LDAP authentication I've come across... But, lets have a more honest look at things, is it the worst... Hmmm, it might be.

What about some of the limitations:

1 domain only
username < 10 chars
password < 10 chars WTF!!!! This is a crock!

okay, and now the best stuff...

So I work as a site with a large AD implementation, 5000 users... something like that... Not that many JDe users... Each time a user tries to login to JDE, the security kernel is saying "Cannot find username XXXX in LDAP"... But, any LDAP browser or MAD tool can. I don't know how it's running it's queries, or if it's binding to the correct member - but it's bad!

Tuesday, 16 September 2008

If you can't get into the em console, try this

D:\product\10.1.3.1\OracleAS_1\opmn\bin>opmnctl startproc process-type=home application=ascontrol
opmnctl: starting opmn managed processes...

then http to:
http://machinename.domain.etc/em/console/ias/cluster/topology

opmnctl usage

usage: opmnctl [verbose] [] []

verbose: print detailed execution message if available

Permitted // combinations are:

scope command options
------- --------- ---------
start - Start opmn
startall - Start opmn & all managed processes
stopall - Stop opmn & all managed processes
shutdown - Shutdown opmn & all managed processes
[] startproc [= ..] - Start opmn managed processes
[] restartproc [= ..] - Restart opmn managed processes
[] stopproc [= ..] - Stop opmn managed processes
[] reload - Trigger opmn to reread opmn.xml
[] status [] - Get managed process status
[] dmsdump [=&..] - Get DMS stats
[] set [= ..] - Set opmn log parameters
[] query [=] - Query opmn log parameters
ping [] - Ping local opmn
validate [] - Validate the given xml file
config [] - Modify the opmn xml file
help - Print brief usage description
usage [] - Print detailed usage description

Clustering in OAS

Make sure that you name your OAS instances (when doing the initial install through the oracle installer 0 YUK!!) differently. They need to have different names for the cluster to work. Thansk Rhys.

OAS timeout

ISSUE:
Customer is running a JAS server using OAS and needs to find out how to set the time out settings.
From an HTML client, the system times out within 15 minutes.


SOLUTION:
Oracle AS Session timeout is by default set to 20 minutes. To set higher timeout, please follow the steps as described below.

FOR OAS 10.1.3:
1. Select your OC4J container
2. Click on "Application" Link
3. Click on link for your E1 JAS OC4J, eg "EA_JS_81"
4. Click on the link for webmodule, "webclient"
5. Click on link for "Administration"
6. Under "Go to Task" column, click on icon for "Configuration Properties"
7. Set the Session timeout value in Seconds
8. Restart the OC4J instance


FOR OAS 10.1.2.0.2

1.) Update the WEB.XML

a.) Navigate to JAS Application under /j2ee//applications/jasapp/webclient/WEB-INF
b.) Make sure that server is not running.
c.) Edit the WEB.XML file using Notepad.
d.) Place the 3-line session-timeout stanza in the WEB.XML file like this:
...

MOViewerServlet
MOViewerServlet
com.peoplesoft.e1.container.MafletServiceContainer

maflet.name
MOViewerServlet




30


Where the number entered for "session-timeout" is the desired session timeout in minutes.


2.) Update Apache:

a.) Find the httpd.conf file located in /Apache/Apache/conf
b.) In the httpd.conf file, change the "Timeout" value.

Timeout 300

This value is in seconds and is set to a default of 5 minutes (300 seconds) and should be changed to match your desired timeout. (e.g. 1800 for 30 minutes, 3600 for 1 hour).


3.) Update the MOD_oc4j.CONF (located in ORACLE_HOME>/Apache/Apache/conf)


a.) To update this file, refer to the document using link:
http://download-west.oracle.com/docs/cd/B14099_07/web.1012/b14007/confmods.htm#CIHJCHHH

You will need to add/change the value for "Oc4jConnTimeout" to be that of the time (in seconds) before the connection timeout occurs (e.g. 1800 for 30 minutes, 3600 for 1 hour).


4.) Update the UserSession value in the relevant JAS.INI (located here: /j2ee//applications/jasapp/webclient/WEB-INF/classes)
to match the timeout set in the other three steps listed above. The JAS.INI value will need to be entered as milliseconds (e.g. 1800000 for 30 minutes, 3600000 for 1 hour).

The JAS.INI setting for timeout is as follows:
[CACHE]
# These intervals are in milliseconds. For example, 60000ms = 1 minute, 3600000ms= 1 hour
UserSession=3600000 <====

Working with steps 1 and 4 above should suffice. However, it may be necessary to also complete above steps 2 and 3 should you not see your changes enforce your desired timeout setting. Also, note that this is a crucial timeout value. Setting your timeout higher than 30 minutes may cause higher memory usage and out of memory conditions. Please take care in using this setting as performance may be affected adversely.

Monday, 15 September 2008

F00928 - LDAP config

Remember that this is where your LDAP info is set. Out of the box this is in the data owner. It gets worse too... The default environment in the JDE.INI [SECURITY] (not too sure if this is the correct stanza, there is only two) is looked at to find which F00928 is going to be looked at...

I generally map all of these to SYSTEM and keep one copy!

Thursday, 11 September 2008

second fact about tools release update package

Oh yeah, I remember the second item now...

Secondly if you create an update package that is for the new system only, compress the new system. It'll update the pacakge_inf file for the parent package as well as the one you just built. This was a little unexpected and so are the results, anyone who takes the full package you built the update against will get the new tools release! The following line is updated in the fullpacakge.inf file:

SSYS=\\NSGSHSJDNDPLY01\E812\897.2.1\systemcomp

Where build location is defined as "NSGSHSJDNDPLY01" and foundation path defined as "\E812\897.2.1\system". This is from the foundation item revisions screen (P9883).

WAS6 & 8.97.21

Here is a couple of basic tips.
New tools release update package:
When you define a new system, so that you can build an update package that will throw out a new tools release, and not affect the other clients... So you create a new system, and it asks you for a directory... You gotta use a unc share to the dir, and you need to select the system DIR, not the systemcomp DIR...

There was going to be something else, but I forget.

Tuesday, 9 September 2008

What do I do with 8.97 and server manager

Don't know where to start?

This is a late post, but it takes time to get my head around things.

Download the following (server manager for the tools release you want to install) from www.peoplesoft.com, or use change assistant. Change assistant is great, if you are not using it, you should start.

Remember that the par files are zip files, peoplesoft archive, what a crock! they should be oar files anyway.

There is no birds eye description of what you need for this 8.97 stuff, so I'll try and write a simple one.

  • You need to install the "server manager" on a machine somewhere, deployment server makes sense. This machine needs a lot of disk.
  • The server manager is NOT the client software, it's just another GB that you need to download
  • All of your other servers need agents installed, each agent can be downloaded from the software management pages (which you are going to install on your deployment server). Generally a link like "http://deploymentserver:8999/manage"
  • This is one reason the download is so big, it contains all of the agents!
  • you then need to download the client (another GB), and all of your other server types.
  • The server manager co-ordinates the installation and configuration of all machines in your 8.97 installation, it's important
  • You don't get direct access to SAW anymore, this SUCKS!
That is the download, now the install. you should have at least 4 par files. One for your web server, one for your enterprise server, one for the client and one for the server manager.

We install the server manager first.

Note:
  • If this is a new install, don't blaze ahead and expand the par files and install the enterprise server and the web servers... Server manager does this for you!!!!!
  • It does not have to install the base product, but it's damn good at it.
  • If it's an existing install, install the agents. They talk back to the server manager and tell it what is going on.
  • If you are installing websphere, you still need to install WAS. Note that if you are using WAS6.0.2.21 (not 6.1) you'll not be able to find the jar files that allow remote management of WAS (This is a nightmare). I had to download the client for 6.1 to get the jar files
  • com.ibm.ws.admin.client_6.1.0.jar (31 Mb)
  • com.ibm.ws.security.crypto_6.1.0.jar (12KB)
  • ibmkeycert.jar (209KB)
  • you go to http://nsgshsjdndply01.xxx.xxx.local:8999/manage/wasadmin to upload the files
run the smmc_setup.exe from the disk1 sub folder. choose a folder with some space, enter a password, accept the default port. Install the 780Mb!!

This creates a service called "SM Management Console".

It'll create a readme.txt file in the root dir of the install (D:\jde_home). this has the URL that you need (in case you've forgotten).

# Oracle JD Edwards|EnterpriseOne
# Server Manager
# Management Console
#
Installation location: D:\jde_home
Installation log files are in: D:\jde_home\logs folder.
Management console URL: http://nsgshsjdndply01.xxx.xxx.local:8999/manage

When you log in for the first time, you'll need to go through a wizard.






Wow, that's painful putting a picture in, especially one as unhelpful as that!

So, my screen is now frozen on the wizard... Click next, nothing happens... Awesome. This is using IE6 from the deployment server. I also added the site as a trusted site, nothing! Lets try Mozilla, or maybe my new fav. Chrome. Get in there!

Well, it works from Mozilla on my client... Lets move on.

I used the default JMX ports etc, 14501 et al

enter the system data source info.

bcoz I'm working at an oracle site at the moment, I need to paste in a decent tnsnames.ora file. I get it from (C:\oracle\product\10.2.0\client_1\NETWORK\ADMIN).

Enter you database username and password

Now you get the option to import the JDE users from F0092 (how smart is this thing??)

Now it tells me:

Please refer to the documentation for additional steps that are typically performed after the initial installation. These may include the following tasks:

  • Configure Server Groups
    Server groups are used to logically separate similarly purposed servers. For example you may create one server group that contains the development servers and another group that contains the production servers.
  • Configure Management Users
    You may create user groups to logically associate user names with their activity role. By granting the user groups individual permissions you control what task and activities users may perform within the management console.
  • Install and Register Servers
    Once the desired server groups are created and configured you may use Server Manager to register your existing enterprise servers and application servers or perform new installations of enterprise servers and the web-based EnterpriseOne servers.
Ready to rock. From my new machines, AP server and WB server. I'll access the URL for server manager and download the appropriate agents.

Add servers to console

You may be wondering (like I did) how the f*%k can I add my other servers... Be patient. Install the agents and they will appear. Remember that 8999 is the port for the agent installs, not the JMX ports. Goto the management agents left menu item and then click your OS type.

They need to get valid publisher information for these installs, it looks much more professional.

After you've installed you agents, hit F5 on the main screen, and ka-boom, new servers appear!
http://nsgshsjdndply01.xxx.xxx.local:8999/manage/home

Okay, so now I've got 3 machines listed. that's it. The good news is you hardly need to access the servers via RDP anymore, the agent is going to do everything for you.

Get software to managed nodes
Now we have to upload some software into the server manager so that we can distribute it to the agents.

Goto managed software and "upload file", alternatively you can just copy your par files into the "D:\jde_home\components" dir on the deployment server (where you installed the server manager, I'm going to call it the DEP server from now on).

If you copy the files in, they will appear in the list with a refresh (or two). Might need to restart the SM service if you are waiting too long (like me). Note that this did not work for me either - WTF! So, I've copied the files in, but only one has been recognised. I'll try and tell it to upload from the components dir (I think that I've done this before and it roots everything up).

Ahh, I know. It does not pick up the client par or the WSG pars. bit crap if you ask me. Should list them but allow you to do nothing with them.

Please also note that although the service control panel comes back to you quickly, you'll need to wait longer to sign into the admin console.

Install WAS instance

Add server1 as some managed software


install your jdbc drivers.

To install a JDE web instance, you gotta install a J2EE container first.

choose your webserver
choose server1
choose your profile name (default)

add a server, choose a name like "AS_JS_81SP" and okay

now create a enterpriseOne HTML server

WAS will confirm the webserver name (for mappings)

WAS will ask for basic environment information.

create, then you gotta configure the INI and the JDBJ with the SM interface (yuck).

Goto the link "JDBJ Database config" and fix all of the settings

Wow, when you install a WAS6 instance of JDE, it creates all of the httpd.conf information in an include file and writes the directives to the httpd.conf. That is cool.

include "D:\IBMHTTPServer\conf\scf_AS_JS_81SP.conf"

Enterprise Server:

After adding a new server, the system dir is there, but no pathcodes. I guess I might have to read the guide to work this out - although it's not stopping me having a go!

Wednesday, 27 August 2008

java generation joke

Is it just me, or is the java generator a big pile of shit. It used to be good, pretty reliable. Now I get it crashing all of the time. I work at a lot of different sites and it's bad everywhere. Does not log in the first time, dumps... Shocker. The quicker they make java generation part of the package build and deployment the better!

package manifest problems

[WEB DEVELOPMENT] in the jas.ini for the generator determines whether you are going to have the opportunity whether you can generate the manifest or not. You need to create this stanza and then also add the WebDevelopment=TRUE line below it. What a shocker. If you create generation machines like I do, generally you just copy the web server gen.bat portion - this does not have the [WEB DEVELOPMENT] section in the web server JAS.INI - you'll only find it on the development client one - Doh.

This starts to matter when you want to "pregen" your objects. When you "pregen", the old manifest becomes very important.

Also remember that if you are old school like me, you gotta install the latest ESU with P98770 in it! This is a manifest browse utility that allows you to look at the actively deployed packages and all of the updates that are applied to them. You can find these packages in F96511 - but not the updates...

How do I do "pregen" - simple, but now is not the time for me to explain.

Extending JDE to generative AI