Tuesday, October 13, 2015

Writing JD Edwards mobile apps..??

There has been a massive change in mobile app development over the last couple of tools releases. The latest modifications are fantastic.
Start your learning journey here:
https://support.oracle.com/epmos/faces/DocContentDisplay?_afrLoop=925295454654543&id=1932603.1&_afrWindowMode=0&_adf.ctrl-state=z3b4xcg6i_501

You’ll need support.oracle.com credentials.  The documentation is awesome and so are the examples.  They are making it very easy to use tested and existing application functionality in the mobile space.
http://docs.oracle.com/cd/E24705_01/doc.91/e56635/img/jde_e1_mobile_arch.gif

This is probably some sort of infringement, but it’s for the greater good.  You can see now that there is an AIS server (J2EE container) which is the gateway between the mobile device and the application data and logic via the “FormServiceRequest” method available from the native E1 web installation.  Cool!
So essentially you are turning an E1 form into a class, with standard CRUD type functionality.
http://docs.oracle.com/cd/E24705_01/doc.91/e56635/img/json_in_and_out.png

So it seems to be that this is a great way of using what has been written in JD Edwards and using your existing development skills to be able to fairly quickly enable mobile interactivity with JD Edwards.
You’ll need to skill up with JDeveloper – but that’s easy enough.  A Number of helper classes have been provided for you to assist this journey.
Of course error handling is going to be fun (it always is).  Media objects are going to be fun, but they always are aren't they?

Tools release compatibility matrix

This is a really important table that you should all know.


JDEdwards OneWorld EnterpriseOne Application Releases
Application Release XE/ERP8 8.10 8.11 8.11 SP1 8.12 9.0 9.1
Compatible
Tools Release
SP23/24 X X X X X X
  8.93 X X X X X
  8.94 8.94 X X X X
  8.95 8.95 8.95 X X X
  8.9 8.96 8.96 8.96 X X
  8.97 8.97 8.97 8.97 X X
  8.98 8.98 8.98 8.98 8.98 X
  8.98.1 8.98.1 8.98.1 8.98.1 8.98.1 X
  X 8.98.2 8.98.2 8.98.2 8.98.2 X
  X 8.98.3 8.98.3 8.98.3 8.98.3 X
  X 8.98.4
(8.98.4.11 or earlier)
8.98.4
(8.98.4.11 or earlier)
8.98.4
(8.98.4.14 Terminal Release)
8.98.4
(8.98.4.14 Terminal Release)
X
  X X X X 9.1.0.0 9.1.0.0
  X X X X 9.1.2.0 9.1.2.0
  X X X X 9.1.3.0 9.1.3.0
  X X X X 9.1.4.0 9.1.4.0
  X X X X 9.1.5.0 9.1.5.0 

Ever wanted to compare two environments? Row counts…

I have a client with a funny setup, that is they have two SEPARATE systems.  This includes SY, OL, DD – everything that you would expect.  UA910 runs in one and PD910 in the other.  They wanted some sort of reconciliation between the environments to ensure that PD = UA – reasonable in the circumstances.  We ere finding little differences, version here, object there – but then it became harder with things like text translations and items in the system tables.  So I decided to get out the SQL big brush and so some comparisons.  This is based upon some of the scripts that I’ve previously posted on reconciliation of data between upgrades.  This is oracle syntax.
I create a central table.  I use a database link for the jde_ujde stuff – you’ll see that in the code.  I do some mapping of owners too, UADTA to PRODDTA and UACTL to PRODCTL.  Finally I do UA910 to PD910.
You’ll see that I forgot central objects in the first insert and had to catch it up at the end.


Please also note that often I’m generating SQL that you’ll need to run, so paste the results into the run window.

CREATE TABLE "SY910"."DATACOUNTS"
   (    "TABLE_NAME" NVARCHAR2(20),
        "TABLE_OWNER" NVARCHAR2(20),
        "ORACLE_COUNT_DJDE" NUMBER,
        "ORACLE_COUNT_PJDE" NUMBER,
        "TABLE_DESCRIPTION" NVARCHAR2(256)
   )
      TABLESPACE "SY910T" ;
 
grant all on SY910.DATACOUNTS to public ;
 
insert into SY910.datacounts select table_name,owner,0,0,simd
from all_tables, ol910.f9860
where owner in ('OL910', 'DD910', 'SY910', 'PRODDTA', 'PRODCTL')
and ltrim(rtrim(siobnm)) = ltrim(rtrim(table_name));
 
select 'update SY910.dataCounts set ORACLE_COUNT_PJDE = (select count(1) from ' || table_owner || '.' || table_name || ' ) WHERE table_name = ' || '''' || table_name || '''' || ' and table_owner = ''' || table_owner || ''';' from sy910.datacounts
 where table_owner in ('OL910', 'DD910', 'SY910', 'PRODDTA', 'PRODCTL')
 order by table_name desc ;
  
