Quantcast
Channel: Shannon's JD Edwards CNC Blog
Viewing all 542 articles
Browse latest View live

Customising the login for JD Edwards 9.1 and above.

$
0
0

 

Change the page title

Edit this file:

D:\Oracle\Middleware\user_projects\domains\E1_Apps\servers\JWB01D_DVCMSAU_81\stage\JWB01D_DVCMSAU_81\app\webclient.war\share\Html4login.jsp

Change this

<title>"JDE CMS DV AU"</title>

<webgui:pagehead addtitle="false"/>

Note that this is really handy for favourites too!

clip_image002

Then change the icon’s and text – Just for the login page. Replace the oracle logo change the text from “JD Edwards EnterpriseOne”

Note that you need to create the oracle_logo2.png

File to edit:

D:\Oracle\Middleware\user_projects\domains\E1_Apps\servers\JWB01D_DVCMSAU_81\stage\JWB01D_DVCMSAU_81\app\webclient.war\share\loginDecoration.jspf

Changes:

if ( (companyLogoImageURL != null) && (companyLogoImageURL.length() > 0) || smallScreen )

{

if (companyLogoImageURL.length() != 0)

{

sb.append("<img src=\"");

sb.append(resourceUrlBuilder.createUrl("/share/images/rcux/oracle_logo2.png"));

sb.append("\" ALT=\"ORACLE &reg;\"");

sb.append(" width=\"219\" border=\"0\" height=\"75\">");

}

}

Then also change

sb.append("</td>");

sb.append("<td width=\"100%\" class=\"loginValignTop topbody bottomborder\">");

sb.append("<span id=\"appName\" style=\"position: absolute; top: 25px; left: 220px;\" class=\"appname\"\"> xxxx CMS Australia Development </span>");

sb.append("</td>");

See I changed the height and the title for the login only. Note that the FLAG and the workd “CMS DEV” are part of the image oracle_logo2.png. The words “XXX CMS Australia Development” are the second change that is referenced above.

clip_image006

Job is done. You now have a modified login page and no others.

This can be seen immediately with a refresh. You need to make the changes on the server (of course)

Change colours of top navigation bar:

clip_image009

\\aupdc00-jwb01d\d$\Oracle\Middleware\user_projects\domains\E1_Apps\servers\JWB01D_DVCMSAU_81\stage\JWB01D_DVCMSAU_81\app\webclient.war\share\webguistylesheet.jsp

.topnavtable {

background-color: #006600;

padding-top: 0.2em;

height: 2.5em;

white-space: nowrap;

}


Desktop BIP Installation

$
0
0

Getting issues with 64 bit / 32 bit combinations of office and windows?  This is based on 64 bit windows 7 and 32 bit office 2010, yes it can work!  The tricky bit is getting the version of java right for the installer.

Preparation

Close ALL office products (word, excel, powerpoint and email)

Assumption you are running 32 bit office and 64 bit windows

Download 64 bit java and install

http://java.com/en/download/manual.jsp This page, has the 64 bit download. Download and install this.

http://javadl.sun.com/webapps/download/AutoDL?BundleId=81821

clip_image002

Got control panel and type java, select it

clip_image004

Goto java tab, then view button

Ensure that a version in “Program files” is selected (this is the 64 bit location), not the version in “Program files (x86)

clip_image005

The above is 64 bit!

Install BIP desktop

Now run the bin installer \\aupdc00-jds01d\E910\BIPDesktop

Right click the exec and run as admin

clip_image006

clip_image007

Choose run

clip_image008

Ok

clip_image009

clip_image010

It’ll be done

clip_image012

Promoting E1Pages not working–Work with LCM activity Rules

$
0
0

This is a really quick post, because I know that I’m going to forget it again.  If you are having issues promoting e1pages using P982400, you need to ensure that you have all of the security set up correctly in P982405.  This application controls who can promote e1pages (or user defined content) from one status to another.

  • Pending Review
  • Rework
  • Pending Approval
  • Approved

The above are sample from and to status that you control with this app.

Remember also that these tables are stored in the central objects data source, so any environment associated with the pathcode will see the e1page

clip_image002

Oracle procedures and calling them from a BSFN

$
0
0

We are doing some pretty edgy stuff at the moment.  We are getting JD Edwards to call oracle procedures via OCI calls in kernels.  This is some nice stuff to have complete commitment control over function and procedure calls from within E1.

We are working on all of the syntax and semantic issues at the moment.

At the end of the day we are going to have a generic BSFN that is going to take 3 parameters:

procedurename

parameters in (pipe delimited)

parameters out (pipe delimited)

Therefore, the BSFN can be nice and generic and send a bunch of parameters to the stored proc, it’ll extract them all with it’s beautiful PL/SQL logic and hand any returns back when it is done – nice!

Note that this will be timed out if there is no response to the BSFN in 60 seconds, which will be no good for interactive apps

create or replace Procedure TESTDTA.ProcTest
(procName IN varchar2, environ IN varchar2, paramList IN varchar2, resultsList OUT varchar2)
AS
  nextID number;
BEGIN
DBMS_OUTPUT.PUT_LINE('In Procedure');
SELECT testdta.ProcedureSeq.nextval INTO NextID FROM DUAL ;
insert into TESTDTA.ProcedureTest values (ProcTest.procName, ProcTest.environ, ProcTest.paramList, CAST(nextID as varchar(20) ) );
END;

Run it with the following:

declare
  ReturnVal  varchar(20);
begin
  TESTDTA.ProcTest('This is procedure name', 'DV910', 'This|Is|999|params', ReturnVal);
  DBMS_OUTPUT.ENABLE(1000000);
  dbms_output.put_line(ReturnVal) ;
END ;

Check that things get inserted. 

select * from testdta.ProcedureTEst;

image

Nice, all is working. Note that the procedure needed to be created in the same schema as the sequence and the table.  If I did not create the procedure in the same owner / schema – it was unable to find the sequence or the table even when I explicitly referenced them.

So, this is perfect.  I have a working procedure in my TESTDTA owner – now I have to code the OCI routines to call the procedure.  There are two ways of doing this:  OCI (nice, neat secure) or system out a call to a vbscript (not nice, neat or secure – but quick).  I’m going with OCI.

