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

installing E910 on a client that had E900 1.0.0.0.5

$
0
0
This is a quick one.  I had an old E900 fat client that I wanted to upgrade to E910.

I was getting an "Error"
"An error occurred during the interview [sic] for this component:  EnterprsieOne Development Client 1.0.0.0.5.  A previous installation of an E1 client exists..."

But, I did use "Add remove programs" to get rid of the old one until it just died.   I then did shift-delete on the dir and renamed and restarted it.

I looked in th registry and could not find JDEdwards anywhere.

Then, I learnt that I had to check the Wow6432Node under HKEY_LOCAL_MACHINE\SOFTWARE for all of the 32 bit software...  It is here that I found the JDEdwards branch in the registry.

I deleted the JDEdwards part of the path below, and all of the sub folders in the registry.  I'm guessing that If you've read to hear you are going to be technical enough to be able to delete the right parts of your registry safely.

HKEY_LOCAL_MACHINE\SOFTWARE\ Wow6432Node\JDEdwards

Note also that I've left the existing e1local, I considered getting rid of it - but I'm going for the "path of least resistance" installation.

And viola! Everything work first time once I found the registry key to delete.



Sizing JD Edwards for 1000 users, general sizing maxims for JD Edwards

$
0
0
It's an interesting conundrum, you want to choose the platform for your JD Edwards solution.  You might be a net new customer or you might be upgrading and putting platform choice out there as an option.  What are you going to choose, there are so many options out there.

Firstly, start around your database and work from there.  The database WILL be your bottleneck for scalability and performance.  Your disk IO will be the bottleneck for the database server.  This is IF your solution is sized correctly.  JDE does not use many of the advanced database functions, lets be honest it does not use aggregate functions that often!  So JDE will push the DB disks hard, get your system ready for it!

I'm thinking that if you had more than 1000 concurrent users, then your choices are smaller.  I personally would not put that load on a SQLServer database just yet.  I think you have much more scalability with the other options.  What are they?  Oracle or AS/400 of course.  I'm actually not going into DB2/UDB, as my experiences (of which there are many) might have you looking at other options.

Now I'm not immediately and directly discounting SQLServer as an option for > 1000 concurrent users, I just think that it's going to be harder to achieve.  NOT impossible, probably not even "extremely difficult", but harder than the other options.  I'm also talking about 1000 concurrent users, not named.

I think that with the correct amount of SSD, Fusion IO, fast disk (get data close to CPU!!), you can make a SQL server box do almost anything.  Native 64 bit support has taken care of nearly all extensibility issues that one might have previously had with SQL Server.

Lets talk more about the two other main options, Oracle or AS/400.  The adage used to be - "no one gets fired for buying IBM" - that's gotta be wrong and getting wronger (like my paradoxical statement) every year.  I'd like to start firing people that choose IBM because they have two staff (that could leave tomorrow) that know their way around an AS/400 - This is not a reason to keep the machine.  We need to make all business decisions based upon ROI, not from the heart.  These days we need to future proof our decisions too, as technology advancements are moving at the speed of light!  Yes the 400 has sat in a corner and just worked for the last two years, in general - so would any other DB!

I like the way oracle has essentially decoupled itself from hardware.  You point an application to a listener and away you go - it does NOT matter what CPU architecture is behind the scenes - as long as the data is there - they query will process the same way.  Unfortunately for AS/400 (and SQLServer) there is a limitation on the CPU architecture that is supported behind the scenes.

Oracle has also hitched itself to the hardware in a way that no other vendor can, engineered systems.  They've developed hardware that is purely designed for one purpose in life - run database queries, run them fast and run them all day long.  These are amazing machines (viewed as appliances) that are created and designed with a single purpose in life - no wonder they do such a good job.  I've worked with a number of engineered systems and they do fly.