select 'update SY910.dataCounts set ORACLE_COUNT_DJDE = (select count(1) from ' || table_owner || '.' || table_name || '@jde_djde ) WHERE table_name = ' || '''' || table_name || '''' || ' and table_owner = ''' || table_owner || ''';' from sy910.datacounts
 where table_owner in ('OL910', 'DD910', 'SY910')
 order by table_name desc ;
 
select 'update SY910.dataCounts set ORACLE_COUNT_DJDE = (select count(1) from ' || 'UADTA' || '.' || table_name || '@jde_ujde ) WHERE table_name = ' || '''' || table_name || '''' || ' and table_owner = ''' || 'PRODDTA' || ''';' from sy910.datacounts
 where table_owner in ('PRODDTA')
 order by table_name desc ;
 
select 'update SY910.dataCounts set ORACLE_COUNT_DJDE = (select count(1) from ' || 'UACTL' || '.' || table_name || '@jde_ujde ) WHERE table_name = ' || '''' || table_name || '''' || ' and table_owner = ''' || 'PRODCTL' || ''';' from sy910.datacounts
 where table_owner in ('PRODCTL')
 order by table_name desc ;
 
insert into SY910.datacounts select table_name,owner,0,0,simd
from all_tables, ol910.f9860
where owner in ('PD910')
and ltrim(rtrim(siobnm)) = ltrim(rtrim(table_name));
 
select 'update SY910.dataCounts set ORACLE_COUNT_PJDE = (select count(1) from ' || table_owner || '.' || table_name || ' ) WHERE table_name = ' || '''' || table_name || '''' || ' and table_owner = ''' || table_owner || ''';' from sy910.datacounts
 where table_owner in ('PD910')
 order by table_name desc ;
  
  select 'update SY910.dataCounts set ORACLE_COUNT_DJDE = (select count(1) from ' || 'UA910' || '.' || table_name || '@jde_ujde ) WHERE table_name = ' || '''' || table_name || '''' || ' and table_owner = ''' || 'PD910' || ''';' from sy910.datacounts
 where table_owner in ('PD910')
 order by table_name desc ;
  
 commit ;
  
 select * from sy910.datacounts ;


Quickly launch all scheduled jobs

Okay, I’m doing load testing and want to create some batch load, but don’t really know how.  So the simplest thing that I can think of is run all of the scheduled jobs.   Surely that is easy, there must be a button somewhere? NO!
Perhaps I can change the date and time on the server to fool it and get all of the jobs to run – jeepers might be a bit risky.
Ok, I’m going to go rogue on this problem:
I’m going to use runube at the command line and launch them all – easy!


select 'runube JDE PASSWORD PD910 *ALL ' || SJSCHRPTNM || ' ' || sjschver || NVL(sjjobque,'QBATCH') || ' Batch Hold Save'
from sy910.f91300 where sjschjbstat = '01'
order by sjschsttime asc;


runube JDE PASSWORD PD910 *ALL R5503005  AALL001S             Batch Hold Save
runube JDE PASSWORD PD910 *ALL R5503006  AALL001S  QCAR1      Batch Hold Save
runube JDE PASSWORD PD910 *ALL R04601    AALL00S              Batch Hold Save
runube JDE PASSWORD PD910 *ALL R5503B13S AALL001S             Batch Hold Save
runube JDE PASSWORD PD910 *ALL R5503DTI5 AALL001S             Batch Hold Save
runube JDE PASSWORD PD910 *ALL R5503DTI4 AALL001S             Batch Hold Save
runube JDE PASSWORD PD910 *ALL R5503B500XAALL005   QSTAT1     Batch Hold Save
runube JDE PASSWORD PD910 *ALL R5503B413INNSW001S  QREPORT    Batch Hold Save
runube JDE PASSWORD PD910 *ALL R5503B413ISMNG001S  QBATCH     Batch Hold Save
runube JDE PASSWORD PD910 *ALL R5503B413IVLDR001S  QBATCH     Batch Hold Save
runube JDE PASSWORD PD910 *ALL R5503B413IVGAD001S  QBATCH     Batch Hold Save

Wait, there are blanks and NULLs for the QUEUE, this is annoying!  Break out the advanced case statement for just this situation:

select 'runube JDE PASSWORD PD910 *ALL ' || SJSCHRPTNM || ' ' || sjschver || CASE  WHEN sjjobque IS NULL THEN N'QBATCH' WHEN sjjobque = ' ' THEN N'QBATCH' ELSE sjjobque END  || ' Batch Hold Save'
from sy910.f91300 where sjschjbstat = '01'
order by sjschsttime asc;