OCI is going to be slightly painful, for a number of reasons.  I need to use 32bit OCI libraries and I also need to do “loadlib” calls and function pointers – as the oci libs are not going to be in my lib path when compiling BSFN’s on the server (or the client).  This is somewhat painful.  I’ll get it all working standalone and then build my function pointers into a BSFN.

This might be a longer post than usual, so I’ll do it in parts.

JD Edwards performance testing using Oracle Application Testing Suite

$
0
0

I thought that I’d provide some very generic guidelines for performance testing and JD Edwards 9.1.  These figures can be used as a guide for your systems performance.  If course, these tests and scenarios are very limited.

I have a scenario, 1 web server, 1 DB server, 1 app server.  I log into E1, I launch AB, index search 1 record, close AB, open BV, run R0010P, close BV logout close browser.

I create a load test using Oracle Application Test Suite.

I configure all of my counters

I configure 20 concurrent users (to being with)

I choose to have 0 wait time, so I’m perf testing.

I run this scenario for 10 minutes.

What do you think the results might be? 

NameValueMinMaxAvg
Transaction/s.827.0822.5792.272
Pages/s8.8.66726.222.68

image

 

image

 

So these are very interesting stats.  Each user is getting 1 page per second, Each user is getting 10 hits per second.  Each user is generating 58KB/s.

I find the final item interesting, as this allows you to know exactly how much a very fast moving user is using on average for E1 – this is 0 wait time, so a user could not actually achieve this (none that I know).

Like I said, this is a 1 off very simple sample.

Oracle Application Testing Suite is fantastic and is exceptionally easy to use.  Although, what you do not have (and I do) is the ability to compare values between sites and know where you can make considerable performance improvements!

windoze search is a COMPLETE DONKEY

$
0
0

Tell me this, please…

I do the following in windows explorer search:

image

contents:ORA and I get NO results

I search for ORA and then click file contents and I get no results

image

I then go to my trusty command window and enter:

D:\JDEdwards\E910\log>findstr ORA *.log

and I get a TON of results.

I honestly don’t know how we are supposed to trust an OS (a commercially focused OS like 2008R2) if it cannot search the contents of TXT files / log files “out of the box”.

Do I really need to change the role of the server to enable windows search service to search the contents of log files?

Performance testing oracle JD Edwards EnterpriseOne JDE

$
0
0

I’ve done a lot of performance testing of EnterpriseOne.  Back in time I was involved in testing over 10000 users with load runner on a mix of web and citrix.  I’ve now started doing a lot of specific JD Edwards load testing using Oracle Application Testing Suite (OATS). 

Of course OATS can test all of the JD Edwards suite natively, because it’s oracle.  But it can also natively test all of the oracle product suite natively (in fact – ANY web based application).  OATs has accelerators for many of the oracle products, which make recording and reading the scripts a breeze.

Load testing itself is not overly complicated and you can execute this as a “one off” without any problems.  But how do you know what is normal? What is fast? Where improvements can be made? It’s difficult when you only have one set of performance data to use for your comparisons.  What I mean in this situation is, if you are getting average response times of .75 sec, is this good for a 400 user concurrent test?  Can you improve that?  Is 50% CPU utilisation on the database server normal with 300 users connected?  All of these questions are difficult to answer without a frame of reference.

At Myriad, we do load testing for lots of clients with lots of different architectures and we can tell what is fast and what is slow at the various application tiers.  We know where you should be putting your horsepower and we know what is going to make the best difference for your ERP performance.

So what I guess I’m saying is that you can have all of the findings and metrics in the world, but the interpretation of these results is where the value is.  I guess there is a similar analogy with big data, you can have all of the data in the world, but it means nothing until you’ve interpreted it.  It seems to me that the real value of metrics is found with interpretation & comparison rather than merely representation.  In the simplest form, your information is valuable as soon as you make a change and then compare the results.  The metrics start to have value with comparison.  This is true with your performance tuning data, you need to compare your previous results to know if you are making improvements or not, but unless you compare with industry standard benchmarks, you won’t know if there are other gains that you can easily make.

The best thing to do is create a benchmark. Then any changes you make in the system can be compared against this benchmark.  You’ll be able to quantify any performance changes with the user community by comparing the results with your known benchmark.  This could be done for a new tools release, a new piece of hardware, network architecture…  Anything.

Our LTAAS (load testing as a service) offering can enable you to do this remotely, any time you like.  We are able to engineer specific tests for your site and execute them when you want in the concurrency that you want.  We are also able to configure all monitoring to ensure that not only the performance data (in terms of response times) is stored, but also the performance metrics from the hardware.  We can save off your results and then compare them if you execute the tests again.  We are also able to compare these results with know industry benchmarks to ensure that your performance profile is within industry standards.

Remember that you can do all of the tuning in the world, but 1 bad query from a user can bring the system to it’s knees!

This is a great toolset that you are able to augment with your own bag of tricks.  Send me an email shannon.moir@myriad-it.com if you’d like to know more.

Change the oracle Logo for 9.1.X tools releases

$
0
0

Introduction:

You need to make these changes in the runtime directories for E1, but if you replace a tools release they’ll be gone.  I generally set up some vbs / cmd scripts that can refresh all my customisations in one fowl swoop – so that if I deploy a new tools release, all of my skinning changes can be made immediately.  Note that I also like to add new files as opposed to change existing ones, this is why I edit the two jspf files below and not just rename of the oracle_logo.png file.

Changing the oracle logo once you’ve logged in:

imageAnother sample hack.  You get the picture.  Oracle logo gone and your one in it’s place.  With some nice hover text too!

File to change:

D:\Oracle\Middleware\user_projects\domains\E1_Apps\servers\JWB01P_PDCMSAU_94\stage\JWB01P_PDCMSAU_94\app\webclient.war\WEB-INF\jsp\maflet\DropdownHttpMafletWrapperHeader

This is the new

if (!viewBean.getInOWP())