A common misconception that I get from many clients considering oracle (which is free in the standard edition form with net new JD Edwards licensing [SaaS or perpetual]) is that oracle is too complex, they'll need to employ a DBA etc etc.  I'll get up on my soap box and yell from the roof tops - this is not the case anymore.  The Enterprise Manager suite of programs that comes with 11GR2 is exceptional.  What I like to do is use EM12C to augment the management and monitoring capabilities, which is free for basic functionality.  The combination of these two management methods will see your database running and monitored without human interaction.  Some of my clients have uptime of > 260 days without being touched...  On Windows...  This is not a record (this is not when things crashed, it's an example), this is just how things are at the moment, an oracle database, if sized correctly, will just run.  If you have issues - start pointing the finger towards something else.

I do need to go back to the 400.  It's a great machine.  It does a lot of heavy lifting for a lot of clients, and has been doing this for a very long time.  I love the 400, I've had interactions with it for the last 15 years.  I do however, think that there are better options out there - when considering things like:

  • interoperability
  • IaaS options, cloud options
  • HA
  • SAN storage usage
  • supportability
  • hardware agnostic
  • resource availability

At this stage I seem to be recommending oracle for the database for systems that support over 1000 users concurrently.  You have a choice of computers that are going to support this, IBM P,  sun T5, Sun M series, engineered systems, x86 (win & lin) - the list goes on.  Look at what oracle have done with x86 and exadata / ODA - exceptional performance from the old x86 CPUs.  What I'm trying to say here is that you don't need the massive RISC based CPU's to get massive performance anymore.  Let's face it, processing power will be a commodity item, if it is not already.  Reliability is being built into every layer (RAC, virtualisation etc), you're not going to be concerned about CPU architecture for your database, because oracle can run anywhere (is that like Java I hear you say?).

Get your data as fast as possible and get it as close as possible to the CPU and you are not going to have performance issues.

Any architecture will support this type of interactive load, with the right amount of cores, sockets and RAM.  RAC can see you expanding the solution across any number of chassis.

Once you've decided on the database (you need to decide between standard edition and EE - how deep are your pockets?), you can then put some logic processing and web processing around your DB decision - easy!  No real licence ramifications for LOADS of CPU on the enterprise server / logic server - so I say go for it.  Webserver licensing should be handled under your technology foundation, so you can also "soup up" this layer.  Remember that hardware is cheaper than consulting when you have performance issues.  Get this right up front!

That is my very basic wrap for some key considerations in large JD Edwards sizing and database choices, the main take homes are:

  • Any hardware will do the job (within MTRs), some will be harder to get fast than others
  • Oracle DB is not the scary time consuming beast that used to be
  • Get your database server sized right, get the fastest disk IO possible.  Consider SSD / fusionIO
  • Build your solution around the database server
  • Build your solution to be future proof, consider question like IaaS readiness.

Printing from JD Edwards, tray selection, BIP to PCL etc

$
0
0
I was recently onsite for a client trying to solve a fairly simple printing issue - tray selection for BIP output.  Surely, very simple...  This was a windows enterprise server, not too sure if this makes it easier or harder.

Of course, let's do some simple analysis first to know where we are at with our capabilities.

I create a couple of local printers on my workstation and share them.  Easy, then I can create JD Edwards printer definitions to \\workstation\printer and see the output.  Great.  I can toggle between PCL, PDF and PS and see what is coming out and what works and what does not and then build some working scenarios from there.

I pause my windows printer and then look in the C:\Windows\System32\spool\PRINTERS

standard report output: (1 page PDF)
PDF - 55K
PCL - 4K (I love PCL)
PS - 55K

Then I run a BIP job, two pages
PDF - 67K (rename the .spl and you can open it as a PDF - nice)
PS - 67K (rename the .spl as a PDF and you can open it - weird!!)
PCL - 8K (does not have any graphics!!!)

So, the analysis from above might be as you expect.  ALL outputs work from both BIP and standard, but BIP cannot put graphics into the PCL output.  This is important.  If you have PCL printers, you cannot print immediate from BIP and have the reports look great (or can you?).

All of the above is good to know, but does not help me with my main problem, printing to a particular tray of a particular printer.

What options do I try:

  • Create a windoze printer definition that defaults the correct tray and address this from E1.  Does not work.  Default paper tray is used - this is annoying.
  • Force the printer definition in E1 to use the tray that you want - no - does not work
  • Write my own "JDE conversion program" and have that do the printing - too complicated at this stage, although seems possible
  • Use OSA's to grab the output and then print to the printer that I want.  BUT - OSA does not get called from BIP output - Doh!
    • As a side note, I did write this code as an OSA and got everything printing fine from E1 with my OSA.  All tray selection working perfectly.
    • Note that this is quite difficult, as you cannot run an interactive program from a windows service.  I was dabbling in "createProcessW", "shellExecuteEx" I could not bring myself to use "system" - but I probably could have.
    • The long and hard lesson out of this is that you cannot run any processes from a windows service (as all of the kernels run as a service) to execute a program that requires a desktop  / interactive session.  My idea was to run acrord32.exe with the /T option to print the adobe document to my printer of choice.  Hey, this would be nice and neat and get my out of my PCL limitations too...  But, adobe wants desktop resources, so this will not work.  I did get it working with the Fox-It viewer.  This is a really nice viewer and performs a great job with the printing in this scenario.  http://www.foxitsoftware.com/Secure_PDF_Reader/ I recommend this software, it also closes the exe when the print is done, not like Adobe that just likes to hang around for nothing!!
To reduce my compile and build and deploy times, I started just calling a script from the OSA, this worked like a treat.

The command that the script runs to print a PDF to a specified printer looks like the below:

C:\Program Files (x86)\Foxit Software\Foxit Reader\Foxit Reader.exe" /t "D:\JDEdwards\E910\ddp\PrintQueue\R0010P_XJDE0001_55464_PDF.pdf""\\svfpr04\OPS CENTRAL RICOH MP 7001 -T2"

But, this would not work from BIP, as BIP does not use OSA functionality when writing the PDF - which is the ULTIMATE pain!!!

So, back to the drawing board after a lot of code has been written and is working.  My final solution is a work-around until BIP tray selection logic is going to catch up.  I cannot retrofit all the printers in the organisation with PS drivers or PDF drivers!

I finally decided to script once again, but a different angle.

As you know BIP output is written only to the database by default, so it's not like you can just grab the output from the tables and send it to the printer, BIP does a lot of magic there to do that stuff for you - BUT you can enable BIP archiving, which will write all output to a dir on the enterprise server (I can feel a script coming on!!!).

Then a simple WMI based vbscript to listen for createFile events in teh BIP archive dir can be written.  Do some testing on filename and we have a solution!  We can also query the database from the script and get all of the printer information from the job and actually direct the output to the proper E1 printer - nice!

But, lets be honest.  It's not that nice.  Sure I can avoid replacing all my PCL printers (hey - maybe that is NICE).  Reprint from E1 is still dodgy for tray selection, but the end users can do it from Adobe - workaround when the script breaks.  But it's just another thing to go wrong with printing, which should be super simple and should just work.

At the end of the day, there is about 40 lines of script (20 doing debugging and logging) to print BIP output to PCL printers.




EM12C will not start Could not initialize class oracle.dfw.impl.common.TempFileManager

$
0
0
em12c will not start!

It just won't start.

generally, my recommended EM12C start sequence is:




  1. listener
  2. database
  3. oms
  4. wls
  5. agent

but my OMS would fail and take ages to do so.

I was getting in /u01/app/oracle/middleware/gc_inst/user_projects/domains/GCDomain/servers/EMGC_ADMINSERVER/logs/EMGC_ADMINSERVER.out

java.lang.NoClassDefFoundError: Could not initialize class oracle.dfw.impl.common.TempFileManager

Of course, this is not the first log to look at, generally you start with:

/u01/app/oracle/middleware/gc_inst/em/EMGC_OMS1/sysman/log/emctl.log

This gave me double barreled 404's!!


2013-06-14 14:50:35,974 [main] DEBUG oms.StatusOMSCmd processStatusOMS.240 - console page status code is 404
2013-06-14 14:50:36,022 [main] DEBUG oms.StatusOMSCmd processStatusOMS.242 - pbs page status code is 404
2013-06-14 14:50:36,022 [main] DEBUG oms.StatusOMSCmd processStatusOMS.245 - console header is null
2013-06-14 14:50:36,023 [main] DEBUG oms.StatusOMSCmd processStatusOMS.247 - pbs header is null
2013-06-14 14:50:36,023 [main] DEBUG oms.StatusOMSCmd processStatusOMS.285 - Both Console and PBS are down. Status codes are: Console - 404 and PBS - 404

Which means nothing

What I must say at this stage is that I did notice someone had tried to run weblogic as root, as I had to change permissions on some of the log files that WLS wanted to write to.  It's a dead give-away with WLS, but not so with EM12C layers.


Then, I got to oracle support and used my search string: 
java.lang.NoClassDefFoundError: Could not initialize class oracle.dfw.impl.common.TempFileManager


I got a direct hit:
https://support.oracle.com/epmos/faces/DocContentDisplay?_afrLoop=128932762907641&id=1498363.1&_afrWindowMode=0&_adf.ctrl-state=8pjmggysh_351


It seems that there is something dodgey in the /tmp dir.  It was really weird, I had a directory called:
oracle-dfw-5069570897830055595.tmp in /tmp, but oracle could not even list it.  When I tried to use root, it could not see it?? Anyways, without investigating much further I deleted the dir /tmp/oracle-dfw-5069570897830055595.tmp and was able to start oms first go!


Seconds later I was getting my alerts and I felt better about EM12C







JDE BSFN Return Values

$
0
0
It might defy logic, but the following is true:


#define ER_SUCCESS   0L
#define ER_WARNING   1L
#define ER_ERROR   2L

as defined in jdekdfn.h

So, when you read things like:


Jul 12 15:47:41.167618  jdeobj.c2711     - 3900/-258356336 WRK:POAPPROVE_EF810FD0_DConnector    **********************************************************************************
Jul 12 15:47:41.167629  jdeddapi.c315    - 3900/-258356336 WRK:POAPPROVE_EF810FD0_DConnector    Entering jdeCloseDictionary
Jul 12 15:47:41.167642  jdeddapi.c349    - 3900/-258356336 WRK:POAPPROVE_EF810FD0_DConnector    Exited jdeCloseDictionary with DDType 0
Jul 12 15:47:41.167657  jdeobj.c2404     - 3900/-258356336 WRK:POAPPROVE_EF810FD0_DConnector    Return value is 2 for ApproveOrRejectOrder. (BSFNLevel = 2)
Jul 12 15:47:41.167674  jdeobj.c3189     - 3900/-258356336 WRK:POAPPROVE_EF810FD0_DConnector    Entering AddObjectCache

The 2 means Error, simple!

Structure member alignment for client and server programming with JDE

$
0
0
Quick note to self:

When writing an OSA to work on a windoze (windows) server, use a structure member alignment of 4, /Zp4 .  If you are testing your OSA on the client then ensure that the struct member alignment is 1, or /Zp1.  It's easy too look at the command in various iterations of visual studio to ensure that the struct member alignment is correct.

Highlight the project (not the solution) and fork project, properties

Open general menu item
Then c/C++ then code generation.  Under there you'll find "Struct Member Alignment" - set this.

Then goto command line under the c/c++ window and you're command will look something like:

/Od /I "D:\E910_1\DV910\include" /I "D:\e910_1\system\includev" /I "d:\e910_1\system\include" /D "_WINDLL" /D "_MBCS" /Gm /EHsc /RTC1 /MDd /Zp1 /Fo"Debug\\" /Fd"Debug\vc90.pdb" /W3 /nologo /c /Wp64 /ZI /TP /errorReport:prompt

What is that for?  windows CLIENT of course!

Note also (to help you if you're struggling), the link command looks like:

/OUT:"C:\Users\shannonm\Documents\Visual Studio 2008\Projects\myBIGPDF\Debug\myBIGPDF.dll" /NOLOGO /DLL /MANIFEST /MANIFESTFILE:"Debug\myBIGPDF.dll.intermediate.manifest" /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DEBUG /PDB:"c:\Users\shannonm\Documents\Visual Studio 2008\Projects\myBIGPDF\debug\myBIGPDF.pdb" /DYNAMICBASE:NO /MACHINE:X86 /ERRORREPORT:PROMPT kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib

Ensure that you include jde.h (you'll need this).  You'll need to include dirs like "include and include) under system and you'll also need to include lib and libV dirs.  Also the specific resource files for functions that you call will need to be added to the project.

Media objects gotcha–upgrade / deployment server rename

$
0
0

Too many times we forget to update all of the records in F00165 when you change out your deployment server and you’ve been using it for media object storage.  Remember that when you rename the MO queue in the P98MOQUE, this does not change the location of all the records that you may have saved against the MO.

image

So you will need to run update statements in SQL to ensure that once you’ve copied the directory structure to your new deployment server you also change all of the internal pointers.

Different media object types have different requirements for pointing to the final file name, you’ll need to look into the F00165 to work it all out.

In-Memory Database options

$
0
0
This is a great announcement that has come out of #oow13.  I was lucky enough to attend the keynote that made this announcement, unlucky enough to spend 30 mins leaving the venue...

So the data is being stored in columnar format "in-memory", so this allows for you to drop indexes and reap the benefits of some incredible performance gains.  When your architecture is up to it, you can get benefits way in excess of the 100's times claim.  This is technology that is really going to test your architecture.  It's relying on the solid CPU / memory backbone, therefore the more tightly coupled this is with the database - the better the performance gains might be.  Note also that the closer oracle are getting to putting DB instructions on silicon will mean the benefits from this type of technology are only going to get more "real".  

Traditionally a heterogeneous database ERP like JD Edwards does NOT stress the database out that much.  The database is too busy doing reads (waiting for the IO) to be stressed.  Choosing the right tables to cache and having a lot of memory (remember, this is in-memory - you are going to need a lot of memory) might start putting some more stress on the JD Edwards database - nice!

"Oracle In-Memory Database Cache (IMDB Cache) enables database applications to selectively cache performance-critical subsets of the Oracle Database tables into the TimesTen In-Memory Database to improve application response time. "

The above statement indicates that there are two products in play here.  The "TimesTen In-Memory" database and the Oracle In-Memory database cache.  The TimesTen is the engine, this is generally deployed at the application teir.  Note also that because this is on the application tier, it would need to be kept "up-to-date" in an OLTP environment. 

The in-memory database cache is the "poor mans" implementation of the TimesTen database.  This is putting your data into a virtual TimesTen database without changing the application logic - everything through tnsnames.

In a JD Edwards environment, I'd guess that the in-memory database cache is your best option.

http://docs.oracle.com/cd/E21901_01/doc/timesten.1122/e21631/img/findingrecords.gif

The above diagram shows the totally different path to the data.

This is a true database option that is easy to enable on a table by table basis.  You initialise your 12c database to enable this option (note that you'll need to get your cheque book out too), initial RRP indications have it at about 23K per "oracle processor" [or core].

The Oracle In-Memory Database Cache option supports Oracle Database 12c, Oracle Database 11g Release 2, and Oracle Database 11g Release 1.

A good answer to try and explain what you need to run this option is found at:


2. Can Oracle TimesTen In-Memory database be used as an in-memory cache to the Oracle database?
Yes, this is the Oracle database option ' Oracle In-Memory Database Cache". This database option includes the TimesTen In-Memory Database, and caching technologies to enable TimesTen to be deployed as  an in-memory cache database  with automatic data synchronization between TimesTen and the Oracle database.
So this says that when you enable the "in-memory" option for your database, it deploys TimesTen to be deployed as a in-memory database cache.
3. Can I run Oracle In-Memory Database Cache on a different platform from the Oracle database server?
Yes, since In-Memory Database Cache runs as an Oracle client, it can be running on a different platform from that of the Oracle database server. Typically, In-Memory Database Cache resides on the application tier, whereas the Oracle Database sits on the database tier.
If you refer to the oracle price list, you'll also see that this is an "enterprise edition" enhancement only too.  You'll not be able to enable this without EE licences.  





database enhancements continued - PDBs

$
0
0
The list of database options continues to grow, but so does the price of oracle Enterprise Edition.  Multitenant databases is another database option that can only be licensed under enterprise edition.

Enterprise Edition Options: 
Multitenant
350
77.00
17,500
3,850.00
Real Application Clusters
460
101.20
23,000
5,060.00 
Real Application Clusters One Node
200
44.00
10,000
2,200.00
Active Data Guard
230
50.60
11,500
2,530.00
Partitioning
230
50.60
11,500
2,530.00
Real Application Testing
230
50.60
11,500
2,530.00 
Advanced Compression
230
50.60
11,500
2,530.00
Advanced Security
300
66.00
15,000
3,300.00
Label Security
230
50.60
11,500
2,530.00
Database Vault 
230
50.60
11,500
2,530.00
OLAP
460
101.20
23,000
5,060.00
Advanced Analytics
460
101.20
23,000
5,060.00
Spatial and Graph
350
77.00
17,500
3,850.00
In-Memory Database Cache 
460
101.20
23,000
5,060.00

See the image above for the new options and the new prices.

Multitenant is an exciting option that has created the concept of container databases and pluggable database - PDB.  The container database is able to have multiple PDB's within in.  This lets you have separate security and management of the PDB's within a single container database.

This would be great for hosting and for cloud provisioning.  This would suit JD Edwards use, but not necessary.  If you were provisioning JD Edwards in the cloud, then this would be a great option.

This is licensed at 17.5K per core, as the above table states.

12c enhancements continued

$
0
0
12c is the most significant database release in the last 7 years from oracle.  Then enhancement list is SIGNIFICANT, analogous to when RAC was released.

You already know of in-memory (TimesTen) databases and also multitenant, here is a few more items included in the latest release.

Disk heat map

The latest oracle database release,12c has got a heat map for data, you can use the data from the heat map and decide what you are going to do with the data.  You can set policies on when data is compressed and destination of the data.  12 compression options are Advanced row, columnar query & columnar archive compression.

Remember that you can expose the heat map through 12c cloud control or through EM for the standalone database.

Hot - 3x - advanced row compression
Warm - 10x - Columnar Query compression
Archive - 15x - Columnar archive compression

You do not need the advanced compression option to run row compression.  You do however need this database option to enable the columnar compression.

Active Data Guard for Far Sync

far sync is a combo of sync and async.  Just an instance that has the redo logs, a "handoff point".  sync to the far sync instance.  Then you have async to the standby.

Need active data guard licence.

Far sync is basically included with your ADG and EE licensing.

Global Data Services

Load balancing and service failover for replicated databases.  Can coordinate read requests between data centres.  Routing and failover of reads.  Note that this might force a read from the primary.

Transaction Guard

API knows commit outcome for every transaction, could replay the transaction if there was a failure.  There is a token with every transaction.  This can run in the JDBC driver.  IT can watch for the transaction state.  This can preserve and retrieve commit status'.

Data Redaction

Data masking.  Replace sensitive application data when replicating databases.  12c you can subset and mask "in-flight".  Data Redaction works on the display of sensitive data.  Transparent to applications users and operational activities.  This is enforced at the database.  This would be great for JD Edwards. This is a feature of the "Advanced Security" database option.

Database Activity Monitoring and Firewall

enhancement to audit vault to add the firewall capability.  Can be used on different databases.






TimesTen - Application Tier In-Memory Database for Performance and High Availability

$
0
0
Adapted from Tirthankar's #OOW13 presentation - thanks!

TimesTen is a separate database with separate binaries.  It shares a lot of functionality with the oracle database, but it's very different.  This is a listing of facts and figures from a presentation on the TimesTen database.  I need to be honest with you, if you're using JD Edwards this is going to be a tough option - ESPECIALLY now that oracle in-memory has been released in 12c.

A special note too, there is no columnar organisation in TimesTen, it's only available in the oracle in-memory option.  Imagine what is going to occur when this is implemented! There is also no compression in the "non exalytics" version of TimesTen.

TimesTen is the in-memory database for the application tier or used as a OEE cache.  
TimesTen is part of the exalytics machine (Adaptive in-memory cache).  Exalytics brings in the data from other systems into a TimesTen database and that is used for analytics.

TimesTen is very light weight, so it's thought that it'll not be replaced by oracle in-memory.

TimesTen is often used with very specialised applications. It's a standard relational database.  TimesTen is only in memory - no caching, the entire database is in memory all of the time.  TimesTen is also persistent.  It logs, checkpoints and can do replication.

TimesTen uses standard config. standard SQL, OCI etc.  TimesTen was launched in 1998, oracle bought it in 2005.  

This is a stand-alone purchase, separate from OEE.

Communications industry uses TimesTen a lot.  TimesTen could cache a subset of data and be called upon from the oracle database.  It's a very specialised database that is used is low latency environments.


I know that this is a JD Edwards blog, I need to determine if TimesTen is supported on the enterprise server, it seems like this would fly!  It's doubtful that you could use TimesTen is a supported environment for JD Edwards, but I think that it would work.

Some stats:
Readers and non-blocking.  read response time, 2.37 micro-seconds.  49 million reads per second.  updates in 7.67 micro-seconds.  This is database SQL operations that return in micro-seconds.  These numbers are based upon real transactions.  TimesTen can perform close to 1000000 updates per second, limited by bandwidth for logging and checkpointing.  An OLTP mix of reads and writes 2500000 operations per second on commodity hardware.

T5-8 can perform 50000000 SQL statements per second (128 cores, 1024 threads).  Mixed workload was 3.5 million operations per second.

You can use EM12C to manage your TimesTen database.

In-Memory Database cache.  It can be kept in sync with the database.  This TimesTen database can complement the oracle database.  

There was a great case study with USPS and the online stamp printing website.  TimesTen was used to check timestamps of postage to ensure that it's not a duplicate of a previous stamp print.  The savings in fraud easily paid for the investment in TimesTen.  They need the speed and the throughput because of the sorting machines that validate the postage need to run so quickly.




More oracle 12C enhancements

$
0
0

Here are some basic notes on some enhancements that are part of the oracle 12c database release:

  • Varchar can be 32K, you need to change a DB parameter, Max_string_size.  You also need to bounce the DB.
  • Default / default on NULL.  So you can have a default value when NULL is specified (i.e. 50, or "something").  This is how you define a column when creating or altering a table.
  • Identity column self populating uniqueness - finally.  This has taken a while.  Same concept in all other databases.
  • Can create an invisible column – alter table.  Select * won’t show it, desc won’t show it, but if you know the column you’ll see it when you specifically mention in in your SQL statement.
  • FETCH first 5 rows is available now, so you cal select the first 5 rows of a table - finally!!!  But remember if you sort, it still might take a long time - as the entire set needs to be sorted before giving you back your 5 rows.
  • Data Redaction – mask data dynamically.  This is being back ported to 11.2.0.4.  Does not change data, just will show the field with a mask that you've defined.  This would be VERY cool for JD Edwards.  You could apply this on employee information and ALL reports and apps would show your defined redaction mask, instead of the actual values.  This is done with security in the database.  I believe that you need the advanced security option for EE.


Current list of 9.1 Business Services

$
0
0
From here:  http://docs.oracle.com/cd/E16582_01/doc.91/e38040/toc.htm

Trigger to put certain users jobs in a slow queue

$
0
0

Do you have certain users clogging the system with their crazy jobs?  Consultants causing production to slow down?  Well, implement this simple solution to force their jobs to goto another dedicated queue, in this case Q812.

Note that this is only going to run if the job has been put into the default queue (won't override QSINGLE for example), also it only fires when the job is being moved from S to W.

Note that I set up a UDC to control this functionality, '55', 'JQ' and I also used a public synonym for F0005, as you see there is no owner in the text.

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;

JD Edwards scheduled jobs table demystification

$
0
0
A fairly quick post.  Ever wanted to list the JD Edwards scheduled jobs, when they start, recurrence type, etc etc...  It's not as easy as you think.  There are lots of things going on in that F91300 that need to be decrypted.

Here is something that helped me:

Dump them all into excel, that is a good start.

The following can be used to decipher the recurrence type: (SJSCHRCRTYP)

01
Custom Recurrence
11
Daily - Mode 1
12
Daily - Mode 2
21
Weekly - Mode 1
31
Monthly - Mode 1
32
Monthly - Mode 2
41
Period - Mode 1
42
Period - Mode 2
51
Yearly - Mode 1
52
Yearly - Mode 2


Here are some excel formlas to help you convert the EPOCH (of course bespoke JDE version, which is in minutes) to standard date and time.

time scheduled (UTC)
JDE Vers x 60
start time (UTC)
With DST start time
17964814
1077888840
1:34:00 PM
11:34:00 PM
17964817
1077889020
1:37:00 PM
11:37:00 PM
17964933
1077895980
3:33:00 PM
1:33:00 AM
17964934
1077896040
3:34:00 PM
1:34:00 AM
17964935
1077896100
3:35:00 PM
1:35:00 AM
17964813
+I7*60
=+(J7/86400)+25569
=+K7+TIME(10,,)


The formulas are in the last row.

The combination of the recurrence type, the start time and the table below (showing you weekday / day of month runtime options will help.

Monthly will have a value for the day of the month in SJSCHDAY
Weekly look for the columns that are populated (SJTUESDAY etc)

Here are the table columns

SJSCHJBTYP                              NCHAR(2)                                                                                                                                                                                      
SJSCHJBNM                      NOT NULL NCHAR(30)                                                                                                                                                                                     
SJSCHRPTNM                              NCHAR(10)                                                                                                                                                                                     
SJSCHVER                                NCHAR(10)                                                                                                                                                                                     
SJPROCNAME                              NCHAR(10)                                                                                                                                                                                     
SJSCHSTTIME                             NUMBER                                                                                                                                                                                        
SJSCHENTIME                             NUMBER                                                                                                                                                                                        
SJNUMJOBOCC                             NUMBER                                                                                                                                                                                        
SJCURRUNCNT                             NUMBER                                                                                                                                                                                        
SJMAXRESUB                              NUMBER(15)                                                                                                                                                                                    
SJSCHJBSTAT                             NCHAR(2)                                                                                                                                                                                      
SJSCHENHV                               NCHAR(10)                                                                                                                                                                                     
SJSCHJOBSVR                             NCHAR(30)                                                                                                                                                                                     
SJSCHUSER                               NCHAR(10)                                                                                                                                                                                     
SJSCHPSWD                               NCHAR(10)                                                                                                                                                                                     
SJSCHROLE                               NCHAR(15)                                                                                                                                                                                     
SJJDELOG                                NCHAR(1)                                                                                                                                                                                      
SJTRACING                               NCHAR(1)                                                                                                                                                                                      
SJUBELOGLVL                             NCHAR(1)                                                                                                                                                                                      
SJSCHPI                                 NCHAR(1)                                                                                                                                                                                      
SJPNTR                                  NCHAR(30)                                                                                                                                                                                     
SJJOBQUE                                NCHAR(10)                                                                                                                                                                                     
SJRESBONERR                             NCHAR(2)                                                                                                                                                                                      
SJRESBTIME                              NUMBER                                                                                                                                                                                        
SJINPRTMOTPY                            NCHAR(2)                                                                                                                                                                                      
SJINPRMAX                               NUMBER                                                                                                                                                                                        
SJINPRTMOUT                             NUMBER                                                                                                                                                                                        
SJJOBEXPIRE                             NUMBER                                                                                                                                                                                        
SJSCHRCRTYP                             NCHAR(2)                                                                                                                                                                                      
SJCO                                    NCHAR(5)                                                                                                                                                                                      
SJSCHNUMMNS                             NUMBER                                                                                                                                                                                        
SJSCHNUMHRS                             NUMBER                                                                                                                                                                                        
SJSCHNUMDY                              NUMBER                                                                                                                                                                                        
SJSCHNUMWKS                             NUMBER                                                                                                                                                                                        
SJSCHNUMMN                              NUMBER                                                                                                                                                                                        
SJSCHDAY                                NCHAR(1)                                                                                                                                                                                      
SJWEEKDAY                               NCHAR(1)                                                                                                                                                                                      
SJWEEKEND                               NCHAR(1)                                                                                                                                                                                      
SJMONDAY                                NCHAR(1)                                                                                                                                                                                      
SJTUESDAY                               NCHAR(1)                                                                                                                                                                                      
SJWEDNESDAY                             NCHAR(1)                                                                                                                                                                                      
SJTHURSDAY                              NCHAR(1)                                                                                                                                                                                      
SJFRIDAY                                NCHAR(1)                                                                                                                                                                                      
SJSATURDAY                              NCHAR(1)                                                                                                                                                                                      
SJSUNDAY                                NCHAR(1)                                                                                                                                                                                      
SJTIMEZONES                             NCHAR(2)                                                                                                                                                                                      
SJDAYLIGHTSV                            NCHAR(1)                                                                                                                                                                                      
SJDSAVNAME                              NCHAR(10)                                                                                                                                                                                     
SJSCHCTCD01                             NCHAR(6)                                                                                                                                                                                      
SJSCHCTCD02                             NCHAR(6)                                                                                                                                                                                      
SJSCHCTCD03                             NCHAR(6)                                                                                                                                                                                      
SJSCHCTCD04                             NCHAR(6)                                                                                                                                                                                      
SJSCHCTCD05                             NCHAR(6)                                                                                                                                                                                      
SJSCHFU1                                NUMBER                                                                                                                                                                                        
SJSCHFU2                                NUMBER                                                                                                                                                                                        
SJSCHFU3                                NCHAR(30)                                                                                                                                                                                     
SJSCHFU4                                NCHAR(30)                                                                                                                                                                                     
SJUSER                                  NCHAR(10)                                                                                                                                                                                     
SJPID                                   NCHAR(10)                                                                                                                                                                                     
SJJOBN                                  NCHAR(10)                                                                                                                                                                                     
SJUPMJ                                  NUMBER(6)                                                                                                                                                                                     
SJUPMT                                  NUMBER                                                                                                                                                                                        
SJSCHPWD                                BLOB()  



When deciding on a port for a JAS instance, consider this

$
0
0
I generally use something like 81 - DV, 82 - PY, 83 - UA etc.  or put a 9081, 9082 etc.

It starts to get a little more complicated with BSSV and SSL, but not too much.  Leave at least 1 port between your instances if you are using SSL.

Here is a handy list of default oracle ports that you can also avoid:
Component or ServiceDefault Port NumberAllotted Port Range
Oracle Business Activity Monitoring90019000-9080
Oracle Directory Integration Platform70057005-9000
Oracle Directory Services Manager70057005-9000
Oracle Forms Services Managed Server90019001-9100
Oracle HTTP Server non-SSL Listen Port77777777-7877
Oracle HTTP Server SSL Listen Port44434443-4543
Oracle Imaging and Process Management1600016000
Oracle Identity Federation Server Managed Server74997499-9000
Oracle Internet Directory (non-SSL)30603061 to 3070,
13060 to 13070
Oracle Internet Directory (SSL)31313132 to 3141,
13131 to 13141
Oracle Management Agent (used by Fusion Middleware Control)51625162-6162
Oracle Notification Server Local Port61006100 - 6199
Oracle Notification Server Remote Port62006200 - 6299
Oracle Notification Server Request Port60036003 - 6099
Oracle Portal Managed Server90019001-9100
Oracle Reports Managed Server90019001-9100
Oracle Virtual Directory (non-SSL)65016501-6510
Oracle Virtual Directory (SSL)75017501-7510
Oracle Web Cache Administration Port77867781-7790
Oracle Web Cache Invalidation Port77887781-7790
Oracle Web Cache Listen Port77857781-7790
Oracle Web Cache SSL Listen Port77897781-7790
Oracle Web Cache Statistics Port77877781-7790
Oracle WebCenter Discussions Server88908881-8890
Oracle WebCenter Portlets88898881-8890
Oracle WebCenter Spaces88888881-8890
Oracle WebCenter Wiki and Blog Server88908881-8890
Oracle WebLogic Server Listen Port for Administration Server70017001-9000
Oracle WebLogic Server Listen Port for Managed Server80018000 - 8080
Oracle WebLogic Server Node Manager Port55565556
Oracle WebLogic Server SSL Listen Port for Administration Server70027002-9000

P93091 unicode conversion in JD Edwards

$
0
0
P93091 is pretty much all you need to know.

The top button builds a list of all "Non unicode" data sources in the system.  This list is based on the "System" datasource in your ini file, therefore if you run it from the deployment server, it'll use the planner F98611.  This might not be what you want.  This run R930811, I run it locally.  It actually won't run in DEP / planner - so I recommend using a normal fat client.

The second button allows you to work with the results of the first.  Despite the confusing interface, you need to double click a row (till the green tick appears) and then tick the "build information" tick box too.  Once this is done and you select OK the job starts processing. R930912 runs and will hopefully build your list of tables to convert.  The list is called UniDataConv.xml in your install dir in a dir called script.  Note that this report works off sys tables / all_objects and not OL to list the tables, as you'll see tables mentioned that are not in OL.

If there are ANY errors in the data source that you specify, none of the tables will be written to the uniDataConv file, so you need to make sure that it's pretty clean.

Wow, it's hard to cut and paste the XML and see the actual characters...

I'll upload the file somewhere  https://drive.google.com/file/d/0B30UFGvbR-EjNEt3d001MXRmZWM/edit?usp=sharing













F964001


F96401


F96402


F9640S


F96411


F96450


F9649


F96491


F96492


F9660


F980011


F980014


F980021


F9801NEW


F9801OLD


F98231D


F98231H


F98301


F983061


F98610


F9880


F9890


F98TC002


F98TC01


F98TC03


F98TCDTL


F98TCHDR


F99102D


F99RDDS


FF31112T


FF31113T


FF3112ST


FF3113ST








Business Data - TEST








You then need to run UnicodeDataConv.exe  from your bin32 dir on the fatty that has the file in the script dir.

Simple UDC sync when upgrading. Merge F0005 and F0004

$
0
0
For a multitude of reasons I have issues when doing upgrades and ensuring all of the UDC's from PS910 have been merged into my custom ones.  Generally I run a script to identify and then insert any UDC's from PS910 into my upgraded environment.  Please see the following SQL that will add any F0004 or F0005 records from PS if they are not in your target schemas:

In my example DVFINCTL has just been upgraded and is missing some records.

insert into DVFINCTL.F0004
select * from ps910ctl.f0004 t1
where not exists
(select 1 from DVFINCTL.f0004 t2
where t1.dtsy = t2.dtsy
and t1.dtrt = t2.dtrt);
commit ;

insert into DVFINCTL.F0005
select * from ps910ctl.f0005 t1
where not exists
(select 1 from DVFINCTL.f0005 t2
where t1.drsy = t2.drsy
and t1.drrt = t2.drrt
and t1.drky = t2.drky);
commit;

Another method I use for this is with IMP and EXP and oracle.  You could exp the contents of PS to a file and then import with ROWS_ONLY over the top of your other environment.  Oh oracle, you give me so many ways to skin my cat!


More on unicode conversion and JD Edwards

$
0
0
All of the heavy lifting is done in a stop red procedure, no matter what platform you login with.  This also shows that JD Edwards has the ability to call a stored proc in the middleware (well, that is my assumption).

So this is pretty handy, you can work out the variables by reading the code and then you can just call this with all of the tips and tricks you want!  Forcing parallelism might be a good start!


CREATE OR REPLACE PROCEDURE "JDEDBA"."OWTBLCONV" (szUseridIn    in  varchar2,
                                      szPasswdIn    in  varchar2,
                                      szCatalogIn   in  varchar2,
                                      szOwnerIn     in  varchar2,
                                      szTableNameIn in  varchar2,
                                      nFlag         in  integer,
                                      szPathIn      in  varchar2
                                      /* OLEDB has problems with out varchar fields. Temporarily comment this out,
                                      szReturnDesc out varchar2*/)
       authid current_user
is
  OW_SP_SUCCESS   constant integer := 0;
  OW_SP_ERROR     constant integer := -20101;
  TAB_NOT_EXIST   constant integer := -942;

  szOwner         varchar2(30);
  szTableName     varchar2(30);

  type ColCurTyp is ref cursor;
  tab_col_info    ColCurTyp;

  col_name        varchar2(30);
  col_type        varchar2(106);
  col_length      number;
  char_length     number;
  data_precision  number;

  sql_stmt        varchar2(10000):= null;
  insert_sql_stmt varchar2(4000) := null;
  select_sql_stmt varchar2(4000) := null;
  old_tab_name    varchar2(30)   := UPPER(szTableNameIn) || '_NONUNI';
  notFirstTime       boolean     := false;
  nCharCols          integer     := 0;

  tablespace      varchar2(30);
  initextent      number;
  nextextent      number;
  pctincrease     number;

  retcode         integer;
  errMsg          varchar2(512);
  szReturnDesc    varchar2(512);

begin
  if (szOwnerIn = null) or (szTableNameIn = null) then
     szReturnDesc := 'Error - Either table owner or name is null';
    RAISE_APPLICATION_ERROR(OW_SP_ERROR, szReturnDesc);
  end if;

  szReturnDesc := 'Success';
  szOwner      := UPPER(szOwnerIn);
  szTableName  := UPPER(szTableNameIn);

  begin
    SELECT TABLESPACE_NAME, INITIAL_EXTENT, NEXT_EXTENT, PCT_INCREASE INTO tablespace, initextent, nextextent, pctincrease FROM SYS.ALL_TABLES WHERE OWNER = UPPER(szOwnerIn) AND TABLE_NAME = UPPER(szTableNameIn);
  exception
    when no_data_found then
      dbms_output.put_line('Error: Table ' || szOwner || '.' || szTableName || ' does not exist');
      szReturnDesc := 'Error - Table ' || szOwner || '.' || szTableName || ' does not exist';
      RAISE_APPLICATION_ERROR(OW_SP_ERROR, szReturnDesc);
    when others then
      szReturnDesc := 'Error - ' || sqlerrm;
      RAISE_APPLICATION_ERROR(OW_SP_ERROR, szReturnDesc);
  end;

  SELECT COUNT(*) INTO nCharCols FROM SYS.ALL_TAB_COLUMNS WHERE OWNER = UPPER(szOwnerIn) AND TABLE_NAME = UPPER(szTableNameIn) AND DATA_TYPE IN ('CHAR', 'VARCHAR2', 'CLOB', 'LONG');
  if nCharCols = 0 then
   
    szReturnDesc := 'Success - No conversion needed for table ' || szOwner || '.' || szTableName;
    return;
  end if;

  sql_stmt := 'ALTER SESSION SET NLS_NCHAR_CONV_EXCP=TRUE';
  execute immediate sql_stmt;

  begin
    sql_stmt := 'DROP TABLE ' || szOwner || '.' || old_tab_name;
    execute immediate sql_stmt;
  exception
    when others then

      if (sqlcode != TAB_NOT_EXIST) then
        szReturnDesc := 'Error - ' || sqlerrm;
        RAISE_APPLICATION_ERROR(OW_SP_ERROR, szReturnDesc);
      end if;
  end;

  sql_stmt := 'ALTER TABLE ' || szOwner || '.' || szTableName || ' RENAME TO ' || old_tab_name;

  execute immediate sql_stmt;

  sql_stmt := 'SELECT COLUMN_NAME, DATA_TYPE, DATA_LENGTH, DATA_PRECISION, CHAR_LENGTH FROM SYS.ALL_TAB_COLUMNS WHERE OWNER = :1 AND TABLE_NAME = :2 ORDER BY COLUMN_ID';

  open tab_col_info for sql_stmt using szOwner, old_tab_name;

  sql_stmt := 'CREATE TABLE ' || szOwner || '.' || szTableName || '(';

  insert_sql_stmt := 'INSERT INTO ' || szOwner || '.' || szTableName || '(';
  select_sql_stmt := ' SELECT ';
   
  loop
    fetch tab_col_info into col_name, col_type, col_length, data_precision, char_length;
    exit when tab_col_info%notfound;

    if (notFirstTime = true) then
      sql_stmt := sql_stmt || ', ';
      insert_sql_stmt := insert_sql_stmt || ', ';
      select_sql_stmt := select_sql_stmt || ', ';
    end if;

    case col_type
      when 'CHAR' then col_type := 'NCHAR';
      when 'VARCHAR2' then col_type := 'NVARCHAR2';
      when 'CLOB' then col_type := 'NCLOB';
      else
        null;
    end case;

    if (col_type = 'LONG') then
      sql_stmt := sql_stmt || col_name || '' || 'NCLOB';
    else
      sql_stmt := sql_stmt || col_name || '' || col_type;
    end if;
    insert_sql_stmt := insert_sql_stmt || col_name;

    if (col_type = 'NCHAR') or (col_type = 'NVARCHAR2') then
      sql_stmt := sql_stmt || '(' || char_length || ')';
      select_sql_stmt := select_sql_stmt || 'TO_NCHAR(' || col_name || ')';
    elsif (col_type = 'NCLOB') then
     
      select_sql_stmt := select_sql_stmt || 'TO_NCLOB(' || col_name || ')';
    elsif (data_precision is not null) and (col_type = 'NUMBER') then
      sql_stmt := sql_stmt || '(' || data_precision || ')';
      select_sql_stmt := select_sql_stmt || col_name;
    elsif (col_type = 'LONG') then
      select_sql_stmt := select_sql_stmt || 'TO_LOB(' || col_name || ')';
    else
      select_sql_stmt := select_sql_stmt || col_name;
    end if;

    notFirstTime := true;
  end loop;

  close tab_col_info;

  sql_stmt := sql_stmt || ')';
  if tablespace is not null then
    sql_stmt := sql_stmt || ' TABLESPACE ' || tablespace;
  end if;
  sql_stmt := sql_stmt || ' STORAGE (';
  if initextent >= 1000 then
    sql_stmt := sql_stmt || 'INITIAL ' || initextent;
  end if;
  if nextextent >= 1000 then
    sql_stmt := sql_stmt || ' NEXT ' || nextextent;
  end if;
  if pctincrease >= 0 then
    sql_stmt := sql_stmt || ' PCTINCREASE ' || pctincrease || ')';
  else
    sql_stmt := sql_stmt || ' PCTINCREASE 0)';
  end if;

  insert_sql_stmt := insert_sql_stmt || ')';

  execute immediate sql_stmt;

  sql_stmt := 'GRANT ALL ON ' || szOwner || '.' || szTableName || ' TO PUBLIC';
  execute immediate sql_stmt;

  sql_stmt := 'ALTER TABLE ' || szOwner || '.' || szTableName || ' NOLOGGING';
  execute immediate sql_stmt;
  sql_stmt := 'ALTER TABLE ' || szOwner || '.' || old_tab_name || ' NOLOGGING';
  execute immediate sql_stmt;

  select_sql_stmt := select_sql_stmt || ' FROM ' || szOwner || '.' || old_tab_name;

  execute immediate insert_sql_stmt || select_sql_stmt;

  retcode := jde_unicode_create_index(szOwner, old_tab_name, szOwner, szTableName, errMsg);
  if retcode = OW_SP_ERROR then
   
    szReturnDesc := errMsg;
    return;
  end if;
  if errMsg is not null then
    szReturnDesc := szReturnDesc || ' - ' || errMsg;
  end if;

  commit;

  sql_stmt := 'ALTER TABLE ' || szOwner || '.' || szTableName || ' LOGGING';
  execute immediate sql_stmt;

 
  sql_stmt := 'DROP TABLE ' || szOwner || '.' || old_tab_name;
  execute immediate sql_stmt;

  return;
exception
  when others then
    dbms_output.put_line('Error: ' || sqlerrm);
    szReturnDesc := 'Error - ' || sqlerrm;
    RAISE_APPLICATION_ERROR(OW_SP_ERROR, szReturnDesc);
end owtblconv;

OMW Error Codes OMW project won't transfer

$
0
0
Ever wanted to know what that pesky OMW transfer error message code meant, here is the list of errors and what they mean in some meaningful text.

Make sure that you select the project, then the logging exit in OMW.  Then choose the "Transfer" entry and drill down to the object error messages.

Remember, if you get 47 your data sources are not set up in the release / data source map (fix with GH9011 -> environments menu)


   Transaction was successful 
   General error 
  Transaction not supported 
  SAR integration has been disabled 
   Object already present in project 
   Object not present in project 
   User already in project 
   User is not in project 
   Attempting to add invalid object to project 
   Attempting an unauthorized action 
10    Status activity rule is inactive 
11    Transfer Activity Rule is inactive 
12    Project name is user ID 
13    Project already exists 
14    Bad handle 
15    Could not initialize user 
16    Memory errors occurred 
17    Object creation errors occurred 
18    Invalid SAR number entered 
19    Can not create default project 
20    User canceled 
21    Project is non-existent 
22    Can not rename project 
23    Invalid status change attempted 
24    Invalid string entered 
25    Invalid type entered 
26    A required field is blank 
27    Invalid user id entered 
28    TAM errors have occurred 
29    RDB errors have occurred 
30    Parameter specified does not exist 
31    Token is available 
32    Token is not available 
33    Transfer rolled back per previous call 
34    Transfer failed to commit to rollback 
35    Transfer success reference decremented 
36    Transfer success commit rollback 
37    JITI fialed 
38    Start form dynamic failed 
39    Entry point not found 
40    Not licensed to access object 
41    Deadlock has occurred 
42    Object is currently checked out 
43    Object has already been transferred 
44    Locked by vocab overrides 
45    Not authorized to install 
46    TSE not authorized 
47    Transfer not compatible 
48    Column prefix is invalid 
49    Copy errors 
50    Invalid action for project type     
51    Project is at an invalid status 
52    Invalid object ID, project ID is a duplicate 
53    Invalid object ID, project ID is too long 
54    Invalid object ID, contains invalid characters 
55    Errors occurred while cleaning up specs 
56    Object does not exist 
57    Unknown object Librarian or Version data source
58    Could not initialize processing option data 
59    User security is not authorized 
60    Notification system is disabled 
61    SAR creation error 
62    Save location specified is not found 
63    No object to restore from  
64    There is another object in save location 
65    BSFN library in use 
66    Project already exists for SAR number specifed 
67    Role already assigned 
68    Can't remove user from SAR 
69    Token is inherited 
70    Linked project is at an inconsistent status 
71    Object already exists in an open project 
72    Object has not been checked out 
73    SAR status change error 
74    Inheritance status change error 
75    No Transfer Activity Rules exist for object 
76    Log Failure 
77    Objects are checked out 
78    Specified object is not checked out to this machine 
79    Objects are in token queue 
80    Source file does not exist 
81    Bad Transfer Activity Rule 
82    Queued for deletion 
83    Object marked for deletion 
84    Object has not been modified 
85    Mandatory rule exists  
86    Transfer Limitation exists  
87    Transfer Exception exists  
88    Attempting to transfer Version before Template 
89    Path Code release and SAR release incompatible  
90    Web Only Version Successful 
91    Invalid operation performed on Web Only Version 
92    Token not available for Web Only Version 
Viewing all 541 articles
Browse latest View live