How cool is that case statement, so I’m saying…

when the queue is NULL, make it QBATCH, when it’s ‘ ‘ (a space) make it QBATCH, elsewise make it the queue name.

Note that I also had some problems with CASE and character set mismatch

ORA-12704: character set mismatch
12704. 00000 -  "character set mismatch"
*Cause:    One of the following
           - The string operands(other than an nlsparams argument) to an
           operator or built-in function do not have the same character
           set.
           - An nlsparams operand is not in the database character set.
           - String data with character set other than the database character
           set is passed to a built-in function not expecting it.
           - The second argument to CHR() or CSCONVERT() is not CHAR_CS or
           NCHAR_CS.
           - A string expression in the VALUES clause of an INSERT statement,
           or the SET clause of an UPDATE statement, does not have the
           same character set as the column into which the value would
           be inserted.
           - A value provided in a DEFAULT clause when creating a table does
           not have the same character set as declared for the column.
           - An argument to a PL/SQL function does not conform to the
           character set requirements of the corresponding parameter.
*Action:
Error at Line: 45 Column: 152

So I had to add the “CAST” or N’STRING’ or _J’STRING’ (that is a JDE C BSFN joke – get it?) ROTFL – NOT!

FROM:




select 'runube JDE PASSWORD PD910 *ALL ' || SJSCHRPTNM || ' ' || sjschver || CASE  WHEN sjjobque IS NULL THEN 'QBATCH' WHEN sjjobque = ' ' THEN 'QBATCH' ELSE sjjobque END  || ' Batch Hold Save'
from sy910.f91300 where sjschjbstat = '01'
order by sjschsttime asc;

TO




select 'runube JDE PASSWORD PD910 *ALL ' || SJSCHRPTNM || ' ' || sjschver || CASE  WHEN sjjobque IS NULL THEN N'QBATCH' WHEN sjjobque = ' ' THEN N'QBATCH' ELSE sjjobque END  || ' Batch Hold Save'
from sy910.f91300 where sjschjbstat = '01'
order by sjschsttime asc;



runube JDE PASSWORD PD910 *ALL R5503005   AALL001S  QBATCH Batch Hold Save
runube JDE PASSWORD PD910 *ALL R5503006   AALL001S  QCAR1      Batch Hold Save
runube JDE PASSWORD PD910 *ALL R04601     AALL00S   QBATCH Batch Hold Save
runube JDE PASSWORD PD910 *ALL R5503B13S  AALL001S  QBATCH Batch Hold Save
runube JDE PASSWORD PD910 *ALL R5503DTI5  AALL001S  QBATCH Batch Hold Save
runube JDE PASSWORD PD910 *ALL R5503DTI4  AALL001S  QBATCH Batch Hold Save
runube JDE PASSWORD PD910 *ALL R5503B500X AALL005   QSTAT1     Batch Hold Save
runube JDE PASSWORD PD910 *ALL R5503B413I NNSW001S  QREPORT    Batch Hold Save
runube JDE PASSWORD PD910 *ALL R5503B413I SMNG001S  QBATCH     Batch Hold Save
runube JDE PASSWORD PD910 *ALL R5503B413I VLDR001S  QBATCH     Batch Hold Save
runube JDE PASSWORD PD910 *ALL R5503B413I VGAD001S  QBATCH     Batch Hold Save
runube JDE PASSWORD PD910 *ALL R5503B413I TDBL001S  QBATCH     Batch Hold Save
runube JDE PASSWORD PD910 *ALL R5503B413I QQLD001S  QBATCH     Batch Hold Save


Paste this into a windows command line, and you are away!






Monday, October 12, 2015

Mental note–syntax for simple left outer join on oracle

I’m too old school, I use where exists and union, but not enough left outer joins.

select table_name, simd
from all_tables LEFT OUTER JOIN ol910.f9860 ON ltrim(rtrim(siobnm)) = ltrim(rtrim(table_name))
where table_name like 'F98%' and owner = 'PP910';

The example above is great for CNC people (and JDE DBA’s) as it gives you a description of the extremely helpful table names in JDE.  Note that the left outer join helps when there is package build files in the mix – things that are not in object librarian.  Note that this is also fairly timely with another recent post about finding table names or counts – or something.


TABLE_NAME                     SIMD                                                        
------------------------------ ------------------------------------------------------------
F98745                         Smart Field Named Mappings                                  
F98750                         Forms Design Aid Text Information                           
F98751                         Forms Design Aid Specification Information                  
F98752                         Forms Design Aid/Software Versions Repository Header Info.  
F98753                         Forms Design Aid/Software Versions Repository Detail Info.  
F98760                         Report Design Aid Text Information                          
F98761                         Report Design Aid Specification Info                        
F98762                         JDEBLC - Behavior Information                               
F98950                         User Overrides Table                                        
F98950D                        User Overrides Language Table                               
F989998                        Java Persistent Object Cross Reference Table