{

%>

<td id=topimagecell valign="top" class="topimagecell">

<table border="0" cellspacing="0" cellpadding="0" width="100%" class="topnavtable">

<tbody>

<tr>

<td><img id="UISp1" src="<webgui:resourceUrl resourceUrl="afr/t.gif"/>" alt="" width="4" height="0px"></td>

<td><img id="oracleImage" onclick="javascript:goHome();" alt="Myriad IT Services" width="90" height="23px" style="cursor:pointer; padding-top: 1px;"

src="<webgui:resourceUrl resourceUrl="images/rcux/myriad_logo.png"/>"></td>

<td><img id="UISp2" src="<webgui:resourceUrl resourceUrl="afr/t.gif"/>" alt="" width="3" height="0px"></td>

<td><span onclick="javascript:goHome();" style="white-space:nowrap; cursor:pointer;" class="appname" id="Sot13">JD Edwards EnterpriseOne</span></td>

<td nowrap="nowrap" align="<%=viewBean.getOppositeBaseAlignment()%>" valign="top" width="90%" class=toptext>

<table border=0 cellpadding=0 cellspacing=0 role="menubar">

<tbody>

<tr>

Changing the oracle logo on the login page:

imageSorry about the hack demo – I didn’t have time to do it nicely.  Shows you what you are changing though.

file to change.

\\webserver\d$\Oracle\Middleware\user_projects\domains\E1_Apps\servers\JWB01P_PDFIN_96\stage\JWB01P_PDFIN_96\app\webclient.war\share\loginDecoration.jspf

if ( (companyLogoImageURL != null) && (companyLogoImageURL.length() > 0) || smallScreen )

{

if (companyLogoImageURL.length() != 0)

{

sb.append("<img src=\"");

sb.append(resourceUrlBuilder.createUrl("/share/images/rcux/myriad_logo.png"));

sb.append("\" ALT=\"ORACLE &reg;\"");

sb.append(" width=\"219\" border=\"0\" height=\"75\">");

}

}

Else


Oracle scripting for JD Edwards

$
0
0

Some tips and tricks for oracle scripting:

Have a standardised header for your scripts.  Here is a standard header and footer that I like to use.  Basic and can be augmented to what you want:

 

column filename new_val filename
select 'GenerateStats_' || to_char(sysdate, 'yyyymmdd' ) filename from dual;
spool &filename

set echo on

set timing on
select to_char(sysdate,'HH24:MI:SS') from dual;
select to_char(sysdate,'YYY MM DD') from dual;

 

Script goes here

 

select to_char(sysdate,'HH24:MI:SS') from dual;
select to_char(sysdate,'YYY MM DD') from dual;

set echo off

spool off;

quit;

Something like this will spool to the current directory and log to a filename that is unique based upon day.  that is pretty nice.  You need to use things like this when you are doing cutovers or go-lives and need auditable results.

 

SELECT 'SELECT DBMS_METADATA.GET_DDL(''' || 'INDEX''' || ',''' || index_name || '''' || ',''' || 'UAFINDTA' || ''')'  || ' FROM dual ;'
from all_indexes t1 where t1.table_owner = 'UAFINDTA'
and not exists (select 1 from all_indexes t2 where t2.table_owner = 'PYFINDTA' and t1.index_name = t2.index_name  );

Remember that catalogs and functions are your friend.  The number of cool queries that you can do over all_indexes and all_tables is limitless.  The above query will generate the statements that will generate DDL for all indexes in the UAFINDTA schema that is not in PYFINDTA.

remember to add PARALLEL clauses and also NOLOGGING if you are allowed – this’ll make index generates up to 50% quicker.

codechangecom.exe What is this?

$
0
0

codechangecom.exe is a slimer provided to you in your client system\bin32 dir which can be used to convert existing single byte “C” BSFN’s to unicode compliant code.

That is nice!

C:\E910_1\system\bin32>codechangecom.exe

Expected the following parameters
<input File> <outputfile> <mode>

So, what do we put in the parameters – please see https://support.oracle.com/epmos/faces/DocContentDisplay?_afrLoop=109554459225750&id=626598.1&_afrWindowMode=0&_adf.ctrl-state=76dfd0sjx_77 for all of the details, but I’ll summarise

Parameter 1:
CommandFile is a filename which contains commands for CodeChangeCom. It is not the name of a file you wish to convert. Commands in the file tell CodeChangeCom what files to convert. There are four formats for each command. Each command is a single line in the file. Here is an example command:
C:\fun\in\the\sun –r
This tells CodeChangeCom to find every .h, .c, .cpp, .hpp file in the directory c:\fun\in\the\sun, plus all the files in every subdirectory under that directory. Here is another example:
! C:\fun\in\the\sun\sunblock.c
This tells CodeChangeCom to not change the file sunblock.c in the given directory. Here is another example:
C:\fun\in\the\
This tells CodeChangeCom to change every file in the directory c:\fun\in\the\, but not any of the subdirectories of that directory. Here is the last example:
! C:\fun\in\the\sun\sand\
This tells CodeChangeCom to skip the entire directory c:\fun\in\the\sun\sand, regardless of how many files are in that directory.

Parameter 2:

This is a simple filename, which will contain the results of the operations after it has finished. If the program just reports on changes – but doesn’t actually do them, then the results are in this file.

Parameter3:
This is the word “audit” or the word “convert”. If it is “audit” then only results will be reported, no changes will be made. If it is “convert” then the code will be converted, but what is actually changed will not be recorded anywhere.

 

Wow, talk about a complicated way of doing things!  Why not param 1: filename in param 2: filename out param3: mode ????

So, I’ll create a commands.txt file with the following contents (I just want the include and the source checked)

C:\e910_1\dv910\source\b5801002.c

C:\e910_1\dv910\include\b5801002.h

Then I’ll run codechangecom.exe commands.txt changes.txt audit

 

The output I get:

========>Parsing File: \e910_1\dv910\source\b5801002.c <=======

   66: jdeErrorSet (lpBhvrCom, lpVoid, (ID) 0, "4363", (LPVOID) NULL);
----->                                         1
       1. Literal string requires enclosure in appropriate macro.

   73: memset((void *)&dsD5801000T, (int)('\0'), sizeof(dsD5801000T));
----->                                    1
       1. Literal string requires enclosure in appropriate macro.

   80:                   (char *)NULL,
----->                    1
                               (char *)NULL,
----->                          2
       1. 'JCHAR' replaces 'char'.
       2. 'JCHAR' replaces 'char'.
========>Parsing File: \e910_1\dv910\include\b5801002.h <=======

   89: char              szFunctionName[33];
-----> 1
       1. 'JCHAR' replaces 'char'.

Note that the source and include I’m parsing is VERY simple.  I don’t think that it’s important that I list the source and include – you can see  the good work that it’s done.

Next is to run it in convert mode!

Great, my code is ALL unicode – lets try a compile!

Compile works first time.  this is why you use the JD Edwards provided functions and you get to use utilities like this!

JD Edwards and LDAP integration–easily support long usernames and long passwords in JDE

$
0
0

There is no typo in the page title, it’s possible to support long usernames and long passwords with JD Edwards using a simple IIS application that we can provide for you.  The myLUNCH (Long UserName Credential Handler) product not only has one of the best names in the industry, it also works like a treat! 

MyLunch is able to authenticate users using their LDAP (Microsoft Active Directory) username and password, not matter what the length or complexity!  The product can either authenticate natively (good for some users) or via LDAP on a user by user basis.

The product is a very simple IIS site that can be setup in hours, it can also do load balancing of your production web servers using it’s built in multiple destination functionality.

Instead of getting the JDEdwards login page, we direct the user to a New login page asking for LDAP credentials.  If the user attempts to login, the software firstly determines if the username is an LDAP user or a JD Edwards authentication user. As soon as this is determined, the authentication method is executed against the relevant target.  The user is then simply signed into JD Edwards.

This can be done via SSL or standard sockets:

image

Enter your domain username and password of any length

image

You are signed into E1.

When you sign out you are back to the customised login page.  It’s that simple.

We give you the ability to map your long usernames with your JD Edwards usernames:

image

Any changes of mapping are written to the standard security audit tables (F9312).

This works with shortcuts too.

So, this is a simple JD Edwards solution for allowing users with long usernames and passwords to log into JD Edwards.  Remember that ANY solution will have some username translation, as the DD field in e1 for USER (audit stamps, users etc) is only 10 characters long.

The software includes the ability to bulk load the JD Edwards tables with the usernames and mappings, so you can convert to AD authentication in minutes, not days. 

Contact me at shannon. moir @ myriad-it . com for a demo.  I plan to post a youtube video soon.

iPad Application for E1

$
0
0

If you want to try this and are not on the latest tools release, then it’s still possible.  What is the iPad application you ask?  It’s a fully functioning JD Edwards application for the iPad.  It does some really nice interface things to make the iPad for functional for the end user. 

So, what do you need to do?

1.  goto the app Store on your IPad and search for Jd Edwards IPad application

image

2.  Install it

3.  Enter your website URL, if you don’t have one – use ours:  http://e91demo1.myriad-it.com/jde

photo

4.  Enter your JDE username and password

image

NOTE:  If you do not have a demo account with Myriad, then register for one here:  http://e91demo.myriad-it.com/jde/E1Menu.maf  this registration is immediate.

Enjoy – now was that not easy!

image

Remember that if your company does not expose the URL to the internet, you’re going to need an VPN connection to login in.

Types of user overrides for JDE JD Edwards 9.1

$
0
0

CK : User Preference Cookies

(what is saved in user preferences – Enable Hover Forms etc)

GF : Grid Format

(added when user adds a frid format) One per version/form/sub form

GD : Grid Format Detail

UO records created when user adds a grid format, one record per grid format.

'GD' records are not shown in P98950 application but shown in UTB or Data Browser. Only GF record is shown in P98950 application. When a user deletes a GF record in P98950, GD records for the form are also deleted.

Note that these can become corrupt, especially after an upgrade.  Note that one bad GD can spoil many good ones, as they are loaded all together and then it’s determined which ones will be shown.

You’ll get a message like the below if you have corrupt GD’s.  Remember you are going to need to get rid of them with SQL, as they do not come up in P98950.

05 Feb 2014 09:24:23,909 [Line -1] [SEVERE] SMOIR - [RUNTIME] GridTabFormatModelCache.byteArrayToXMLDocument(): SAXException. org.xml.sax.SAXParseException: XML document structures must start and end within the same entity.

HC : Hyper Control

Fat boy remebers menu and toolbar preferences

JC: Legacy Type (also known as Job Cost)

OL : OLE Object

PC : Portal Component

PP : Portlet Preferences

SQ : Saved Query

When you save a Query using the save query control.  Data browser or form

TT : Translation Tool Settings

FA : Favorites / Favourites

These are them, remember this

AQ : Advanced Query

Any advanced queries that you save

UI : E1 Pages

RI : Related Information Application Framework

JD Edwards seeing the content of your BLOBS (ooohhh errr)

$
0
0

I know it sounds a little personal, but I’ve often wanted to look into the contents of some ones UO (user overrride) BLOBs to verify problems.

It’s not overly simple, but with the help of friends in high places:  www.dba-oracle.com/t_convert_blob_varchar_datatype.htm

So, if you create the function then you can use it some SQL – first create the function F

create or replace function F(B BLOB)
return clob is
  c clob;
  n number;
begin
  if (b is null) then
    return null;
  end if;
  if (length(b)=0) then
    return empty_clob();
  end if;
  dbms_lob.createtemporary(c,true);
  n:=1;
  while (n+32767<=length(b)) loop
    dbms_lob.writeappend(c,32767,utl_raw.cast_to_varchar2(dbms_lob.substr(b,32767,n)));
    n:=n+32767;
  end loop;
  dbms_lob.writeappend(c,length(b)-n+1,utl_raw.cast_to_varchar2(dbms_lob.substr(b,length(b)-n+1,n)));
  return c;
end;

Then use it in your SQL

select f(uobindta) from dv910.f98950
where UOOBNM = 'P5310' and uovers = 'CMS0002' and uouoty in ('GF','GD')
and uouser = '*PUBLIC';

You’ll get something like the following, note that this is a corruption:  Not ending with the correct tag.

"(CLOB) <?xml version="1.0" encoding="UTF-8"?>
<GridOverride><formatType>0</formatType><seqNumber>1</seqNumber><numCols>48</numCols><retCol>0</retCol><freezeCol>0</freezeCol><freezeRow>0</freezeRow><zoomFactor>100</zoomFactor><formatName>CMS</formatName><isPixel>1</isPixel><gridColumn><virtCol>1</virtCol><origCol>1</origCol><backColor>-1</backColor><foreColor>0</foreColor><idObject>22</idObject><colWidth>68</colWidth><colHidden>0</colHidden><fontHeader><height>-12</height><width>0</width><weight>700</weight><charset>1</charset><faceName>Arial</faceName><italic>0</italic><underline>0</underline><strikeout>0</strikeout></fontHeader><fontCol><height>-12</height><width>0</width><weight>400</weight><charset>1</charset><faceName>Arial</faceName><italic>0</italic><underline>0</underline><strikeout>0</strikeout></fontCol><alias>MCU</alias><sortSeq>1</sortSeq><sortOrder>A</sortOrder></gridColumn><gridColumn><virtCol>2</virtCol><origCol>2</origCol><backColor>-1</backColor><foreColor>0</foreColor><idObject>23</idObject><colWidth>62</colWidth><colHidden>0</colHidden><fontHeader><height>-12</height><width>0</width><weight>700</weight><charset>1</charset><faceName>Arial</faceName><italic>0</italic><underline>0</underline><strikeout>0</strikeout></fontHeader><fontCol><height>-12</height><width>0</width><weight>400</weight><charset>1</charset><faceName>Arial</faceName><italic>0</italic><underline>0</underline><strikeout>0</strikeout></fontCol><alias>CONO</alias><sortSeq>2</sortSeq><sortOrder>A</sortOrder></gridColumn><gridColumn><virtCol>3</virtCol><origCol>3</origCol><backColor>-1</backColor><foreColor>0</foreColor><idObject>24</idObject><colWidth>221</colWidth><colHidden>0</colHidden><fontHeader><height>-12</height><width>0</width><weight>700</weight><charset>1</charset><faceName>Arial</faceName><italic>0</italic><underline>0</underline><strikeout>0</strikeout></fontHeader><fontCol><height>-12</height><width>0</width><weight>400</weight><charset>1</charset><faceName>Arial</faceName><italic>0</italic><underline>0</underline><strikeout>0</strikeout></fontCol><alias>DL01</alias><sortSeq>0</sortSeq><sortOrder>A</sortOrder></gridColumn><gridColumn><virtCol>13</virtCol><origCol>4</origCol><backColor>-1</backColor><foreColor>0</foreColor><idObject>25</idObject><colWidth>60</colWidth><colHidden>0</colHidden><fontHeader><height>-12</height><width>0</width><weight>700</weight><charset>1</charset><faceName>Arial</faceName><italic>0</italic><underline>0</underline><strikeout>0</strikeout></fontHeader><fontCol><height>-12</height><width>0</width><weight>400</weight><charset>1</charset><faceName>Arial</faceName><italic>0</italic><underline>0</underline><strikeout>0</strikeout></fontCol><alias>REQB</alias><sortSeq>0</sortSeq><sortOrder>A</sortOrder></gridColumn><gridColumn><virtCol>4</virtCol><origCol>5</origCol><backColor>-1</backColor><foreColor>0</foreColor><idObject>26</idObject><colWidth>46</colWidth><colHidden>0</colHidden><fontHeader><height>-12</height><width>0</width><weight>700</weight><charset>1</charset><faceName>Arial</faceName><italic>0</italic><underline>0</underline><strikeout>0</strikeout></fontHeader><fontCol><height>-12</height><width>0</width><weight>400</weight><charset>1</charset><faceName>Arial</faceName><italic>0</italic><underline>0</underline><strikeout>0</strikeout></fontCol><alias>BSTC</alias><sortSeq>0</sortSeq><sortOrder>A</sortOrder></gridColumn><gridColumn><virtCol>8</virtCol><origCol>6</origCol><backColor>-1</backColor><foreColor>0</foreColor><idObject>27</idObject><colWidth>57</colWidth><colHidden>0</colHidden><fontHeader><height>-12</height><width>0</width><weight>700</weight><charset>1</charset><faceName>Arial</faceName><italic>0</italic><underline>0</underline><strikeout>0</strikeout></fontHeader><fontCol><height>-12</height><width>0</width><weight>400</weight><charset>1</charset><faceName>Arial</faceName><italic>0</italic><underline>0</underline><strikeout>0</strikeout></fontCol><alias>OREQ</alias><sortSeq>0</sortSeq><sortOr..."

 

See how this output is truncated in SQLDeveloper whether I run it as a script or just run it – a real pain.

 

I need to go “old school” on it to get all of the unadulterated data, I use a script like this is SQL plus:

spool F98950.txt
set linesize 30000
set long 80000
set pagesize 0
set wrap on
select f(uobindta) from dv910.f98950
where UOOBNM = 'P5310' and uovers = 'CMS0002' and uouoty in ('GF','GD')
and uouser = '*PUBLIC';
spool off

 

See below for a nicely truncated UO:

 

<?xml version="1.0" encoding="UTF-8"?>
<GridOverride><formatType>0</formatType><seqNumber>1</seqNumber><numCols>146</nu
mCols><retCol>19</retCol><freezeCol>4</freezeCol><freezeRow>-32767</freezeRow><z
oomFactor>100</zoomFactor><formatName>GW Format</formatName><isPixel>1</isPixel>
<gridColumn><virtCol>2</virtCol><origCol>1</origCol><backColor>-1</backColor><fo
reColor>0</foreColor><idObject>135</idObject><colWidth>235</colWidth><colHidden>
0</colHidden><fontHeader><height>-12</height><width>0</width><weight>700</weight
><charset>1</charset><faceName>Arial</faceName><italic>0</italic><underline>0</u
nderline><strikeout>0</strikeout></fontHeader><fontCol><height>-12</height><widt
h>0</width><weight>400</weight><charset>1</charset><faceName>Arial</faceName><it
alic>0</italic><underline>0</underline><strikeout>0</strikeout></fontCol><alias>
DL01</alias><sortSeq>0</sortSeq><sortOrder>A</sortOrder></gridColumn><gridColumn
><virtCol>3</virtCol><origCol>2</origCol><backColor>-1</backColor><foreColor>0</
foreColor><idObject>137</idObject><colWidth>55</colWidth><colHidden>0</colHidden
><fontHeader><height>-12</height><width>0</width><weight>700</weight><charset>1<
/charset><faceName>Arial</faceName><italic>0</italic><underline>0</underline><st
rikeout>0</strikeout></fontHeader><fontCol><height>-12</height><width>0</width><
weight>400</weight><charset>1</charset><faceName>Arial</faceName><italic>0</ital
ic><underline>0</underline><strikeout>0</strikeout></fontCol><alias>SCOS</alias>

<sortSeq>0</sortSeq><sortOrder>A</sortOrder></gridColumn><gridColumn><virtCol>5<
/virtCol><origCol>3</origCol><backColor>-1</backColor><foreColor>0</foreColor><i
dObject>167</idObject><colWidth>111</colWidth><colHidden>0</colHidden><fontHeade
r><height>-12</height><width>0</width><weight>700</weight><charset>1</charset><f
aceName>Arial</faceName><italic>0</italic><underline>0</underline><strikeout>0</
strikeout></fontHeader><fontCol><height>-12</height><width>0</width><weight>400<
/weight><charset>1</charset><faceName>Arial</faceName><italic>0</italic><underli
ne>0</underline><strikeout>0</strikeout></fontCol><alias>OQTC</alias><sortSeq>0<
/sortSeq><sortOrder>A</sortOrder></gridColumn><gridColumn><virtCol>6</virtCol><o
rigCol>4</origCol><backColor>-1</backColor><foreColor>0</foreColor><idObject>390
</idObject><colWidth>0</colWidth><colHidden>1</colHidden><fontHeader><height>-12
</height><width>0</width><weight>700</weight><charset>1</charset><faceName>Arial
</faceName><italic>0</italic><underline>0</underline><strikeout>0</strikeout></f
ontHeader><fontCol><height>-12</height><width>0</width><weight>400</weight><char
set>1</charset><faceName>Arial</faceName><italic>0</italic><underline>0</underli
ne><strikeout>0</strikeout></fontCol><alias>CO</alias><sortSeq>0</sortSeq><sortO
rder>A</sortOrder></gridColumn><gridColumn><virtCol>7</virtCol><origCol>5</origC
ol><backColor>-1</backColor><foreColor>0</foreColor><idObject>163</idObject><col
Width>126</colWidth><colHidden>0</colHidden><fontHeader><height>-12</height><wid
th>0</width><weight>700</weight><charset>1</charset><faceName>Arial</faceName><i
talic>0</italic><underline>0</underline><strikeout>0</strikeout></fontHeader><fo
ntCol><height>-12</height><width>0</width><weight>400</weight><charset>1</charse
t><faceName>Arial</faceName><italic>0</italic><underline>0</underline><strikeout
>0</strikeout></fontCol><alias>CURO</alias><sortSeq>0</sortSeq><sortOrder>A</sor
tOrder></gridColumn><gridColumn><virtCol>8</virtCol><origCol>6</origCol><backCol
or>-1</backColor><foreColor>0</foreColor><idObject>138</idObject><colWidth>111</
colWidth><colHidden>0</colHidden><fontHeader><height>-12</height><width>0</width
><weight>700</weight><charset>1</charset><faceName>Arial</faceName><italic>0</it
alic><underline>0</underline><strikeout>0</strikeout></fontHeader><fontCol><heig
ht>-12</height><width>0</width><weight>400</weight><charset>1</charset><faceName
>Arial</faceName><italic>0</italic><underline>0</underline><strikeout>0</strikeo
ut></fontCol><alias>COAM</alias><sortSeq>0</sortSeq><sortOrder>A</sortOrder></gr

idColumn><gridColumn><virtCol>13</virtCol><origCol>7</origCol><backColor>-1</bac
kColor><foreColor>0</foreColor><idObject>180</idObject><colWidth>112</colWidth><
colHidden>0</colHidden><fontHeader><height>-12</height><width>0</width><weight>7
00</weight><charset>1</charset><faceName>Arial</faceName><italic>0</italic><unde
rline>0</underline><strikeout>0</strikeout></fontHeader><fontCol><height>-12</he
ight><width>0</width><weight>400</weight><charset>1</charset><faceName>Arial</fa
ceName><italic>0</italic><underline>0</underline><strikeout>0</strikeout></fontC
ol><alias>ROAM</alias><sortSeq>0</sortSeq><sortOrder>A</sortOrder></gridColumn><
gridColumn><virtCol>14</virtCol><origCol>8</origCol><backColor>-1</backColor><fo
reColor>0</foreColor><idObject>148</idObject><colWidth>0</colWidth><colHidden>1<
/colHidden><fontHeader><height>-12</height><width>0</width><weight>700</weight><
charset>1</charset><faceName>Arial</faceName><italic>0</italic><underline>0</und
erline><strikeout>0</strikeout></fontHeader><fontCol><height>-12</height><width>
0</width><weight>400</weight><charset>1</charset><faceName>Arial</faceName><ital
ic>0</italic><underline>0</underline><strikeout>0</strikeout></fontCol><alias>MC
U</alias><sortSeq>0</sortSeq><sortOrder>A</sortOrder></gridColumn><gridColumn><v
irtCol>15</virtCol><origCol>9</origCol><backColor>-1</backColor><foreColor>0</fo
reColor><idObject>149</idObject><colWidth>0</colWidth><colHidden>1</colHidden><f
ontHeader><height>-12</height><width>0</width><weight>700</weight><charset>1</ch
arset><faceName>Arial</faceName><italic>0</italic><underline>0</underline><strik
eout>0</strikeout></fontHeader><fontCol><height>-12</height><width>0</width><wei
ght>400</weight><charset>1</charset><faceName>Arial</faceName><italic>0</italic>
<underline>0</underline><strikeout>0</strikeout></fontCol><alias>CONO</alias><so
rtSeq>0</sortSeq><sortOrder>A</sortOrder></gridColumn><gridColumn><virtCol>16</v
irtCol><origCol>10</origCol><backColor>-1</backColor><foreColor>0</foreColor><id
Object>150</idObject><colWidth>0</colWidth><colHidden>1</colHidden><fontHeader><
height>-12</height><width>0</width><weight>700</weight><charset>1</charset><face
Name>Arial</faceName><italic>0</italic><underline>0</underline><strikeout>0</str
ikeout></fontHeader><fontCol><height>-12</height><width>0</width><weight>400</we
ight><charset>1</charset><faceName>Arial</faceName><italic>0</italic><underline>
0</underline><strikeout>0</strikeout></fontCol><alias>REQB</alias><sortSeq>0</so
rtSeq><sortOrder>A</sortOrder></gridColumn><gridColumn><virtCol>17</virtCol><ori
gCol>11</origCol><backColor>-1</backColor><foreColor>0</foreColor><idObject>253<
/idObject><colWidth>0</colWidth><colHidden>1</colHidden><fontHeader><height>-12<
/height><width>0</width><weight>700</weight><charset>1</charset><faceName>Arial<
/faceName><italic>0</italic><underline>0</underline><strikeout>0</strikeout></fo
ntHeader><fontCol><height>-12</height><width>0</width><weight>400</weight><chars
et>1</charset><faceName>Arial</faceName><italic>0</italic><underline>0</underlin
e><strikeout>0</strikeout></fontCol><alias>RQBD</alias><sortSeq>0</sortSeq><sort
Order>A</sortOrder></gridColumn><gridColumn><virtCol>4</virtCol><origCol>12</ori
gCol><backColor>-1</backColor><foreColor>0</foreColor><idObject>134</idObject><c
olWidth>72</colWidth><colHidden>0</colHidden><fontHeader><height>-12</height><wi
dth>0</width><weight>700</weight><charset>1</charset><faceName>Arial</faceName><
italic>0</italic><underline>0</underline><strikeout>0</strikeout></fontHeader><f
ontCol><height>-12</height><width>0</width><weight>400</weight><charset>1</chars
et><faceName>Arial</faceName><italic>0</italic><underline>0</underline><strikeou
t>0</strikeout></fontCol><alias>LNID</alias><sortSeq>1</sortSeq><sortOrder>A</so
rtOrder></gridColumn><gridColumn><virtCol>18</virtCol><origCol>13</origCol><back
Color>-1</backColor><foreColor>0</foreColor><idObject>254</idObject><colWidth>0<
/colWidth><colHidden>1</colHidden><fontH

 

When a GD and GF is saved properly, the output is more like the below (note that this is 50Kb for a single UO!!!!

<foreColor>0</foreColor>
<idObject>121</idObject>
<colWidth>65</colWidth>
<colHidden>0</colHidden>
<colFrzHidden>0</colFrzHidden>
<colFrozen>0</colFrozen>
<fontHeader>
<height>-12</height>
<width>0</width>
<weight>700</weight>
<charset>1</charset>
<faceName>Arial</faceName>
<italic>0</italic>
<underline>0</underline>
<strikeout>0</strikeout>
</fontHeader>
<fontCol>
<height>-12</height>
<width>0</width>
<weight>400</weight>
<charset>1</charset>
<faceName>Arial</faceName>
<italic>0</italic>
<underline>0</underline>
<strikeout>0</strikeout>
</fontCol>
<alias>USER</alias>
<sortSeq>0</sortSeq>
<sortOrder>A</sortOrder>
</gridColumn>
</GridOverride>

JDE user overrides–a couple of facts that perhaps you did not know:

$
0
0

User overrides are storing more and becoming very important for users and productivity.  You can do lots with them, they follow you around – they are great.  But if you are going to harness the power of them, you need to know some of the pitfalls / nuances.  Here are a couple that are important.

In current releases, such as 8.97, new records will be created for each user when they launch the application.  For example, if there is a *PUBLIC override on P01012, when the user launches that application, a new record in the F98950 table will be created using that users ID.  This is working as designed and was a necessary change for the web client.  If changes to the *PUBLIC user override are made, delete the users current overrides.  Then the new *PUBLIC override will create the entries when the user launches the application.  Please note that this is wrong, In my testing (9.1.3.4) this does not occur unless you change the UO, when you change it and log out – it’ll save it as an individual UO – of course it will not change public.

When promoting an interactive application within Object Management Workbench (P98220), the *PUBLIC User Override records for the application will be automatically promoted when the interactive application is promoted. Therefore, it is not a requirement that *PUBLIC User Override records be added to a project in Object Management Workbench in order to be promoted. However, individual override record (i.e. User Override record by User ID/Role) will still need to be added in the Object Management Workbench in order for it to be promoted.  Wow, that is new for me…  Might drag up rubbish from DV910 that you did not intend!


Simple post–simple consultant!

$
0
0

I could not for the life of my synchronise any jas.ini or jdbj.ini files to one of my production web clusters via server manager.  Everything else was working fine.  This is for WLS 10.3.5 and 9.1.3.3

I got the following in my server_manager agent logs:

WARNING: Stdout: weblogic.Deployer invoked with options:  -adminurl t3://AUBDC00-JWB01P.au.ad.westfield.com:7001 -userconfigfile D:\\jde_home\\SCFHA\\targets\\JWB01P_WLS\\config\\owlConfig.secure -userkeyfile D:\\jde_home\\SCFHA\\targets\\JWB01P_WLS\\config\\owlKey.secure -name JWB01P_PDCMSAU_94 -redeploy webclient.war/WEB-INF/classes<02/04/2014 10:55:17 AM EST> <Info> <J2EE Deployment SPI> <BEA-260121> <Initiating redeploy operation for application, JWB01P_PDCMSAU_94 [archive: null], to configured targets.> [Deployer:149163]The domain edit lock is owned by another session in non-exclusive mode - this deployment operation requires exclusive access to the edit lock and hence cannot proceed. If you are using "Automatically Aquire Lock and Activate Changes" in the console, then the lock will expire shortly so retry this operation. Exitcode: 1
02/04/2014 10:55:22 AM com.jdedwards.mgmt.targets.owl.OWLJ2EEServer updateApplicationFiles
WARNING: Stderr:
02/04/2014 10:55:22 AM com.jdedwards.mgmt.targets.owl.OWLJ2EEServer updateApplicationFiles
WARNING: Update application files.  Exception: UPDATE FAILED: Redeploy of application 'JWB01P_PDCMSAU_94' using location 'webclient.war/WEB-INF/classes'.
02/04/2014 10:55:22 AM com.jdedwards.mgmt.targets.webserver.WebServer synchronizeConfiguration
WARNING: Could not update remote configuration files for instance JWB01P_PDCMSAU_94
This is usually the result when one of the application servers of a cluster not running.
Make sure all servers are running and issue the sychronization again. Check logs for root cause.
Exception invoking method updateApplicationFiles
02/04/2014 10:55:22 AM com.jdedwards.mgmt.targets.ManagedTarget recordHistoricalEvent
FINE: Recording historical event 'stateChanged' for instance 'JWB01P_PDCMSAU_94'.

I got the following through SM – classic

image

Could not update remote configuration files for instance JWB01P_PDCMSAU_94 This is usually the result when one of the application servers of a cluster not running. Make sure all servers are running and issue the sychronization again. Check logs for root cause. Exception invoking method updateApplicationFiles
Failure during invoke:invoke(, , synchronizeConfiguration) javax.management.MBeanException : Could not update remote configuration files for instance JWB01P_PDCMSAU_94 This is usually the result when one of the application servers of a cluster not running. Make sure all servers are running and issue the sychronization again. Check logs for root cause. Exception invoking method updateApplicationFiles

This is an example of an error message being too helpful, as it’s making assumptions about the problem, I have no cluster.  Also this is NOT helping, because the problem is more obvious!!!  How about the message says “you’ve locked the weblogic config you dill, how about you unlock it via your weblogic console so that I can update my files”.

 

image

 

Wow, sometimes blogging reveals some embarrassing situations. 

Once released – update worked as it should.

Starting JD Edwards weblogic processes automatically–best practice

$
0
0

Best practice for starting weblogic processes:

Intro

You are going to use weblogic.WLST scripting. This is available in interactive or batch mode. If you are having issues, I recommend using interactive mode for debugging.

You can access the console by setting your domainEnv (as per below):

Testing

D:\Oracle\Middleware\user_projects\domains\E1_Apps\bin\setDomainEnv.cmd

I like to check my java version

java –version

Then start the command interface

java weblogic.WLST

(you can exit with exit() )

Change nodemanager username and password:

Generate some secure connection files, but remember to firstly change the default username and password for logging into the node manager:

This was very helpful:

http://oraclemiddlewareblog.com/2012/01/15/cannot-connect-to-node-manager-access-to-domain-for-user-weblogic-denied/

Make sure you log into: http://localhost:7001/console/login/LoginForm.jsp (this is the default URL)

clip_image002

Lock and edit

clip_image004

Activate changes, they should work immediately. See that I’ve set them the same as weblogic

Generate userconfigfile & userkeyfile

Then you’ll be able to issue the connect statement from weblogic.WLST

So, generate the userconfigfile and the userkeyfile – so passwords just are not hanging about!

java weblogic.Admin -adminurl t3://adminserverl:port -username <adminusername> -password <adminpassword> -userconfigfile userconfig -userkeyfile userkey –STOREUSERCONFIG

d:\Oracle\Middleware\user_projects\domains\E1_Apps>java weblogic.Admin –adminurl t3://localhost:7003 -username weblogic -password xxxx -userconfigfile user config -userkeyfile userkey –STOREUSERCONFIG

clip_image005

Copy these files to a dir of choice. I then use 2 files, a bat file and a command file to pass into weblogic.WLST

clip_image007

Create your scripts:

Note that I have my security files and also the cmd and py commands.

startJDE.bat

@rem Script to start

call D:\Oracle\Middleware\user_projects\domains\E1_Apps\bin\setDomainEnv.cmd

java weblogic.WLST D:\StartWeb\StartJDE.py > d:\startweb\StartJDE.log

@exit

StartJDE.py

print 'starting the script .... '

redirect('d:\StartWeb\WLSTLogs.txt')

startNodeManager(verbose='true',NodeManagerHome='D:/Oracle/Middleware/wlserver_10.3/common/nodemanager',ListenPort='5556', ListenAddress='' );

nmConnect(userConfigFile='d:\StartWeb\userconfigNM.secure',userKeyFile='d:\StartWeb\userkeyNM.secure',domainName='E1_Apps', port='5556', nmType='ssl')

nmStart('AdminServer');

nmStart('JWB02P_PDCMSAU_94');

nmStart('JWB02P_PDCMSNZ_95');

nmStart('JWB02P_PDFIN_96');

nmStart('JWB02P_PDFIN_97');

exit()

Then schedule the script to run as a domain account (same as server manager) in the task scheduler.  Therefore all of your processes will start as the correct user and SM will be able to communicate with them.

Is midnight AM or PM?

$
0
0

If your life depended on it, do you really and truly know the answer?

I know this is a pretty dumb question, but…  I was asked to schedule a job for 12 midnight and did not really know if I should be selecting AM or PM in the “AM or PM indicator”. 

Google has informed me that midnight is AM and midday is PM – thanks Google, no more midday reboots!

A very sad day for a great operating system

$
0
0

What a great OS, shame to see it go.  It hosts all my VM’s that I use for connecting to clients – lean and mean.

I might have to start running linux guests.

image

startup.properties and customising timeout and much more

$
0
0

What I found is that when I use nmstart, the values that I put into web.xml are not being picked up. 

background:

So, in web.xml I have added:

<session-config>

<session-timeout>60</session-timeout>

</session-config>

This is great, timeout working when I start from either weblogic console or E1!  Wow, things are working so nicely.  But people are telling me (replace t with Y yelling)

So, what is needed

D:\Oracle\Middleware\user_projects\domains\E1_Apps\servers\JWB01P_PDCMSAU_94\data\nodemanager

#Server startup properties

#Fri Apr 04 16:30:07 EST 2014

Arguments=-XX\:MaxPermSize\=256m -Djavax.xml.rpc.ServiceFactory\=oracle.j2ee.ws.client.ServiceFactoryImpl -Xms32m -Xmx1536m

SSLArguments=-Dweblogic.security.SSL.ignoreHostnameVerification\=false -Dweblogic.ReverseDNSAllowed\=false

RestartMax=2

RestartDelaySeconds=0

RestartInterval=3600

ClassPath=D\:\\Oracle\\Middleware\\wlserver_10.3\\server\\lib\\weblogic.jar;D\:\\jde_home\\SCFHA\\targets\\JWB01P_WLS\\config\\jdbc\\E1_Apps\\JWB01P_PDCMSAU_94\\jt400.jar

AdminURL=http\://10.38.16.10\:7001

AutoRestart=true

AutoKillIfFailed=false

weblogic.httpd.session.timeoutSecs=3600

So now, when nmstart is being used, my new timeout and new JVM sizes are being used.

Viewing all 542 articles
Browse latest View live


Latest Images