Database link dblink without tnsnames.ora on the server

Wow, another day of learning.  I guess that it all makes sense, but if you create a database link from your client, and you reference a tnsentry that you think is going to exist on the server, then it might not.  Remember database links are going to use the servers tnsnames.ora and sqlnet.ora to try and work out where to go for the data.



create database link "jde_findeva"
connect to JDE
identified by <a href="mailto:myp@ssusing">myp@ss
using</a> 'findeva’;


The link above needs the server tnsnames to know about findeva, however, this could be written with:

CREATE DATABASE LINK jde_findev
connect to JDE
identified by myp@ss
USING '(DESCRIPTION=(SDU=3000)(ADDRESS=(PROTOCOL=TCP)(HOST=myDBServer01)(PORT=1531))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=findeva.mydomain.com)))' ;

What tools release can I take for my application release?

I always get confused on what tools release you can take based upon your current application release, so this table is great.  This information changes all of the time, so probably best you go to https://support.oracle.com for the gospel.



JDEdwards OneWorld EnterpriseOne Application Releases
Application Release XE/ERP8 8.10 8.11 8.11 SP1 8.12 9.0 9.1
Compatible
Tools Release
SP23/24 X X X X X X
  8.93 X X X X X
  8.94 8.94 X X X X
  8.95 8.95 8.95 X X X
  8.9 8.96 8.96 8.96 X X
  8.97 8.97 8.97 8.97 X X
  8.98 8.98 8.98 8.98 8.98 X
  8.98.1 8.98.1 8.98.1 8.98.1 8.98.1 X
  X 8.98.2 8.98.2 8.98.2 8.98.2 X
  X 8.98.3 8.98.3 8.98.3 8.98.3 X
  X 8.98.4
(8.98.4.11 or earlier)
8.98.4
(8.98.4.11 or earlier)
8.98.4
(8.98.4.14 Terminal Release)
8.98.4
(8.98.4.14 Terminal Release)
X
  X X X X 9.1.0.0 9.1.0.0
  X X X X 9.1.2.0 9.1.2.0
  X X X X 9.1.3.0 9.1.3.0
  X X X X 9.1.4.0 9.1.4.0
  X X X X 9.1.5.0 9.1.5.0 

Copy a Pathcode, quickly

Quick way to duplicate a pathcode:
Central objects copy, takes about 40 mins.  Honestly, forget import and export and security and indexes and constraints…  Just do this:

select 'TRUNCATE TABLE PP910.' || table_name || ';' from all_Tables where owner = 'PP910' and length(table_name) < 12 and table_name not in ('DATACOUNTS', 'F983051_BAK', 'F98950BK') ;
 
select 'INSERT INTO PP910.' || table_name || ' SELECT * FROM PD910.' || table_name || '@jde_e1sys ;' from all_Tables where owner = 'PP910' and length(table_name) < 12 and table_name not in ('DATACOUNTS', 'F983051_BAK', 'F98950BK') ;
 
update pp910.f983051 set vrenhv = 'PP910' ;

Then copy the PD910\include and PD910\source dirs on the dep server to PP910 

Fix object librarian

create table jde.f9861srm as select * from ol910.f9861 where sipathcd = 'PD910' ;
delete from ol910.f9861 where sipathcd = 'PP910' ;
commit;
update jde.f9861srm set sipathcd = 'PP910' ;
insert into ol910.f9861 select * from jde.f9861srm ;
commit;

Full build and deploy.



Quicker Way to Refresh Cross Reference

Normally the cross reference facility takes quite a long time to populate the tables when running the R980011.


The steps mentioned below will drastically shorten the runtime of the R980011:-
  1. Copy the �All Objects� version of R980011 to create a new version.
  2. In data selection add a condition for BC Date � Update (F9861) (UPMJ) is greater than the date you last ran the rebuild.


This will cause the R980011 to check the Last Updated Date (UPMJ) field in Object Librarian and only process those records with a date more recent than the date specified. 

Oracle JDEdwards Tools Release 9.1.5 Is Now Available

Description of Figure 3-1 follows
This is no ordinary Tools Release!  With all the changes, this should really be called TR 9.2.0.
Lets start breaking this down a little…

  1. A new look, called Alta (see image above). This brings JDEdwards more in line with the rest of Oracle’s application offerings with the same look and feel.
  2. Server-only packages and the Primary Server
  3. Recent Breadcrumbs: You can view breadcrumb history which is available even after you log off/on.
  4. Email and Calendar Integration: Personally, I think the advantage of this feature will really be for user support rather than user collaboration.
  5. Simplified Navigation: seems to restrict users to just using E1Pages for navigation.
  6. Clustering for Outbound Business Services
  7. In-Memory Merge to Tools 9.1.5 Code Line
  8. Application Stack Service for Mobile Applications Development
Oracle’s official announcement: Oracle Announces JD Edwards EnterpriseOne Tools Release 9.1 Update 5 and Application Enhancements (1952442.1)
Net Change for Tools Library, Release 9.1 Update 5 (OTN)
JD Edwards EnterpriseOne Tools and Technology 9.1.x Documentation Overview (Doc ID 1368172.1) has been updated with the Tools 9.1.5 information
JD Edwards EnterpriseOne Tools 9.1 Update 5 Documentation Updates for Installation and Upgrade Guides
Required Components for installing 9.1.5 (Doc ID 1943409.1) including a table of ESUs required to take advantage of the new features.
9.1.5 Known Issues and Workarounds (Doc ID 1945082.1)
In-Memory Tools C API Reference (Doc ID 1952465.1)
OTHER 9.1.5 docs about changes:
  1. Where are the Navigator, Fast Path, Personalization and Roles options in Tools Release 9.1.5 (Doc ID 1950336.1)
  2. 9.1.5 Server-Only Package documents:
    • Server Only Packages Functionality – From EnterpriseOne Tools Release 9.1.5 Onwards (Doc ID 1947622.1) – a presentation from INFOCUS on the new package build process is linked from this document
    • FAQ, Known Issues, and Troubleshooting Server Only Packages Functionality – From EnterpriseOne Tools Release 9.1.5.0 Onwards (Doc ID 1950295.1)
    • SRDC – Data Collection for Troubleshooting a Package Build Issue with Tools Release 9.1.5 Enhanced Package Build Process (Doc ID 1931514.1

EnterpriseOne Business Services (BSSV) Error: Security Token Failed To Validate

Every once in a while we get the following error on a system that interacts with EnterpriseOne using business services (BSSV).
Security token failed to validate. weblogic.xml.crypto.wss.SecurityTokenValidateResult@2eba8ea[status: false][msg UNT Error:Message Created time past the current time even accounting for set clock skew]
Fortunately, until today, this error was always received when using our test environment and we couldn’t get it to be consistent so it went unresolved. Well, today was the day it hit production. So, after a little research I was able to find the solution:
  1. Login to the Weblogic Serve Administration Console
  2. Click Environment
  3. Click Servers
  4. Click the server you want to work with
  5. Click the [Configuration] tab
  6. Click the [Server Start] tab
  7. Add the following to the Arguments textarea:
Oracle Weblogic Clock Skew

Restore SQL Server Database On A Schedule

One of our companies has a training environment in addition to the standard PS,DV, PY & PD environments. They have been working very hard refining their Procure-To-Process (P2P). Now that they know how they would like to handle this process, they need to train the users. That’s where the P2P Training (PTR) environment comes in.
We setup the environment and have had everything running smoothly for the last few months. However, last week we received a request to backup the data in that environment and then restore that backup copy every morning for the next 2 weeks.
It’s a really simple process, but kind of a pain that I had to manually do the restore.
Well, if you’ve been reading this blog for very long, you know that I can’t stand doing things more than once. A trained monkey, I am not. If it can be automated, I do it and it usually makes sense to do so. This was definitely one of those times.
What I ended up doing was making 2 files:

  1. A bat file to call the sql file
  2. The sql file
Then, I just added a scheduled task that fired off the bat file every morning.
Note: When creating the scheduled task, you will need to fill in a value for the “Start in” option. I’m not sure why but it only works if you fill that in. I was using Windows Server 2008 R2 so your mileage may vary.
Scheduled Task Start In Option

Thursday, October 8, 2015

E1 Application: Web or Client

An EnterpriseOne application[of type APPL], is decided to be a FAT only or web only or both is decided based on the SIANSIF value in the F9860- Object Librarian Master Table.Prior to 811Sp1(?), all the applications can be launched either from a FAT client or a web client.But from 811Sp1 onwards most of the applications are made web only.By tweaking this value you can make a web only application to run on FAT[for troubleshooting purpose].The following are the valid values for an APPL:
W - Web only Ex:-P0006
C - Client only Ex:-P92001
' '[Sinlge space]- Both Ex:-P01012


Note:This is an undocumented stuff and should be used at your own risk.

Debug log

At times we need debug information to troubleshoot the issue.So the debug information should be turned ON.For this we need change this setting in the jde.ini file.
[Debug]
output=File
DebugFile=C:\jdedebug.log

Enabling or Disabling Auditing resulting in some loss of data?

If you observe, Enabling/Disabling 21 CFR11 Auditing a table resulting in some loss of data,make sure the user with which you are enabling/disabling doesn't have any row security.
Suppose you are disabling auditing on F0101, and you have row security restriction that you cannot see the data from AN8=20 to AN8=50.When you disable auditing, the records in this range are not selected for insertion[from F0101_ADT to F0101].
Tip: So never enable/disable auditing with a user having row security restrictions
Note: All CFR configuration changes are recorded in to the Security History table,F9312

ORA-01031: insufficient privileges with sqlplus /AS SYSDBA

C:\>sqlplus "/AS SYSDBA"
SQL*Plus: Release 10.2.0.3.0 - Production on Tue May 6 04:42:32 2008
Copyright (c) 1982, 2006, Oracle. All Rights Reserved.
ERROR:
ORA-01031: insufficient privileges
Enter user-name:

If you are getting the above error when you try to login with
"sqlplus /AS SYSDBA", please check if the following are properly set.
1] The Windows user ID with which you signed in is part of the ORA_DBA group.
2] SQLNET.AUTHENTICATION_SERVICES=(NTS) in sqlnet.ora file.

Now try again.....

C:\>sqlplus "/AS SYSDBA"
SQL*Plus: Release 10.2.0.3.0 - Production on Tue May 6 04:49:13 2008
Copyright (c) 1982, 2006, Oracle. All Rights Reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Production
With the OLAP and Data Mining options
SQL> show user
USER is "SYS"

Space in JDBJ.ini

Make sure space is not embedded between '=' and the value for a property in JDBj.ini
example:
tns= C:\oracle\product\10.2.0\client_1\network\admin\tnsnames.ora
might complain unalbe resolve a tns string.
Make sure it is "tns=C:\oracle\product\10.2.0\client_1\network\admin\tnsnames.ora"

Not receiving Email notification in JDE

If you are not receiving the email notification make sure that the entries under the JDEMAIL section of JDE.ini are proper.

Troubleshooting FAT client Installation

Sometimes FAT Client installation might fail at the end while creating environment variables or creating ODBC datasources etc.The best way to start troubleshooting the issue is by looking at the jdeinst.log/jdeinst.html in the c: directory.
If you notice that most of the stuff like database,specs, system folders are copied to your windows box and just environment variables,ODBC datasources are not set, you can give a try with the following command.
1] Win+R -> CMD
2] Navigate to directory where the install Manager setup.exe resides.
3] Now run the following command.
setup.exe -N -P DEMO -D E:\E900 -T Typical
DEMO is the PATHCODE.
E:\E900 is the location where we installed the Standalone E1/FAT.

JD Edwards EnterpriseOne Documentation

Wednesday, October 7, 2015

Securing/filtering Menu Task Views

Last week I had to put on a CNC hat to accomplish a menu filtering task.  In every new EnterpriseOne implementation, I always create custom menus for the client, so that (1)-they only see what they need to see without having to navigate huge E1 Menus, and (2)-the system is more secure with limited menus.  This is accomplished by creating a custom Task View, and placing all the tasks hierarchically underneath it.
So far, so good.  What the client ends up with is a screen similar to the one below.  Notice the custom menu (Custom Menus for BiG Consulting) along with all of the vanilla menus.



Now the question is:  how to remove all of the vanilla menus, leaving only 2:  Favorites, and Custom Menus.  The first place I looked for an answer was an excellent book by Allen Jacot, Joseph Miller, Michael Jacot and John Stern – “JD Edwards EnterpriseOne The Complete Reference”.  No luck there.  It discussed how to filter out individual tasks using Menu Filtering, but not how to remove all the vanilla task views.
I then asked several of my CNC contacts, and the answer turns out to be simple, and quick to implement.  Thank you to Oscar Hinojosa, Bill Patow and Kathleen White.  You are some of the best CNC’s I’ve had the pleasure to work with.  The rest of the article deals with specific steps on how to accomplish this.
1 – Determine specific roles for which you DO NOT want the filtering to take effect.  That would be CNC admin, Developer, and any other roles that need the vanilla menus.
2 – Using the P00950 application, create Solution Explorer security records for these roles that look like this:

3- The goal here is to allow these roles continued access to the custom menus, along with the Fast Path.  The screen shot above will do that.
4- Next, using the P00950 application, create one more Solution Explorer record for *PUBLIC:

5 – Notice that *PUBLIC is secured from everything except Favorites
6 – On the Work with Task Views application, select every single vanilla Task View, and put a check in the ‘Secured Task View’ box.  Make sure that custom menu Task View IS NOT secured.

7 – Refresh the security cache (or wait for it to auto-refresh).

After executing the above steps, the next time a user logs in, they will only see their Favorites, along with the Custom Menus.

Executing batch jobs from the web interface of a stand-alone

You have a stand-alone installation of JDEdwards, version 8.11, 8.12 or 9.0.  The web interface works pretty seamlessly and runs most of the applications.  Except reports.  If a report needs to be executed, it can’t be done from the web interface.  Instead you have to jump on your fat client, enter BV on the fast path, and enter the desired report.  This works, but is clunky and does not provide the look/feel of how reports get executed via the web interface.  Is there a way to execute reports from within the web interface?  Thanks to a jdelist.com poster, there is!  Here is the original post on jdelist:  http://www.jdelist.com/ubb/showthreaded.php?Cat=&Number=138836&page=&view=&sb=5&o=&vc=1


And here is a more detailed write-up with step-by-step instructions and print screens.
From your PC, go to the command line prompt and execute command HOSTNAME.  Note that your results will be different than this print screen:   In this example, the hostname returns a value of ‘vmware-win-xp’.

From the fat client’s fast path, execute P986115.  Select (local) and click on Select:

Again, select LOCAL and click Select:

On the following screen, change the Logical Server Name to the value returned by the hostname command.  Also, change the Server Map Data Source Name to ‘System Local’:

Click OK to update.
Exit EnterpriseOne.  Re-start Solution Explorer.
From the fat client’s fast path, execute P98616.  Select the last button to Define Default Printer:

Click the Add button:

Fill-in the fields as in the screen shot below and click OK:

Exit EnterpriseOne.
Reboot PC.

Re-start Solution Explorer.  You should now be able to execute reports from within the web interface.

Oracle VM Templates for JD Edwards EnterpriseOne

Oracle VM Templates for JD Edwards EnterpriseOne enable rapid implementation of your JD Edwards EnterpriseOne system. With these preconfigured, pretested templates of the JD Edwards EnterpriseOne enterprise, database, and HTML servers, you can have your system up and running in just a few days. Oracle VM Templates contain the complete technology stack necessary to run the server: operating system, database, web server, and JD Edwards EnterpriseOne tools and applications.
Benefits:
  • Faster installation of JD Edwards EnterpriseOne
  • A complete Oracle technology stack
  • Rapid return on your technology investment
  • Eliminates the time, cost, and risk from a JD Edwards EnterpriseOne implementation
  • Modifications to the system are easily made
See the article at:  http://www.oracle.com/applications/jd-edwards-enterprise-one-vm-templates.html

Download the Oracle data sheet here: jd-edwards-enterpriseone-vm-templates

JDE EnterpriseOne can run on an iPad

According to Oracle Document 1359409.1, iPad support for JDE 8.12 and 9.0 is now enabled as of Tools Release Maintenance Pack 8.98.4.5.  
Key Facts
• JD Edwards EnterpriseOne on the iPad is available for Application Releases 8.12 and 9.0
• Tools Release Maintenance Pack 8.98.4.5 is required and is available now on My Oracle Support Update Center
• Available as part of standard maintenance, JD Edwards EnterpriseOne customers on releases 8.12 or 9.0 can access the new mobile capabilities by applying a JD Edwards EnterpriseOne Tools Maintenance Pack.
Improved Access to Business Information Increases Productivity
• Support for the iPad offers JD Edwards EnterpriseOne users an intuitive platform with functionality targeted to optimize their dynamic business needs. Key features of JD Edwards EnterpriseOne for the iPad include:
o Enhanced iPad user experience with the addition of application-specific gestures to ensure intuitive and efficient interactions.
o Context-sensitive awareness minimizing the number of touch interactions required by presenting the appropriate touch screen keyboard for specific user data entry tasks.
o Support for standard security and deployment features to ensure worry-free mobile deployments.
• Leveraging the pervasive availability of internet connectivity, EnterpriseOne applications are accessible in connected mode only (disconnected store/forward is not available).

Import data from JDE into Excel and preserve leading zeroes

You submitted a report in JD Edwards and selected CSV output as an option.  After retrieving the CSV report into Excel, some of the columns that contain leading zeros and look perfectly fine in PDF,  drop the leading zeros in Excel.  Has this ever happened to you?  Did you blame JD Edwards for this behavior?  You shouldn’t have!  This is actually an Excel issue. Keep reading for a possible workaround to this behavior.
Let’s take the following table as an example:
mcuobjectsub
5001500100
5001500101
5001500001
5001500002


Notice that the sub field contains leading zeroes in the last 2 rows.
When JD Edwards generates the csv file, the raw data will look like this:

mcu,object,sub
500,1500,100
500,1500,101
500,1500,001
500,1500,002

This can be verified by opening the csv file using Notepad.
But if the same csv file is opened in Excel, it will be displayed as:
mcuobjectsub
5001500100
5001500101
50015001
50015002

The reason for this behavior is that Excel assumes that the field sub is numeric.  And by default, numeric fields don’t display leading zeroes.  In order to get Excel to display the leading zeros, the sub field has to be identified as text to Excel.  This can be done as follows, assuming you’re running Excel 2007:
  1. Open up an empty Excel spreadsheet.
  2. Click on Data tab, and then From Text on the Get External Data toolbar
  3. The Import Text File wizard will open up.
  4. Navigate to your csv file location, and click the Import button.
  5. The Text Import Wizard will start.
  6. Select Delimited data type and click Next
  7. Click on the Comma checkbox in the Delimeters box.  Click Next
  8. Click on the sub field, and change its properties from General to Text.  Click Finish
  9. The data will be imported and leading zeros preserved

I must say this is not the most elegant or efficient method, but it works.  And if the same csv needs to be retrieved on a regular basis, an Excel macro can be developed to automate this task.  Do you know of a better way of accomplishing this?  I’d love to hear about it!

Manually import PY910 full package spec database to E1LOCAL

  1. Application:
    J.D. Edwards E910

    Issue:
    Something wrong with the JDE client installation, the pathcode spec database was left out and not attached to the E1Local. Re-install the full package doesn't solve the issue.

    Resolution:
    Manually import the E910 PY910 full package spec database


    In CMD:

    sqlplus / as sysdba

    create user SPEC_PY910FA identified by SPEC_PY910FA;

    GRANT CREATE SESSION, ALTER SESSION, CREATE TABLE, CREATE VIEW TO SPEC_PY910FA;

    create or replace directory ATTACHDB as 'C:\E910\PY910\spec';

    GRANT READ, WRITE ON DIRECTORY ATTACHDB TO system;


    exit

    impdp \"/ as sysdba\" DIRECTORY=ATTACHDB DUMPFILE=SPEC_PY910FA.dmp TRANSPORT_DATAFILES=C:\E910\PY910\spec\SPEC_PY910FA.DBF REMAP_SCHEMA=SPEC__PY910FA:SPEC_PY910FA REMAP_TABLESPACE=SPEC__PY910FA:SPEC_PY910FA logfile=Import_SPEC_PY910FA_100614.log

    result:-
    Import: Release 11.2.0.1.0 - Production on Wed Jun 11 00:18:12 2014
    Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.
    Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit
    Production With the Partitioning, OLAP, Data Mining and Real Application Testing options
    Master table "SYS"."SYS_IMPORT_TRANSPORTABLE_01" successfully loaded/unloaded
    Starting "SYS"."SYS_IMPORT_TRANSPORTABLE_01":  "/******** AS SYSDBA" DIRECTORY=A
    TTACHDB DUMPFILE=SPEC_PY910FA.dmp TRANSPORT_DATAFILES=E:\E910\PY910\spec\SPEC_PY
    910FA.DBF REMAP_SCHEMA=SPEC__PY910FA:SPEC_PY910FA REMAP_TABLESPACE=SPEC__PY910FA
    :SPEC_PY910FA logfile=Import_SPEC_PY910FA_100614.log
    Processing object type TRANSPORTABLE_EXPORT/PLUGTS_BLK
    Processing object type TRANSPORTABLE_EXPORT/TABLE
    Processing object type TRANSPORTABLE_EXPORT/GRANT/OWNER_GRANT/OBJECT_GRANT
    Processing object type TRANSPORTABLE_EXPORT/INDEX
    Processing object type TRANSPORTABLE_EXPORT/CONSTRAINT/CONSTRAINT
    Processing object type TRANSPORTABLE_EXPORT/INDEX_STATISTICS
    Processing object type TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLK
    Job "SYS"."SYS_IMPORT_TRANSPORTABLE_01" successfully completed at 00:18:22
    ---------------------------------------------------------------------------

    sqlplus / as sysdba

    alter user SPEC_PY910FA default tablespace SPEC_PY910FA quota unlimited on SPEC_PY910FA;

    alter TABLESPACE SPEC_PY910FA READ WRITE;

    exit

    References:
    http://www.oracle-base.com/articles/misc/transportable-tablespaces.php
    http://www.oracle-base.com/articles/10g/oracle-data-pump-10g.php#ExternalTables.


Featured Post

Generate single index on table 

Transaction tables such as F0911, F4111 etc hold a huge amount of data probably a third of petabyte. Generating indexes on such tables (th...

Popular Posts