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

Cannot determine database driver name for driver type "O"

$
0
0

This is quite a specific post.

I’ve been doing a lot of performance testing lately.  One of the tests that I’ve been using to extract a little more performance out of JDE is to look at oracle database 12c. 

I’ve been testing many permutations and combinations of client and server, but I started to get the error below: (after installing JDE on a new and existing template enterprise server).

7045/-170809600 MAIN_THREAD                             Mon Jul 31 09:13:08.024551      jdb_drvm.c460
         JDB9900436 - Cannot determine database driver name for driver type "O"

7045/-170809600 MAIN_THREAD                             Mon Jul 31 09:13:08.024587      jdb_omp1.c1928
         JDB9900254 - Failed to initialize driver.

7045/-170809600 MAIN_THREAD                             Mon Jul 31 09:13:08.024603      jtp_cm.c209
         JDB9909002 - Could not init connect.

7045/-170809600 MAIN_THREAD                             Mon Jul 31 09:13:08.024617      jtp_tm.c1140
         JDB9909100 - Get connect info failed: Transaction ID =

7045/-170809600 MAIN_THREAD                             Mon Jul 31 09:13:08.024630      jdb_rq1.c2452
         JDB3100013 - Failed to get connectinfo


This is on an older tools release (EnterpriseOne 9.1.3.3) (ptf.txt in $SYSTEM/bin32).

I tried 100 different things involving my environment variables and .profile, .bash_profile.  I messed around with a ton of things, but then thought – wait.  This is a 9.1.3.3 tools and I actually put this down on a existing enterprise server with oracle database 12c client (32 bit).  And, this database did not exist when this tools was released(well it was not supported). 

It turns out that my error above is because JDE wants to load certain dll’s from the oracle client dir, and it cannot do this from a 12c client.

To get around this, I just installed a new copy of the oracle client (11.2.0.4) and hooked this up to JD Edwards.  As soon as I did this, viola! the enterprise server is working perfectly.  Note also that this 11.2.0.4 client is talking to a 12c database, as there is reverse compatibility between client and server.

Another slightly interesting thing here is that all I did was tar up the client dir from another machine and untar it on this one – no installers (because I had no graphical interface for the oracle install and I also could not be bothered fighting the responseFile for the next 3 months).  As soon as I sprayed out the dir on the linux machine, it all just worked!  Just remember that this is a POC machine, so don’t stress, I will not run a production environment like this – it’s just good to know.

At the end of the day, I used a template AWS vm (that was built for another purpose), I unzipped the enterprise server install dir (e900) and oracle client, updated tnsnames.ora and the machine just WORKS. 

Complete enterprise server in less than 2 hours?  Don’t mind if I do!


JD Edwards web forms–data entry made easy

$
0
0

Some things in JDE could be made easier.  Some things in JDE should be made easier.

What if you were entering  requisitions?  What if you were only entering HS&E issues – JD Edwards can be something that is hard to configure and get working for these simple use cases.

You can take a look at our java script, AWS hosted solution that synchronizes data with JD Edwards using AIS. We cache all of the data locally in AWS and refresh this on a schedule.  We host the website with AWS and when the submit button is clicked, this goes to a queue for entry into JD Edwards.  We reserve some next numbers so that you can fid your transaction in JDE.

https://hsedemo.mye1.com/

image

Now that is a good looking form, compared with:

image

http://e92demo.myriad-it.com:80/jde/ShortcutLauncher?OID=P54HS30_W54HS30C_ZJDE0001

With this technology we can open up this easy conduit into JD Edwards quickly and easily.  This is hosted too, so you don’t need to worry about “punching a hole in the firewall”.  We can ensure that the backend code connects to your AIS with a VPN and enters the transaction into JDE.

myTagThat

$
0
0


Do you every find yourself wishing that there was a cool mobile application out there that you could plug into JD Edwards that are useful and free?  Wait no more, your time is here!

myTagThat is a mobile application that hooks into JD Edwards via AIS 

This is andriod ready and shows how cool the Fusion5 applications are – interactive and useful

You can search for assets from the main screen

Screenshot_20170810-182518

See myTagThat in the top right

Screenshot_20170810-182537

See that we also allow for scanning bar codes – making finding your assets easy

Screenshot_20170810-182556

Note that is a book I’m reading – but it still scans!

This will use P1701 through AIS to find an asset with that equipment number.

You have some basic search criteria on the screen below

Screenshot_20170810-183154

Screenshot_20170810-183200

Note that you have the ability to map all of the results returned!

Screenshot_20170810-183225

Nice!

In JDE, this is how things start to look:

It authenticates with JDE authentication and allows you to search for any of your fixed assets (are you using CAM?) 

In JDE, P1701

image

Find your asset as above and then goto row –>locations->Address Book->Inquiry

image

You can see that the mobile application creates a new current record and makes the older ones historical

image

Continuous delivery–the journey-some neat tools to assist you

$
0
0

The continuous delivery journey is pretty exciting, but we need to all embrace it to get the most out of it.

Planning your adoption of continuous delivery is really important too, making sure firstly that you are on 9.2 and then setting an update cadence that you are happy with and a schedule that you are going to stick to (schedule of applying ESU’s and tools releases).

You need new tools and new thinking to enable this journey, here are a couple that I’m recommending:

ERP analytics

  • understand your ERP usage better.   Understand the programs that you are using and more importantly the modifications that you are making.  subscribe to ERPAnalytics from Fusion5 to really understand your users and modifications.  Use this data regularly to understand the retrofit and impact analysis of the new round of continuous delivery.

image

Screenshot above from ERP analytics showing you what applications are being used.

We can see the applications that are being used, we can download this to excel and cross reference this information with the JD Edwards manifests from the ESU’s.  Note that we can use something like powerBI to read this “realtime”, actually read in the ESU release notes or farm the JDE tables for what objects are affected and then produce a really nice neat powerBI dashboard of ACTUAL IMPACT – which allows you to streamline your continuous deployment!

  • Seeing the differences in the code.  Wow, have I got something cool for you.  Imagine that you wanted to see the actual form control differences in your code between environments?  We’ve written some pretty nifty code to allow you to do this VERY easily. 
    • So, you can see that the output from the above is all of the programs in JDE that you use – simple – export a spreadsheet
    • Now extract all of the changed objects in the ESUs that you want to apply (from impact analysis) – easy!
    • cross reference the above so you know what has changed and what has not
    • Now – run our code to give you all of the changes between the objects in DV920 vs. PY920

What does this magic do?

JDEFormCompare

Basically you can provide a number of AIS end points and his code will spit out ALL of the differences in the objects that you select in a CSV (or JSON) format.

For example:  two different AIS sites were compared and for this form W1701A (control number 571) we can see that it exists in site 2 and not in site 1.  We can see that this is parent number, data type 9, visible etc.  Cool?  Yes – this is very cool!

form

id

property

equal

value0

value1

Different

P1701_W1701A

571

title

FALSE

Null

Parent Number

DIFF

P1701_W1701A

571

presence

FALSE

FALSE

TRUE

DIFF

P1701_W1701A

571

dataType

FALSE

Null

9

DIFF

P1701_W1701A

571

editable

FALSE

Null

TRUE

DIFF

P1701_W1701A

571

longName

FALSE

Null

txtParentNumber_571

DIFF

P1701_W1701A

571

visible

FALSE

Null

TRUE

DIFF

· Think of a comparison for users security and evaluating whether they can see forms or not. (editable).  so really – think about this.  You could run this program as a series of different roles and users and actually determine what the users would see on the forms!

· Think of identifying modifications a little better. 

· Think of comparing environments that have had ESU’s applied

· Different DD’s, vocab overrides and MORE!

We can feed this software (command line executable) the results of ERP analytics to only look at the objects that have changed for a client – honing in on exactly what they need to know to support CD.

I’m sure you might be able to think of other uses, but if you want a copy of a demo – please reach out.

All clients need is an AIS server and we are away.  We can bring one in [AIS server] (as a VM) if needed and run it off that too.

restore the package from the zip file

install node - from here https://nodejs.org/en/download/

goto restore dir with command prompt

npm i  --This will install dependancies

C:\temp\compareStuff>node app --help

  Usage: app [options] [command]

  Commands:

    compare <formName> [additionalFormNames...]  Compare two different forms.

    Example compare P4210_W4210A --format csv --out P4210_W4210A.csv

  Options:

    -h, --help         output usage information

    -V, --version      output the version number

    --format <format>  Specify the output format. Allowed: "csv,json" (default: json)

    --out <file>       Write to a file instead of the command line.

Config is in

.\config\default.yaml


image

Sample csv output is above.


So that is a couple of pretty neat  productivity ideas that will get you closer to continuous deployment of Oracle’s continuous delivery.

Demo of Eddie the JD Edwards bot

$
0
0

I wrote a blog entry about this earlier, but there have been some great advancements since my initial post.  One of the main ones is that the google assistant has been released for generic android, as opposed to only being available on the pixel.  This is really neat, as we want to use the power of contexts, which was only really available when using the google assistant.

Screenshot_20170822-084614

You can see from the above that I’m able to chat with the google assistant by simply saying “hello google” to my phone.

Previously I’d get the following interface

Screenshot_20170822-085016

So, now we can ask google to talk to our bot and then begin to give it commands that we’ve defined with api.ai.

api.ai is then able to turn those commands, contexts and intentions into JD Edwards AIS calls using #LAMBDA

From there we are able to then instruct api.ai to give us verbal responses.

Note also that we are able to natively activate this chat in a number of other integration points, one-click.  So you want to activate chat with JDE using twitter, facebook messenger, slack?  Easy!

image

Imagine being able to open up some limited customer service “bot” actions for any of your JD Edwards users.  You could so simple things like:

  • enter timesheets with voice
  • check on order status’
  • approve PO’s (of course)
  • enter meter readings (we are doing this).

See a little video below of approving PO’s



JD Edwards and microservice based integrations

$
0
0

The cloud is changing our approaches to everything, and so it should.  It gives us so many modern and flexible constructs which can enable faster innovation and agility and deliver value to the business faster.

You can see from my slide below that we should be advocating strategic integrations in our organisations, seen below as a microservice layer.  This single layer gives a consistent interface “write the code once” approach to exposing JD Edwards to BOB (Best of Breed) systems.  This also will allow generic consumption and expose of web services – where you do not have to write a lot of JD Edwards code, or get into too much technical debt.

If you look at the below, we are exposing an open method of communicating with our “monolithic” and potentially “on prem” services.  This microservice layer can actually be in the cloud (and I would recommend this).  You could choose to use a middleware to expose this layer, or generic pub/sub techniques that are provided to you by all of the standard public cloud providers.


image


Looking at a little more detail in the below diagram for JDE shows you the modern JDE techniques for achieving this.  You’d wrap AIS calls to be STANDARD interactions to standard forms.  Just like BSSV was created to “AddSalesOrder”, the same could be done in a microservice.  This would be responsible for calling the standard and specific screens in JDE via AIS.  You are therefore abstracting yourself from the AIS layer.  If you needed to augment that canonical from information from another system, you are not getting too invested in JDE – it’s all in your microservice layer.

This also gives you the added benefit of being able to rip and replace any of the pieces of the design, as you’ve created a layer of abstraction for all of your systems – Nice.  Bring on best of breed.

The other cool thing about an approach like this is that you can start to amalgamate your “SaaS silos” which is the modern equivalent of “disconnected data silos”.  If your business is subscribing to SaaS services, you have a standardised approach of being able to get organisational wide benefit from the subscription.

Outbound from JDE, you can see that we are using RTE’s.  These might go directly to a AWS SQS queue, or they might also go to google subscriber queue or Microsoft Azure cloud services.  All could queue these messages.  The beauty of this is that the integration points already exist in JDE as RTE’s.  You just need to point these queues (or TXN server) to your middleware or cloud pub/sub service for reliable and fault tolerant delivery.  You can then have as many microservice subscribe to these messages and perform specific and independent tasks based upon the information coming in.


image

Wow, JDE has done a great job of letting you innovate at the speed of cloud by giving you some really cool integration methods.  There is nothing stopping you plugging in IoT, mobility, integrations, websites, forms and more into JD Edwards simply and easily.  Also giving you a extremely robust and secure ERP doing ensuring master data management and a single source of truth.

This model works on prem, hybrid or complete cloud.

Bulk version change tips and tricks

$
0
0

Ever needed to create a lot of versions as a copy of others?  Ever needed to create versions and also change data selections and processing options?  Say for example you opened another DC and wanted to copy all of the config from the previous ones – reuse all of your IP – well, do I have some good news for you..  Well indifferent news – it can be done.

The first step to getting this working is brain storming, one of my fav people to brainstorm with is Shae.  We can have quick single syllable word conversations, grunt a bit – but at the end of the day articulate an elegant solution to some amazing technical problems,  I’m very lucky to have peers like this to work with.  Shae came up with the idea of using a par file to complete this task – and that was a great idea!  I can easily create a project with SQL, populate it with all of the versions I need to copy.  I can also create all of the F983051 and central objects to create the base objects, but I’d need to use load testing or scripts to change all of the PO’s and data selection.

Shae’s idea to use the parfile was great, it seemed possible.  The client in question has about 500 versions all for a particular DC, and I needed to change names, PO;s and data selections based upon the new name change – okay – challenge accepted.

There are heaps of ways of doing this – java, node.js, lambda, vbscript – I went old school – a little bit of sed and awk.

I basically took the parfile, sftpd it to linux and then ripped it apart.

The structure was not too crazy to deal with, although it did feel like Russian dolls, where there was a zip file in a zip file in a zip file.

There was also some pretty funky things like unicode files in the middle not normal files and base64 strings for PO’s – but nothing was going to stop me.

What I’m going to do is just cut and paste the script here, you’ll get the idea of what needed to be done from the sections and the amazing comments.

In my example the version names, PO’s and data selection all changed from string TT to string GB – so it was really easy to apply these rules through the script.

At the end of the day, this created a separate par file that you can restore to a project when all of the new versions in it! Really nice.

There is a tiny bit of error handling and other things – but really just showing you what can be done.

Imagine if you needed to change the queue on 100’s of versions or anything like this.  You could use some of the logic below to get it done (or be nice to me).


if [ $# -ne 3 ]
   then
     echo 'USAGE $0 <parfile> <FROm STRING> <TO STRING>'
     exit
fi

_debug=1
workingDir=/tmp
parfile=$1
fromString=$2
toString=$3
parfileNoExt=`echo $parfile | awk -F. '{print $1}'`
expDir=$workingDir/$parfileNoExt

rm -fR $expDir

#unzip the file to the working dir
unzip $parfile -d $expDir

for file in `ls $expDir/*.par`
   do
     #echo $file
     dir=`echo $file | awk -F. '{print $1}'`
     #echo $dir
     unzip -q $file -d $dir
done

#parfile
# parfile UBEVER_R57000035_PP0001_60_99
#   F983051.xml
#   F983052.xml
#   manifest.xml
#   specs.zip
#   RDASPEC
#    R5700036.PP0002.1.0.0.0.0.xml
#

#now lets extract the specs zip file for each

find $expDir -name specs.zip -execdir unzip -q \{} \;

#now delete par files and all else

find $expDir -name '*.par' -exec rm \{} \;
find $expDir -name specs.zip -exec rm \{} \;

# now we need to rename directories
if [ $_debug = 1 ]
then
   echo "RENAME DIRS"
fi

cd $expDir
for dir in `ls -d *${fromString}*`
do
   echo $dir
   newname=`echo $dir | sed s/_${fromString}/_${toString}/g`
   newname=`basename "$newname"`
   echo $newname
   cd $expDir
   mv $dir $newname
done

#reanme files, generally in the spec dir
#for file in `find $expDir -name "*${fromString}*.xml" -type f -print`
#holy crap, that took a long time to encase this with double quotes so as not to lose the
#dodgey versions
if [ $_debug = 1 ]
then
   echo "RENAME FILES"
fi

find $expDir -name "*${fromString}*.xml" -type f |while read file; do
     newfile=`basename "$file"`
     newfile=`echo "$newfile" | sed s/${fromString}/${toString}/2`
     currDir=`dirname "$file"`
     mv "$file""$currDir/$newfile"
     if [ $? -ne 0 ]
       then
         echo "MOVE ERROR ""FILEFROM:$file:""FILETO:$currDir/$newfile:"
         sleep 10
         exit
     fi
done

#filelist="`find $expDir -name "*${fromString}*.xml" -type f -print`"
#echo $filelist
#for file in $filelist
   #do
     #newfile=`basename "$file"`
     #newfile=`echo "$newfile" | sed s/${fromString}/${toString}/g`
     #currDir=`dirname "$file"`
     #mv "$file""$currDir/$newfile"
     #if [ $? -ne 0 ]
       #then
         #echo "MOVE ERROR ""FILEFROM:$file:""FILETO:$currDir/$newfile:"
         #sleep 10
         #exit
     #fi
#done

if [ $_debug = 1 ]
then
   echo "SED CONTENTS OF FILES AND CREATE .NEW"
fi

#This is ridiculous - I need to convert manifest.xml
#from utf-16 to utf-8 and grep and then back again
# this is killing me
echo 'CONVERTING MANIFEST.XML'
for file in `find $expDir -name manifest.xml -print`
do
   echo $file
#  iconv -f utf-16 -t utf-8 $file | sed s/${fromString}[0-9]/${toString}/g > $file.utf8
   iconv -f utf-16 -t utf-8 $file | sed s/${fromString}0/${toString}0/g > $file.utf8
   iconv -f utf-8 -t utf-16 $file.utf8 > $file
   rm $file.utf8
done
  
#okay, now for the contents of the files
set -x
grep -r -l "${fromString}" $expDir | while read file; do
#for file in "`grep -R -l ${fromString} $expDir/*`"
#  do
     newfile=`echo "${file}.new"`
     echo $file "contains $fromString"
     cat "${file}" | sed s/${fromString}/${toString}/g > "${newfile}"
     #note that if you need to compare the internals of the files
     #comment out the following lines.
     rm "$file"
     mv "$newfile""$file"
     if [ $? -ne 0 ]
       then
         echo "MOVE ERROR ""FROMFILE:$newfile:""TOFILE:$file:"
         sleep 10
         exit
     fi
done

#Need to decode the base63 PO string and replace fromString there too
#find the F983051's
#create a variable for PODATA, check for PP
echo "Processing F983051 VRPODATA"
for file in `find $expDir -name F983051.xml -print`
do
   base64String=`cat $file | tr -s "\n""@" | xmlstarlet sel -t -v "table/row/col[@name='VRPODATA']"  | base64 -d`
   charCount=`echo $base64String | wc -c`
   if [ $charCount -gt 1 ]
     then
     base64String=`echo $base64String | sed s/${fromString}/${toString}/g`
     echo 'changed string:' $base64String
     base64String=`echo $base64String | base64`
     xmlstarlet ed --inplace -u "table/row/col[@name='VRPODATA']" -v $base64String $file
     #just need to run the xmlstarlet ed
   fi
done

# find $expDir -name '*.new' -print | wc -l

#so now we replace the .new with the original
#job done...
#need to zip everything back up

if [ $_debug = 1 ]
then
   echo "Creating spec.zip"
fi

for dir in `ls -d $expDir/*`
   do
     cd $dir
     zip -r specs.zip ./RDASPEC
     zip -r specs.zip ./RDATEXT
     rm -fr ./RDASPEC ./RDATEXT
done

#now we create all of the par files from the dirs under expDir

for dir in `ls -d $expDir/* |grep drwx`
   do
     cd $expDir
     zip -r ${dir}.par `basename $dir`
     rm -rf $dir
done

#now the root parfile
cd $expDir
rm -rf ../${parfile}.zip
zip -r ../${parfile}.zip *

CD3–in action


Tools release 9.2 update 2 is GA

$
0
0


There are a heap of cool features, let me summarise them:  read the source of truth http://www.oracle.com/us/products/applications/jd-edwards-enterpriseone/jde-ga-10-17-3961047.pdf

  • additions to UXOne
  • mobile time entry – new app
  • mobile inventory transfer and cycle count
  • Supporting MAF 2,.4 (but why would you bother?) https://docs-uat.us.oracle.com/middleware/maf240/mobile/develop-maf/whats-new-this-guide-release-2.3.2.htm
  • There are a heap of application enhancements – which is a little strange when something is labeled tools release.  I guess we are seeing once again the execution of continuous delivery
    • Manufacturing Production Execution Process Simplification
    • HCM improvements
    • Finally - Joint Venture Management - Percentage of Ownership and Distributions
    • Capital Asset Management and Service Management
  • TOOLS
    • Announcing JD Edwards EnterpriseOne Notifications – NOT mobile message notifications. 
      • orchestrator can now process notifications -
      • the notification system will notify the appropriate users via their preferred delivery: within the JD Edwards web client, in the JD Edwards Work Center, or via email or text message.
      • Wow, does this mean perhaps some attempt at the sadly missing workflow engine?
      • Where are the mobile notifications?
      • I have big plans to integration microsoft Flow into JD Edwards natively as a fully featured and rich workflow engine
    • JD Edwards EnterpriseOne Orchestrator Enhancements
      • read from external data
      • read from watch lists
      • is this going to be workflow I ask (finally!)
    • Server Manager REST API enhancements.  This is cool if you want to connect SCOM or other management product into SM to manage the organisation.
      • Enterprise Server -
      • HTML Server -
      • Application Interface Services Server (AIS) -
      • Transaction Server (RTE) -
      • Business Services Server (BSSV) -
      • BI Publisher Server for One View Reporting (OVR) -
      • Database Server
    • Enhancements to Simplify Staying Current
      • Anything in this area is good.  You can track if BSFN’s are being called
      • I’d still use our ERP analytics program and augment the information with this.
    • More platform certifications – could there be a more boring list?  (MSFT EDGE!)
      • Oracle Database 12.2.0.1 
      • Oracle JavaScript Extension Toolkit (JET) 3.1 
      • Oracle Mobile Application Framework (MAF) 2.4 for Mobile Foundation 
      • Microsoft EDGE browser 38


http://www.oracle.com/us/products/applications/jd-edwards-enterpriseone/jde-ga-10-17-3961047.pdf

A really quick oracle performance test–what did you get?

$
0
0

Ever had a slow down that you cannot really explain, I know that I have.

What you always need is a set of baseline tests, things that ground your expectations.

Remember that we’ve provided these sorts of things with ERP analytics (at a high level)

and performance benchmark - http://myriad-it.com/solution/performance-benchmark/ (which I think is really cool).

But let’s take it down another notch, database only!

Imagine that things are slowing down and you want to find a problem.  Performance problems are like a pyramid, where there is something like:

image

If you’re hardware is rubbish, everything will be rubbish.

If you’re database is rubbish, everything will be rubbish…

You see where I’m going.

So, I’d first run some dd commands on the hardware to check disk speeds, I’d check the location of the data disks and then the redo disks.  I check the disk speed where temp is written and swap.  make sure they are all pretty quick.


[root@ronin0-net1 homewood]# dd if=/dev/zero of=speedtest1.dmp oflag=direct conv=notrunc bs=1M count=11200

6527+0 records in

6527+0 records out

6844055552 bytes (6.8 GB) copied, 299.438 seconds, 22.9 MB/s

The above would indicate a VERY large problem

[root@ronin0 homewood]# dd if=/dev/zero of=speedtest1.dmp oflag=direct conv=notrunc bs=1M count=11200

11200+0 records in

11200+0 records out

11744051200 bytes (12 GB) copied, 25.8044 seconds, 455 MB/s

The above would make you smile!

Then – you’ve tested the performance of a bunch of locations  - happy days.  Now the database.

Once again, simple things for simple people.

create a sql script with the following contents:


set echo on
set feedback on
set timing on
spool output.txt
begin
   execute immediate 'drop table testdta.f0101perf';
   execute immediate 'create table testdta.f0101perf as select * from testdta.F0101 where 1 = 0';
   execute immediate 'grant all on testdta.f0101perf to PUBLIC';
   for a in 1..10000 loop
      insert into testdta.f0101perf select * from testdta.F0101 where aban8 = 100;
      commit;
   end loop;
end;
/
quit;
/


And run it at the commandline:


C:\Users\shannonm>sqlplus JDE@orcl @shannon.sql

SQL*Plus: Release 10.2.0.1.0 - Production on Wed Nov 1 14:03:53 2017

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

Enter password:

Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> set feedback on
SQL> set timing on
SQL> spool output.txt
SQL> begin
   2    execute immediate 'drop table testdta.f0101perf';
   3    execute immediate 'create table testdta.f0101perf as select * from testdt
a.F0101 where 1 = 0';
   4    execute immediate 'grant all on testdta.f0101perf to PUBLIC';
   5    for a in 1..100000 loop
   6       insert into testdta.f0101perf select * from testdta.F0101 where aban8
= 100;
   7       commit;
   8    end loop;
   9  end;
  10  /

PL/SQL procedure successfully completed.

Elapsed: 00:00:31.75
SQL> quit;
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64
bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

C:\Users\shannonm>


So, now we can open our results file, which is placed in the dir we ran the script from (again, nothing fancy). output.txt.  Remember Address book 100 should exist – I could make that smarter with = (select max(aban8) from crpdta.f0101), but that would be an extra table scan (index and sort) that I did not want to execute.

What does this do?

Creates a copy of F0101 and then insert’s 100,000 records into it.


SQL> begin
   2    execute immediate 'drop table testdta.f0101perf';
   3    execute immediate 'create table testdta.f0101perf as select * from testdta.F0101 where 1 = 0';
   4    execute immediate 'grant all on testdta.f0101perf to PUBLIC';
   5    for a in 1..100000 loop
   6        insert into testdta.f0101perf select * from testdta.F0101 where aban8 = 100;
   7        commit;
   8    end loop;
   9  end;
  10  /

PL/SQL procedure successfully completed.

Elapsed: 00:00:31.75
SQL> quit;

Remember, that this is not really testing index creation and index tablespaces, so you might want to make the test a little more realistic, but you get the picture.  It’s easy to get a bunch of indexes on the table and go from there.

Then you need to work on installing performance benchmark to start getting the stats on the other parts of your ERP – oh and ERP analytics (https://shannonmoir9.wixsite.com/website/erp-analytics)

Embark on IoT–where do you start

$
0
0

If I was going to implement some IoT to show the boss, I’d probably use the orchestrator in JDE.  It’s pretty cool and pretty simple and you could impress the boss fairly easily.  But, what if you REALLY wanted to impress the boss.  What if you wanted to be able to support disconnected devices, tonne’s of messages and what about a thing shadow?  All native when looking at the AWS IoT offering. 

Local caching, look no further than https://aws.amazon.com/greengrass/

Greeengrass is like an offline agent for IoT, awesome and native for the suite.

I’m also unsure how JDE might process millions of devices and trillions of messages, as I know that AWS can scale out to.

Connect An IoT Device

Above shows the native consumption of MQTT messages into the AWS engine.


Process IoT Data

You can see that the above is for an autonomous car, forget that though – it could be a freezer for all I care.  The cool things are the fact that the data can be processed into a data warehouse using redshift or even big data processing locations in inexpensive S3 buckets.   Save it all for later.  This also shows real time insights using quicksight, a possible downstream product of big data analysis.  Also using ML and AI for predictive.  This would call orchestrations in JDE (or just AIS calls) to raise work orders and react to the breaches of IoT configured thresholds.


                 A high-level view of AWS IoT

A complete solution is available, as seen above.  Making a thing shadow a native part of the tool kit.  This is something that is going to be very important with IoT moving forward, being able to interrogate a digital double.  Imagine putting on the VR goggles and being able to see the entire physical device as a digital double of any asset that you are maintaining.  Pointing your virtual hands to any part of the machine and being able to see all of the values that are being sent to IoT.  Welcome to the future!

Use JDE for what it’s good at – use well architected integration, use best of breed cloud solutions where appropriate!

Movember just went high tech!

$
0
0
I'm doing movember again this year - men's health is a great cause and I like to do my thing.  I think that the movember movement is slowing down in Australia.

I made my movember a little more innovative than most - surprise!

I decided to firstly create a QRCode, so that people could easily donate:

That was simple, my dontain URL is https://au.movember.com/donate/details?memberId=316906 So I converted that with http://www.qr-code-generator.com/

 Cool, so now people can scan and donate, that was easy!

Add some rhyme, and I'm away.

The next part is cooler, I own some estimote beacons, so why don't I program them to show my donation page. I need to go to bitly.com to generate a short URL, as I can only save 17 bytes, but that is easy.

This is the beacon I've put outside my office.  I now get out my android phone and we have a donation site being pushed out to anyone listening to the physical web.  Fingers crossed that my technology is going to get some donations.



The above is a screen shot from my phone showing the two beacons that I have projecting web sites.

Beacons are really cool (IoT) devices, we are implementing them at a number of clients and integrating them into JDE.

Transaction server in no time

$
0
0

It’s mandatory in this new event driven publisher and subscriber world.

Let’s make it better than the original, stay with me.

First, you need a component

image

upload it to SM

image

Remember that ports are tricky for this bad boy, you need to read one of my previous posts (https://shannonscncjdeblog.blogspot.com.au/2015/07/rte-port-mapping-wrong-and-right-way.html) .  You also need to ensure that you have installed the dbtemplates.exe into the database.

let’s not get too ahead of ourselves though.

image

upload then distribute to the web server you want to use


And it never appears in the list, nice one server manager!


image

Second time is a charm

distribute to my web server, it already has 100 things running…  Oh well, what’s another.


image

Now, create a server.


image


Choose transaction server

image

Choose a name and GO

image

You might want to include environment as part of the name.

image


Create it

image

Great, we have a running transaction server

image

We now need to do some JDE config to get things working.  First check for triggers on F90710

image

We have nothing here…

you need to run dbtemplates.exe –create from command window from a fatty if they are not there

image

You get a window like this

image

Then you see the trigger

image


P90701A Form –> configure servers –> add

image


Remember that this is the listen port from your config

image

Activate it!

Same for system and server map

Add some subscribers

image

You need to see your queue names, login to the weblogic console for the RTE server

image


image

Queues

image

Choose your module under services module

image

Connection factory


image

Activate your changes with the new connection factory

Now create a new queue

image

done – jms/RadQueue

jms/RadConnectionFactory


Soo…. all of the config is done in JDE, have a subscriber.  have events set up and active for my environment.

Everything is looking good.

image


Server manager tells me that I have two commited events, nice.

I want to see the data now, next post – hermes JMS

Wanna test your REST? JDE AIS REST example code

$
0
0

I know, you want to starting testing AIS – how cool would that be, but you do not have the right release of JD Edwards.  No problems!

sign up here:  https://e92demo.myriad-it.com/

image

Registration is immediate

image

The  you can use this to create an AIS token with:

http://e92demo.myriad-it.com/ais/jderest/defaultconfig

Now that you can see you can connect to the 9.2 AIS server – you can get a token:

image

URL:

http://e92demo.myriad-it.com/ais/jderest/tokenrequest

header:

Content-Type: application/json

body:

{
     "deviceName":"MyDevice",
     "username":"SMOMAN",
     "password":"XXXE2"
}


returns:

{"username":"SMOMAN","environment":"MYDEMO","role":"*ALL","jasserver":"http://E1WEBV3:9203","userInfo":{"token":"044JEAxluwIRZ6N3gXo/EernNMbxcCRhUxZZnfFiOE7bGY=MDE5MDA4OTExNzQxMDc0NDY3NDc4NTMxM015RGV2aWNlMTUxMzI0NDkxNjg1Mg==","langPref":"  ","locale":"en","dateFormat":"DMY","dateSeperator":"/","simpleDateFormat":"dd/MM/yy","decimalFormat":".","addressNumber":1007,"alphaName":"SYED ALTHAF GAFFAR","appsRelease":"E920","country":"","username":"SMOMAN"},"userAuthorized":false,"version":null,"poStringJSON":null,"altPoStringJSON":null,"aisSessionCookie":"0BFUbPx3aPdeAQ7kLfKkFhZX6O1SNHjdmxXA6F534I9YWjRqdtDz!-1131900178!1513244916855","adminAuthorized":false,"deprecated":true }


Cool, so we have a login token.  Note that I’m using a chrome plugin called “Simple REST Client”.  There are a heap out there.  Also see that I needed to strictly put a header in for content-type for JSON.  The older tools releases did not need this, but now the latest tools release does.

So, what next?  Let’s look at a popular application.

Login to your demo URL

http://e92demo.myriad-it.com/jde/E1Menu.maf

And go to your favourite application – P03013 – work with customer master

image

Choose a customer

image

Gas Station A – cool

What do we do now?  I generally do two things.  First tools –> collaborate –> parameterised URL

image

which gives you

image

So, we can see that we are passing in for item 7 (AN8), 1000, item 8 (company) 00000, item 11 1  

That’s pretty easy

image

So let’s use our token and our skills to show us some data (and perhaps change some data).

image

http://e92demo.myriad-it.com/ais/jderest/formservice

Content-Type: application/json

{
     "token": "044JEAxluwIRZ6N3gXo/EernNMbxcCRhUxZZnfFiOE7bGY=MDE5MDA4OTExNzQxMDc0NDY3NDc4NTMxM015RGV2aWNlMTUxMzI0NDkxNjg1Mg==",
     "version": "ZJDE0001",
     "formInputs": [
         {
            "id":7,
             "value": 1000
         },
         {
            "id":8,
             "value": "00000"
         }
     ],
     "deviceName": "MyDevice",
     "formName": "P03013_W03013B_ZJDE0001"
}

Wow, that is a LOT of JSON

{"fs_P03013_W03013B":{"title":"Customer Master Revision","data":{"lblDL01_411":{"id":411,"dataType":2,"bsvw":false,"title":"Blank -Cust. Type ID 40/CI","visible":true,"longName":"lblDL01_411","editable":false,"value":"Blank -Cust. Type ID 40/CI"},"lblDeductionManager_419":{"id":419,"dataType":2,"bsvw":false,"title":"Deduction Manager","visible":true,"longName":"lblDeductionManager_419","editable":false,"value":"Deduction Manager"},"txtDeductionManagers_420":{"id":420,"internalValue":"","dataType":2,"bsvw":false,"title":"Deduction Managers","visible":true,"longName":"txtDeductionManagers_420","assocDesc":"","editable":true,"value":"\" \""},"lblDefault_300":{"id":300,"dataType":2,"bsvw":false,"title":"Default","visible":true,"longName":"lblDefault_300","editable":false,"value":"Default"},"radNone_422":{"id":422,"internalValue":"0","dataType":1,"bsvw":true,"title":"None","visible":true,"longName":"radNone_422","editable":true,"value":"0"},"txtDefaultIdentificationCodeQualifier_301":{"id":301,"internalValue":"","dataType":2,"bsvw":true,"title":"Default","staticText":"Default","visible":true,"longName":"txtDefaultIdentificationCodeQualifier_301","assocDesc":".","editable":true,"value":""},"radPickPack_423":{"id":423,"internalValue":"0","dataType":1,"bsvw":true,"title":"Pick  Pack","visible":true,"longName":"radPickPack_423","editable":true,"value":"0"},"lblDefault_302":{"id":302,"dataType":2,"bsvw":false,"title":"Default","visible":true,"longName":"lblDefault_302","editable":false,"value":"Default"},"radStandardCarton_424":{"id":424,"internalValue":"0","dataType":1,"bsvw":true,"title":"Standard Carton","visible":true,"longName":"radStandardCarton_424","editable":true,"value":"0"},"txtDefaultReferenceNumberQualifier1_303":{"id":303,"internalValue":"","dataType":2,"bsvw":true,"title":"Default","staticText":"Default","visible":true,"longName":"txtDefaultReferenceNumberQualifier1_303","assocDesc":".","editable":true,"value":""},"chkPackagingCode_306":{"id":306,"internalValue":"","dataType":1,"bsvw":true,"title":"Packaging Code","visible":true,"longName":"chkPackagingCode_306","editable":true,"value":"off"},"chkTransportationMethod_307":{"id":307,"internalValue":"","dataType":1,"bsvw":true,"title":"Transportation Method","visible":true,"longName":"chkTransportationMethod_307","editable":true,"value":"off"},"chkRequiresEquipment_308":{"id":308,"internalValue":"","dataType":1,"bsvw":true,"title":"Requires Equipment","visible":true,"longName":"chkRequiresEquipment_308","editable":true,"value":"off"},"lblDL01_429":{"id":429,"dataType":2,"bsvw":false,"title":"Default - Item Type ID  40/II","visible":true,"longName":"lblDL01_429","editable":false,"value":"Default - Item Type ID  40/II"},"chkIdentificationCode1_309":{"id":309,"internalValue":"","dataType":1,"bsvw":true,"title":"Identification Code 1","visible":true,"longName":"chkIdentificationCode1_309","editable":true,"value":"off"},"lblTaxExplCode_197":{"id":197,"dataType":2,"bsvw":false,"title":"Tax Expl Code","visible":true,"longName":"lblTaxExplCode_197","editable":false,"value":"Tax Expl Code"},"txtTaxExplCode_198":{"id":198,"internalValue":"","dataType":2,"bsvw":true,"title":"Tax Expl Code","visible":true,"longName":"txtTaxExplCode_198","assocDesc":".","editable":true,"value":""},"lblTaxRateArea_199":{"id":199,"dataType":2,"bsvw":false,"title":"Tax Rate/Area","visible":true,"longName":"lblTaxRateArea_199","editable":false,"value":"Tax Rate/Area"},"lblBatchProcessingMode_400":{"id":400,"dataType":1,"bsvw":false,"title":"Batch Processing Mode","visible":true,"longName":"lblBatchProcessingMode_400","editable":false,"value":"Batch Processing Mode"},"txtBatchProcessingMode_401":{"id":401,"internalValue":"I","dataType":1,"bsvw":true,"title":"Batch Processing Mode","visible":true,"longName":"txtBatchProcessingMode_401","assocDesc":"Inhibited From Processing","editable":true,"value":"I"},"lblCustomerTypeIdentifier_402":{"id":402,"dataType":1,"bsvw":false,"title":"Customer Type Identifier","visible":true,"longName":"lblCustomerTypeIdentifier_402","editable":false,"value":"Customer Type Identifier"},"txtCustomerTypeIdentifier_403":{"id":403,"internalValue":"","dataType":1,"bsvw":true,"title":"Customer Type Identifier","visible":true,"longName":"txtCustomerTypeIdentifier_403","assocDesc":"Blank -Cust. Type ID 40/CI","editable":true,"value":""},"lblItemTypeIdentifier_404":{"id":404,"dataType":1,"bsvw":false,"title":"Item Type Identifier","visible":true,"longName":"lblItemTypeIdentifier_404","editable":false,"value":"Item Type Identifier"},"txtItemTypeIdentifier_405":{"id":405,"internalValue":"","dataType":1,"bsvw":true,"title":"Item Type Identifier","visible":true,"longName":"txtItemTypeIdentifier_405","assocDesc":"Default - Item Type ID  40/II","editable":true,"value":""},"lblAmountDecimals_406":{"id":406,"dataType":9,"bsvw":false,"title":"Amount Decimals","visible":true,"longName":"lblAmountDecimals_406","editable":false,"value":"Amount Decimals"},"txtAmountDecimals_407":{"id":407,"internalValue":0,"dataType":9,"bsvw":true,"title":"Amount Decimals","staticText":"Amount Decimals","visible":true,"longName":"txtAmountDecimals_407","assocDesc":"","editable":true,"value":"0"},"lblQuantityDecimals_408":{"id":408,"dataType":9,"bsvw":false,"title":"Quantity Decimals","visible":true,"longName":"lblQuantityDecimals_408","editable":false,"value":"Quantity Decimals"},"txtQuantityDecimals_409":{"id":409,"internalValue":0,"dataType":9,"bsvw":true,"title":"Quantity Decimals","staticText":"Quantity Decimals","visible":true,"longName":"txtQuantityDecimals_409","assocDesc":"","editable":true,"value":"0"},"lblCompany_19":{"id":19,"dataType":2,"bsvw":false,"title":"Company","visible":true,"longName":"lblCompany_19","editable":false,"value":"Company"},"txtLongAddressNumber_16":{"id":16,"internalValue":"","dataType":2,"bsvw":false,"title":"Long Address Number","staticText":"Long Address Number","visible":true,"longName":"txtLongAddressNumber_16","editable":true,"value":""},"lblLongAddressNumber_15":{"id":15,"dataType":2,"bsvw":false,"title":"Long Address Number","visible":true,"longName":"lblLongAddressNumber_15","editable":false,"value":"Long Address Number"},"txtAddressNumber_14":{"id":14,"internalValue":1000,"dataType":9,"bsvw":true,"title":"Customer  Number","staticText":"Customer  Number","visible":true,"longName":"txtAddressNumber_14","assocDesc":"Gas StationA","editable":false,"value":"1000"},"lblCustomerNumber_13":{"id":13,"dataType":9,"bsvw":false,"title":"Customer  Number","visible":true,"longName":"lblCustomerNumber_13","editable":false,"value":"Customer  Number"},"lblDefault_296":{"id":296,"dataType":2,"bsvw":false,"title":"Default","visible":true,"longName":"lblDefault_296","editable":false,"value":"Default"},"txtDefaultIdentificationCodeQualifier1_297":{"id":297,"internalValue":"","dataType":2,"bsvw":true,"title":"Default Identification Code Qualifier 1","visible":true,"longName":"txtDefaultIdentificationCodeQualifier1_297","assocDesc":".","editable":true,"value":""},"lblDefault_298":{"id":298,"dataType":2,"bsvw":false,"title":"Default","visible":true,"longName":"lblDefault_298","editable":false,"value":"Default"},"txtDefaultIdentificationCodeQualifier2_299":{"id":299,"internalValue":"","dataType":2,"bsvw":true,"title":"Default Identification Code Qualifier 2","visible":true,"longName":"txtDefaultIdentificationCodeQualifier2_299","assocDesc":".","editable":true,"value":""},"lblPaymentTermsAR_29":{"id":29,"dataType":2,"bsvw":false,"title":"Payment Terms - A/R","visible":true,"longName":"lblPaymentTermsAR_29","editable":false,"value":"Payment Terms - A/R"},"txtARModelDocumentCompany_190":{"id":190,"internalValue":"","dataType":2,"bsvw":true,"title":"A/R Model Document Company","visible":true,"longName":"txtARModelDocumentCompany_190","editable":true,"value":""},"lblModelJEDocTypeNoCo_191":{"id":191,"dataType":2,"bsvw":false,"title":"Model JE Doc Type / No / Co","visible":true,"longName":"lblModelJEDocTypeNoCo_191","editable":false,"value":"Model JE Doc Type / No / Co"},"txtARModelJEDocumentType_192":{"id":192,"internalValue":"","dataType":2,"bsvw":true,"title":"Model JE Doc Type / No / Co","staticText":"Model JE Doc Type / No / Co","visible":true,"longName":"txtARModelJEDocumentType_192","editable":true,"value":""},"txtARModelJEDocument_193":{"id":193,"internalValue":0,"dataType":9,"bsvw":true,"title":"A/R Model JE Document","visible":true,"longName":"txtARModelJEDocument_193","editable":true,"value":"0"},"lblAccountNumber_194":{"id":194,"dataType":2,"bsvw":false,"title":"Account Number","visible":true,"longName":"lblAccountNumber_194","editable":false,"value":"Account Number"},"txtAccountNumber_195":{"id":195,"internalValue":"","dataType":2,"bsvw":false,"title":"Account Number","staticText":"Account Number","visible":true,"longName":"txtAccountNumber_195","assocDesc":"","editable":true,"value":""},"lblDL01_196":{"id":196,"dataType":2,"bsvw":false,"title":"","visible":true,"longName":"lblDL01_196","editable":false,"value":""},"lblGLOffset_188":{"id":188,"dataType":2,"bsvw":false,"title":"G/L Offset","visible":true,"longName":"lblGLOffset_188","editable":false,"value":"G/L Offset"},"txtGLClass_189":{"id":189,"internalValue":"","dataType":2,"bsvw":true,"title":"G/L Offset","staticText":"G/L Offset","visible":true,"longName":"txtGLClass_189","assocDesc":"","editable":true,"value":""},"txtCompany_20":{"id":20,"internalValue":"00000","dataType":2,"bsvw":true,"title":"Company","staticText":"Company","visible":true,"longName":"txtCompany_20","editable":false,"value":"00000"},"lblCurrencyCode_39":{"id":39,"dataType":2,"bsvw":false,"title":"Currency Code","visible":true,"longName":"lblCurrencyCode_39","editable":false,"value":"Currency Code"},"txtCurrencyCodeABAmounts_38":{"id":38,"internalValue":"USD","dataType":2,"bsvw":true,"title":"Currency Code &#45; A/B Amounts","visible":true,"longName":"txtCurrencyCodeABAmounts_38","assocDesc":"U.S. Dollar","editable":true,"value":"USD"},"lblABAmountCodes_37":{"id":37,"dataType":2,"bsvw":false,"title":"A/B Amount Codes","visible":true,"longName":"lblABAmountCodes_37","editable":false,"value":"A/B Amount Codes"},"txtConfigurationPickandPack_280":{"id":280,"internalValue":"","dataType":2,"bsvw":true,"title":"Configuration Pick and Pack","visible":true,"longName":"txtConfigurationPickandPack_280","assocDesc":"","editable":true,"value":""},"lblStandardCartonPackConfig_281":{"id":281,"dataType":2,"bsvw":false,"title":"Standard Carton Pack Config","visible":true,"longName":"lblStandardCartonPackConfig_281","editable":false,"value":"Standard Carton Pack Config"},"txtConfigurationStandardCartonPack_282":{"id":282,"internalValue":"","dataType":2,"bsvw":true,"title":"Configuration Standard Carton Pack","visible":true,"longName":"txtConfigurationStandardCartonPack_282","assocDesc":"","editable":true,"value":""},"lblShippingLabelProgram_283":{"id":283,"dataType":2,"bsvw":false,"title":"Shipping Label Program","visible":true,"longName":"lblShippingLabelProgram_283","editable":false,"value":"Shipping Label Program"},"txtShippingLabelProgram_284":{"id":284,"internalValue":"","dataType":2,"bsvw":true,"title":"Shipping Label Program","visible":true,"longName":"txtShippingLabelProgram_284","assocDesc":"","editable":true,"value":""},"lblPickPackConfig_279":{"id":279,"dataType":2,"bsvw":false,"title":"Pick  Pack Config","visible":true,"longName":"lblPickPackConfig_279","editable":false,"value":"Pick  Pack Config"},"txtPaymentInstrument_32":{"id":32,"internalValue":"","dataType":1,"bsvw":true,"title":"Payment Instrument","visible":true,"longName":"txtPaymentInstrument_32","assocDesc":"Default            (A/R & A/P)","editable":true,"value":""},"lblPaymentInstrument_31":{"id":31,"dataType":1,"bsvw":false,"title":"Payment Instrument","visible":true,"longName":"lblPaymentInstrument_31","editable":false,"value":"Payment Instrument"},"txtPaymentTermsAR_30":{"id":30,"internalValue":"P2","dataType":2,"bsvw":true,"title":"Payment Terms &#45; A/R","visible":true,"longName":"txtPaymentTermsAR_30","assocDesc":"P2 payment term","editable":true,"value":"P2"},"txtParentNumber_46":{"id":46,"internalValue":0,"dataType":9,"bsvw":false,"title":"Parent Number","visible":true,"longName":"txtParentNumber_46","assocDesc":"","editable":true,"value":"0"},"lblParentNumber_45":{"id":45,"dataType":9,"bsvw":false,"title":"Parent Number","visible":true,"longName":"lblParentNumber_45","editable":false,"value":"Parent Number"},"lblShippingLabelVersion_285":{"id":285,"dataType":2,"bsvw":false,"title":"Shipping Label Version","visible":true,"longName":"lblShippingLabelVersion_285","editable":false,"value":"Shipping Label Version"},"txtShippingLabelVersion_286":{"id":286,"internalValue":"","dataType":2,"bsvw":true,"title":"Shipping Label Version","visible":true,"longName":"txtShippingLabelVersion_286","editable":true,"value":""},"txtSendInvoiceto_42":{"id":42,"internalValue":"C","dataType":1,"bsvw":true,"title":"Send Invoice to","visible":true,"longName":"txtSendInvoiceto_42","assocDesc":"Customer","editable":true,"value":"C"},"lblSendInvoiceto_41":{"id":41,"dataType":1,"bsvw":false,"title":"Send Invoice to","visible":true,"longName":"lblSendInvoiceto_41","editable":false,"value":"Send Invoice to"},"txtCurrencyCode_40":{"id":40,"internalValue":"","dataType":2,"bsvw":true,"title":"Currency Code","visible":true,"longName":"txtCurrencyCode_40","assocDesc":"","editable":true,"value":""},"lblAutoReceiptsExecutionList_59":{"id":59,"dataType":2,"bsvw":false,"title":"Auto Receipts Execution List","visible":true,"longName":"lblAutoReceiptsExecutionList_59","editable":false,"value":"Auto Receipts Execution List"},"chkAutoReceiptYN_56":{"id":56,"internalValue":"Y","dataType":1,"bsvw":true,"title":"Auto Receipt (Y/N)","visible":true,"longName":"chkAutoReceiptYN_56","editable":true,"value":"on"},"lblDL01_55":{"id":55,"dataType":2,"bsvw":false,"title":"","visible":true,"longName":"lblDL01_55","editable":false,"value":""},"lblDL01_54":{"id":54,"dataType":2,"bsvw":false,"title":"Customer","visible":true,"longName":"lblDL01_54","editable":false,"value":"Customer"},"chkHoldInvoices_51":{"id":51,"internalValue":"N","dataType":1,"bsvw":true,"title":"Hold Invoices","visible":true,"longName":"chkHoldInvoices_51","editable":true,"value":"off"},"txtPersonOpeningAccount_69":{"id":69,"internalValue":"KE5982437","dataType":2,"bsvw":true,"title":"Person Opening Account","visible":true,"longName":"txtPersonOpeningAccount_69","assocDesc":"","editable":true,"value":"KE5982437"},"lblPersonOpeningAccount_68":{"id":68,"dataType":2,"bsvw":false,"title":"Person Opening Account","visible":true,"longName":"lblPersonOpeningAccount_68","editable":false,"value":"Person Opening Account"},"txtTemporaryCreditMessage_67":{"id":67,"internalValue":"","dataType":2,"bsvw":true,"title":"Temporary Credit Message","visible":true,"longName":"txtTemporaryCreditMessage_67","assocDesc":".","editable":true,"value":""},"lblDL01_392":{"id":392,"dataType":2,"bsvw":false,"title":"","visible":true,"longName":"lblDL01_392","editable":false,"value":""},"lblDL01_393":{"id":393,"dataType":2,"bsvw":false,"title":"U.S. Dollar","visible":true,"longName":"lblDL01_393","editable":false,"value":"U.S. Dollar"},"lblDL01_265":{"id":265,"dataType":2,"bsvw":false,"title":"","visible":true,"longName":"lblDL01_265","editable":false,"value":""},"lblTemporaryCreditMessage_66":{"id":66,"dataType":2,"bsvw":false,"title":"Temporary Credit Message","visible":true,"longName":"lblTemporaryCreditMessage_66","editable":false,"value":"Temporary Credit Message"},"txtCreditLimit_63":{"id":63,"internalValue":0,"dataType":9,"bsvw":true,"title":"Credit Limit","visible":true,"longName":"txtCreditLimit_63","assocDesc":"","editable":true,"value":"0"},"lblCreditLimit_62":{"id":62,"dataType":9,"bsvw":false,"title":"Credit Limit","visible":true,"longName":"lblCreditLimit_62","editable":false,"value":"Credit Limit"},"txtAutoReceiptsExecutionList_60":{"id":60,"internalValue":"","dataType":2,"bsvw":true,"title":"Auto Receipts Execution List","staticText":"Auto Receipts Execution List","visible":true,"longName":"txtAutoReceiptsExecutionList_60","editable":true,"value":""},"lblDL01_79":{"id":79,"dataType":2,"bsvw":false,"title":".","visible":true,"longName":"lblDL01_79","editable":false,"value":"."},"lblDL01_78":{"id":78,"dataType":2,"bsvw":false,"title":".","visible":true,"longName":"lblDL01_78","editable":false,"value":"."},"txtCreditManager_480":{"id":480,"internalValue":"","dataType":2,"bsvw":true,"title":"Credit Manager","visible":true,"longName":"txtCreditManager_480","assocDesc":".","editable":true,"value":""},"lblCreditManager_481":{"id":481,"dataType":2,"bsvw":false,"title":"Credit Manager","visible":true,"longName":"lblCreditManager_481","editable":false,"value":"Credit Manager"},"lblDL01_482":{"id":482,"dataType":2,"bsvw":false,"title":".","visible":true,"longName":"lblDL01_482","editable":false,"value":"."},"lblDL01_472":{"id":472,"dataType":2,"bsvw":false,"title":"Print/Mail","visible":true,"longName":"lblDL01_472","editable":false,"value":"Print/Mail"},"lblDL01_473":{"id":473,"dataType":2,"bsvw":false,"title":"","visible":true,"longName":"lblDL01_473","editable":false,"value":""},"lblDL01_474":{"id":474,"dataType":2,"bsvw":false,"title":".","visible":true,"longName":"lblDL01_474","editable":false,"value":"."},"txtDunBradstreet_233":{"id":233,"internalValue":"","dataType":2,"bsvw":true,"title":"Dun  Bradstreet","visible":true,"longName":"txtDunBradstreet_233","editable":true,"value":""},"lblDL01_475":{"id":475,"dataType":2,"bsvw":false,"title":".","visible":true,"longName":"lblDL01_475","editable":false,"value":"."},"lblDL01_476":{"id":476,"dataType":2,"bsvw":false,"title":".","visible":true,"longName":"lblDL01_476","editable":false,"value":"."},"chkCollectionReport_114":{"id":114,"internalValue":"Y","dataType":1,"bsvw":true,"title":"Collection Report","visible":true,"longName":"chkCollectionReport_114","editable":true,"value":"on"},"lblDL01_477":{"id":477,"dataType":2,"bsvw":false,"title":".","visible":true,"longName":"lblDL01_477","editable":false,"value":"."},"chkPrintStatement_115":{"id":115,"internalValue":"Y","dataType":1,"bsvw":true,"title":"Print Statement","visible":true,"longName":"chkPrintStatement_115","editable":true,"value":"on"},"chkDelinquencyFees_116":{"id":116,"internalValue":"N","dataType":1,"bsvw":true,"title":"Delinquency Fees","visible":true,"longName":"chkDelinquencyFees_116","editable":true,"value":"off"},"txtCreditMessage_77":{"id":77,"internalValue":"","dataType":2,"bsvw":false,"title":"Credit Message","visible":true,"longName":"txtCreditMessage_77","assocDesc":".","editable":true,"value":""},"chkDelinquencyNotices_117":{"id":117,"internalValue":"Y","dataType":1,"bsvw":true,"title":"Delinquency Notices","visible":true,"longName":"chkDelinquencyNotices_117","editable":true,"value":"on"},"lblCreditMessage_76":{"id":76,"dataType":2,"bsvw":false,"title":"Credit Message","visible":true,"longName":"lblCreditMessage_76","editable":false,"value":"Credit Message"},"txtDateAccountOpened_75":{"id":75,"internalValue":"1299715200000","dataType":11,"bsvw":true,"title":"Date Account Opened","visible":true,"longName":"txtDateAccountOpened_75","editable":true,"value":"10/03/11"},"lblDateAccountOpened_74":{"id":74,"dataType":11,"bsvw":false,"title":"Date Account Opened","visible":true,"longName":"lblDateAccountOpened_74","editable":false,"value":"Date Account Opened"},"txtDateofLastCreditReview_73":{"id":73,"dataType":11,"bsvw":true,"title":"Date of Last Credit Review","visible":true,"longName":"txtDateofLastCreditReview_73","editable":true,"value":""},"lblDateofLastCreditReview_72":{"id":72,"dataType":11,"bsvw":false,"title":"Date of Last Credit Review","visible":true,"longName":"lblDateofLastCreditReview_72","editable":false,"value":"Date of Last Credit Review"},"txtRecallforReviewDate_71":{"id":71,"dataType":11,"bsvw":true,"title":"Recall for Review Date","visible":true,"longName":"txtRecallforReviewDate_71","editable":true,"value":""},"lblRecallforReviewDate_70":{"id":70,"dataType":11,"bsvw":false,"title":"Recall for Review Date","visible":true,"longName":"lblRecallforReviewDate_70","editable":false,"value":"Recall for Review Date"},"txtMinimumCashReceiptPercentage_492":{"id":492,"internalValue":0,"dataType":9,"bsvw":true,"title":"Minimum Cash Receipt Percentage","staticText":"Minimum Cash Receipt Percentage","visible":true,"longName":"txtMinimumCashReceiptPercentage_492","editable":true,"value":"0"},"lblMinimumCashReceiptPercentage_493":{"id":493,"dataType":9,"bsvw":false,"title":"Minimum Cash Receipt Percentage","visible":true,"longName":"lblMinimumCashReceiptPercentage_493","editable":false,"value":"Minimum Cash Receipt Percentage"},"txtCollectionManager_483":{"id":483,"internalValue":"","dataType":2,"bsvw":true,"title":"Collection Manager","visible":true,"longName":"txtCollectionManager_483","assocDesc":"No collection mgr assigned","editable":true,"value":""},"lblLastReviewedBy_80":{"id":80,"dataType":2,"bsvw":false,"title":"Last Reviewed By","visible":true,"longName":"lblLastReviewedBy_80","editable":false,"value":"Last Reviewed By"},"lblCollectionManager_484":{"id":484,"dataType":2,"bsvw":false,"title":"Collection Manager","visible":true,"longName":"lblCollectionManager_484","editable":false,"value":"Collection Manager"},"lblDL01_485":{"id":485,"dataType":2,"bsvw":false,"title":"No collection mgr assigned","visible":true,"longName":"lblDL01_485","editable":false,"value":"No collection mgr assigned"},"lblDL01_486":{"id":486,"dataType":2,"bsvw":false,"title":"","visible":true,"longName":"lblDL01_486","editable":false,"value":""},"txtPolicyCompany_247":{"id":247,"internalValue":"00000","dataType":2,"bsvw":false,"title":"Policy Company","visible":true,"longName":"txtPolicyCompany_247","editable":true,"value":"00000"},"txtTRWRating_88":{"id":88,"internalValue":"","dataType":2,"bsvw":true,"title":"TRW Rating","visible":true,"longName":"txtTRWRating_88","editable":true,"value":""},"txtTRWDate_87":{"id":87,"dataType":11,"bsvw":true,"title":"TRW Date","staticText":"TRW Date","visible":true,"longName":"txtTRWDate_87","editable":true,"value":""},"lblTRWDate_86":{"id":86,"dataType":11,"bsvw":false,"title":"TRW Date","visible":true,"longName":"lblTRWDate_86","editable":false,"value":"TRW Date"},"txtDunBradstreetDate_85":{"id":85,"dataType":11,"bsvw":true,"title":"Dun  Bradstreet Date","staticText":"Dun  Bradstreet Date","visible":true,"longName":"txtDunBradstreetDate_85","editable":true,"value":""},"lblDunBradstreetDate_84":{"id":84,"dataType":11,"bsvw":false,"title":"Dun  Bradstreet Date","visible":true,"longName":"lblDunBradstreetDate_84","editable":false,"value":"Dun  Bradstreet Date"},"txtFinancialStmtsonHand_83":{"id":83,"dataType":11,"bsvw":true,"title":"Financial Stmts on Hand","staticText":"Financial Stmts on Hand","visible":true,"longName":"txtFinancialStmtsonHand_83","assocDesc":"","editable":true,"value":""},"lblFinancialStmtsonHand_82":{"id":82,"dataType":11,"bsvw":false,"title":"Financial Stmts on Hand","visible":true,"longName":"lblFinancialStmtsonHand_82","editable":false,"value":"Financial Stmts on Hand"},"txtLastReviewedBy_81":{"id":81,"internalValue":"","dataType":2,"bsvw":true,"title":"Last Reviewed By","visible":true,"longName":"txtLastReviewedBy_81","assocDesc":"","editable":true,"value":""},"txtABCCodeSales_91":{"id":91,"internalValue":"C","dataType":1,"bsvw":true,"title":"ABC Code Sales","staticText":"ABC Code Sales","visible":true,"longName":"txtABCCodeSales_91","assocDesc":"Grade C","editable":true,"value":"C"},"lblABCCodeSales_90":{"id":90,"dataType":1,"bsvw":false,"title":"ABC Code Sales","visible":true,"longName":"lblABCCodeSales_90","editable":false,"value":"ABC Code Sales"},"lblDL01_451":{"id":451,"dataType":2,"bsvw":false,"title":"Grade C","visible":true,"longName":"lblDL01_451","editable":false,"value":"Grade C"},"lblDL01_452":{"id":452,"dataType":2,"bsvw":false,"title":"P2 payment term","visible":true,"longName":"lblDL01_452","editable":false,"value":"P2 payment term"},"lblDL01_453":{"id":453,"dataType":2,"bsvw":false,"title":"Default            (A/R & A/P)","visible":true,"longName":"lblDL01_453","editable":false,"value":"Default            (A/R & A/P)"},"lblDL01_455":{"id":455,"dataType":2,"bsvw":false,"title":"Gas StationA","visible":true,"longName":"lblDL01_455","editable":false,"value":"Gas StationA"},"lblPolicyNameCompany_99":{"id":99,"dataType":2,"bsvw":false,"title":"Policy Name/Company","visible":true,"longName":"lblPolicyNameCompany_99","editable":false,"value":"Policy Name/Company"},"txtABCCodeAverageDays_95":{"id":95,"internalValue":"C","dataType":1,"bsvw":true,"title":"ABC Code Average Days","staticText":"ABC Code Average Days","visible":true,"longName":"txtABCCodeAverageDays_95","assocDesc":"Grade C","editable":true,"value":"C"},"lblABCCodeAverageDays_94":{"id":94,"dataType":1,"bsvw":false,"title":"ABC Code Average Days","visible":true,"longName":"lblABCCodeAverageDays_94","editable":false,"value":"ABC Code Average Days"},"txtABCCodeMargin_93":{"id":93,"internalValue":"C","dataType":1,"bsvw":true,"title":"ABC Code Margin","staticText":"ABC Code Margin","visible":true,"longName":"txtABCCodeMargin_93","assocDesc":"Grade C","editable":true,"value":"C"},"lblABCCodeMargin_92":{"id":92,"dataType":1,"bsvw":false,"title":"ABC Code Margin","visible":true,"longName":"lblABCCodeMargin_92","editable":false,"value":"ABC Code Margin"},"lblDL01_470":{"id":470,"dataType":2,"bsvw":false,"title":"","visible":true,"longName":"lblDL01_470","editable":false,"value":""},"lblDL01_471":{"id":471,"dataType":2,"bsvw":false,"title":"Inhibited From Processing","visible":true,"longName":"lblDL01_471","editable":false,"value":"Inhibited From Processing"},"txtAlternatePayor_461":{"id":461,"internalValue":1000,"dataType":9,"bsvw":true,"title":"Alternate Payor","visible":true,"longName":"txtAlternatePayor_461","assocDesc":"Gas StationA","editable":true,"value":"1000"},"lblAlternatePayor_462":{"id":462,"dataType":9,"bsvw":false,"title":"Alternate Payor","visible":true,"longName":"lblAlternatePayor_462","editable":false,"value":"Alternate Payor"},"txtPolicyName_100":{"id":100,"internalValue":"","dataType":2,"bsvw":false,"title":"Policy Name","visible":true,"longName":"txtPolicyName_100","assocDesc":"Standard Policy","editable":true,"value":""},"lblDL01_463":{"id":463,"dataType":2,"bsvw":false,"title":"Gas StationA","visible":true,"longName":"lblDL01_463","editable":false,"value":"Gas StationA"},"lblDL01_103":{"id":103,"dataType":2,"bsvw":false,"title":"Standard Policy","visible":true,"longName":"lblDL01_103","editable":false,"value":"Standard Policy"},"txtSendMethod_467":{"id":467,"internalValue":"","dataType":1,"bsvw":true,"title":"Send Method","visible":true,"longName":"txtSendMethod_467","assocDesc":"Print/Mail","editable":true,"value":""},"lblSendStatementto_105":{"id":105,"dataType":1,"bsvw":false,"title":"Send Statement to","visible":true,"longName":"lblSendStatementto_105","editable":false,"value":"Send Statement to"},"lblSendMethod_468":{"id":468,"dataType":1,"bsvw":false,"title":"Send Method","visible":true,"longName":"lblSendMethod_468","editable":false,"value":"Send Method"},"txtSendStatementto_106":{"id":106,"internalValue":"C","dataType":1,"bsvw":true,"title":"Send Statement to","visible":true,"longName":"txtSendStatementto_106","assocDesc":"Customer","editable":true,"value":"C"},"lblStatementCycle_107":{"id":107,"dataType":2,"bsvw":false,"title":"Statement Cycle","visible":true,"longName":"lblStatementCycle_107","editable":false,"value":"Statement Cycle"},"txtStatementCycle_108":{"id":108,"internalValue":"G","dataType":2,"bsvw":true,"title":"Statement Cycle","visible":true,"longName":"txtStatementCycle_108","assocDesc":"","editable":true,"value":"G"},"lblDL01_430":{"id":430,"dataType":2,"bsvw":false,"title":"","visible":true,"longName":"lblDL01_430","editable":false,"value":""},"chkIdentificationCode2_310":{"id":310,"internalValue":"","dataType":1,"bsvw":true,"title":"Identification Code 2","visible":true,"longName":"chkIdentificationCode2_310","editable":true,"value":"off"},"lblDL01_431":{"id":431,"dataType":2,"bsvw":false,"title":"","visible":true,"longName":"lblDL01_431","editable":false,"value":""},"chkReferenceNumber1_311":{"id":311,"internalValue":"","dataType":1,"bsvw":true,"title":"Reference Number 1","visible":true,"longName":"chkReferenceNumber1_311","editable":true,"value":"off"},"lblDL01_432":{"id":432,"dataType":2,"bsvw":false,"title":"","visible":true,"longName":"lblDL01_432","editable":false,"value":""},"chkReferenceNumber2_312":{"id":312,"internalValue":"","dataType":1,"bsvw":true,"title":"Reference Number 2","visible":true,"longName":"chkReferenceNumber2_312","editable":true,"value":"off"},"chkWeight_313":{"id":313,"internalValue":"","dataType":1,"bsvw":true,"title":"Weight","visible":true,"longName":"chkWeight_313","editable":true,"value":"off"},"lblDL01_434":{"id":434,"dataType":2,"bsvw":false,"title":"","visible":true,"longName":"lblDL01_434","editable":false,"value":""},"chkRouting_314":{"id":314,"internalValue":"","dataType":1,"bsvw":true,"title":"Routing","visible":true,"longName":"chkRouting_314","editable":true,"value":"off"},"lblDL01_435":{"id":435,"dataType":2,"bsvw":false,"title":"Grade C","visible":true,"longName":"lblDL01_435","editable":false,"value":"Grade C"},"lblDL01_436":{"id":436,"dataType":2,"bsvw":false,"title":"Grade C","visible":true,"longName":"lblDL01_436","editable":false,"value":"Grade C"},"lblDL01_437":{"id":437,"dataType":2,"bsvw":false,"title":"","visible":true,"longName":"lblDL01_437","editable":false,"value":""},"lblDL01_438":{"id":438,"dataType":2,"bsvw":false,"title":"","visible":true,"longName":"lblDL01_438","editable":false,"value":""},"lblDL01_440":{"id":440,"dataType":2,"bsvw":false,"title":"Customer","visible":true,"longName":"lblDL01_440","editable":false,"value":"Customer"},"lblDL01_441":{"id":441,"dataType":2,"bsvw":false,"title":"","visible":true,"longName":"lblDL01_441","editable":false,"value":""},"txtTaxRateArea_200":{"id":200,"internalValue":"","dataType":2,"bsvw":true,"title":"Tax Rate/Area","staticText":"Tax Rate/Area","visible":true,"longName":"txtTaxRateArea_200","assocDesc":"","editable":true,"value":""},"lblDL01_442":{"id":442,"dataType":2,"bsvw":false,"title":"","visible":true,"longName":"lblDL01_442","editable":false,"value":""},"lblPersonCorporationCode_201":{"id":201,"dataType":1,"bsvw":false,"title":"Person/Corporation Code","visible":true,"longName":"lblPersonCorporationCode_201","editable":false,"value":"Person/Corporation Code"},"lblDL01_443":{"id":443,"dataType":2,"bsvw":false,"title":".","visible":true,"longName":"lblDL01_443","editable":false,"value":"."},"txtPersonCorporationCode_202":{"id":202,"internalValue":"","dataType":1,"bsvw":false,"title":"Person/Corporation Code","staticText":"Person/Corporation Code","visible":true,"longName":"txtPersonCorporationCode_202","assocDesc":"","editable":true,"value":""},"lblDL01_444":{"id":444,"dataType":2,"bsvw":false,"title":"","visible":true,"longName":"lblDL01_444","editable":false,"value":""},"lblDL01_445":{"id":445,"dataType":2,"bsvw":false,"title":"","visible":true,"longName":"lblDL01_445","editable":false,"value":""},"lblDL01_446":{"id":446,"dataType":2,"bsvw":false,"title":"","visible":true,"longName":"lblDL01_446","editable":false,"value":""},"lblAddlIndTaxID_205":{"id":205,"dataType":2,"bsvw":false,"title":"Add'l Ind Tax ID","visible":true,"longName":"lblAddlIndTaxID_205","editable":false,"value":"Add'l Ind Tax ID"},"lblDL01_447":{"id":447,"dataType":2,"bsvw":false,"title":"","visible":true,"longName":"lblDL01_447","editable":false,"value":""},"txtAddlIndTaxID_206":{"id":206,"internalValue":"","dataType":2,"bsvw":false,"title":"Add'l Ind Tax ID","staticText":"Add'l Ind Tax ID","visible":true,"longName":"txtAddlIndTaxID_206","editable":true,"value":""}},"errors":[],"warnings":[]},"stackId":1,"stateId":1,"rid":"4ae1eb3fc80475ec","currentApp":"P03013_W03013B_ZJDE0001","timeStamp":"2017-12-14:20.51.40","sysErrors":[],"deprecated":true }


Very simply, we are loading up this form in JDE (Customer master) for address book number 1000 and company 00000.  We are asking JDE to return the entire screen to us.

JDE returns the entire form in JSON

Wow, that is cool.

https://docs.oracle.com/cd/E53430_01/EOTRS/op-formservice-post.html look here to reduce the data coming back (returnControlIDs)

{
     "token": "044JEAxluwIRZ6N3gXo/EernNMbxcCRhUxZZnfFiOE7bGY=MDE5MDA4OTExNzQxMDc0NDY3NDc4NTMxM015RGV2aWNlMTUxMzI0NDkxNjg1Mg==",
     "version": "ZJDE0001",
     "formInputs": [
         {
            "id":7,
             "value": 1000
         },
         {
            "id":8,
             "value": "00000"
          }
      ],
      "returnControlIDs":"30|461|401",
      "deviceName": "MyDevice",
      "formName": "P03013_W03013B_ZJDE0001"
  }

Just say you only want a couple of control ID’s, then use the above.

{"fs_P03013_W03013B":{"title":"Customer Master Revision","data":{"txtPaymentTermsAR_30":{"id":30,"internalValue":"P2","dataType":2,"bsvw":true,"title":"Payment Terms &#45; A/R","visible":true,"longName":"txtPaymentTermsAR_30","assocDesc":"P2 payment term","editable":true,"value":"P2"},"txtAlternatePayor_461":{"id":461,"internalValue":1000,"dataType":9,"bsvw":true,"title":"Alternate Payor","visible":true,"longName":"txtAlternatePayor_461","assocDesc":"Gas StationA","editable":true,"value":"1000"},"txtBatchProcessingMode_401":{"id":401,"internalValue":"I","dataType":1,"bsvw":true,"title":"Batch Processing Mode","visible":true,"longName":"txtBatchProcessingMode_401","assocDesc":"Inhibited From Processing","editable":true,"value":"I"}},"errors":[],"warnings":[]},"stackId":2,"stateId":1,"rid":"4ae1eb3fc80475ec","currentApp":"P03013_W03013B_ZJDE0001","timeStamp":"2017-12-14:21.01.18","sysErrors":[],"deprecated":true }

Got our AIS ID tool in your chrome browser? JDE-xpansion

image

When you sign into JDE and use sift left click:


image

How nice is that, shows you the ID and puts it in your clip board.  Sweet!

Finally let’s change some data!

I’m going to change

image

I found that with JDE-xpansion to be 100

First I try:

{
     "token": "044JEAxluwIRZ6N3gXo/EernNMbxcCRhUxZZnfFiOE7bGY=MDE5MDA4OTExNzQxMDc0NDY3NDc4NTMxM015RGV2aWNlMTUxMzI0NDkxNjg1Mg==",
     "version": "ZJDE0001",
     "formInputs": [
         {
            "id":7,
             "value": 1000
         },
         {
            "id":8,
             "value": "00000"
          }
      ],
"formActions":[
      {
             "command": "SetControlValue",
             "value": "PREMIERE",
             "controlID": "100"
         }
],

     "returnControlIDs":"30|461|401",
      "deviceName": "MyDevice",
      "formName": "P03013_W03013B_ZJDE0001"
  }

And I get an ERROR, but the return is 200

{"fs_P03013_W03013B":{"title":"Customer Master Revision","data":{"txtPaymentTermsAR_30":{"id":30,"internalValue":"P2","dataType":2,"bsvw":true,"title":"Payment Terms &#45; A/R","visible":true,"longName":"txtPaymentTermsAR_30","assocDesc":"P2 payment term","editable":true,"value":"P2"},"txtAlternatePayor_461":{"id":461,"internalValue":1000,"dataType":9,"bsvw":true,"title":"Alternate Payor","visible":true,"longName":"txtAlternatePayor_461","assocDesc":"Gas StationA","editable":true,"value":"1000"},"txtBatchProcessingMode_401":{"id":401,"internalValue":"I","dataType":1,"bsvw":true,"title":"Batch Processing Mode","visible":true,"longName":"txtBatchProcessingMode_401","assocDesc":"Inhibited From Processing","editable":true,"value":"I"}},"errors":[{"CODE":"029X","TITLE":"Error: Policy Invalid","ERRORCONTROL":"100","DESC":"CAUSE . . . The policy name entered is not found in the A/R Delinquency Policy\\u000a            Master file(F03B25).\\u000aRESOLUTION. .Enter a valid policy name.","MOBILE":"The policy name entered is not found in the A/R Delinquency Policy\\u000a            Master file(F03B25)."}],"warnings":[]},"stackId":3,"stateId":1,"rid":"4ae1eb3fc80475ec","currentApp":"P03013_W03013B_ZJDE0001","timeStamp":"2017-12-14:21.06.50","sysErrors":[],"deprecated":true }
So the error is clear that the spelling is wrong for 
image
So you are going to need to check for the errors string array
When it works
{"fs_P03013_W03013B":{"title":"Customer Master Revision","data":{"txtPaymentTermsAR_30":{"id":30,"internalValue":"P2","dataType":2,"bsvw":true,"title":"Payment Terms &#45; A/R","visible":true,"longName":"txtPaymentTermsAR_30","assocDesc":"P2 payment term","editable":true,"value":"P2"},"txtAlternatePayor_461":{"id":461,"internalValue":1000,"dataType":9,"bsvw":true,"title":"Alternate Payor","visible":true,"longName":"txtAlternatePayor_461","assocDesc":"Gas StationA","editable":true,"value":"1000"},"txtBatchProcessingMode_401":{"id":401,"internalValue":"I","dataType":1,"bsvw":true,"title":"Batch Processing Mode","visible":true,"longName":"txtBatchProcessingMode_401","assocDesc":"Inhibited From Processing","editable":true,"value":"I"}},"errors":[],"warnings":[]},"stackId":4,"stateId":1,"rid":"4ae1eb3fc80475ec","currentApp":"P03013_W03013B_ZJDE0001","timeStamp":"2017-12-14:21.09.21","sysErrors":[],"deprecated":true }
See that errors is []
note also, I’m not hitting okay above, just checking!
What control is OK, need to use ITEM help
image
The  click the OK button
image
AIS ID 11

{
     "token": "044JEAxluwIRZ6N3gXo/EernNMbxcCRhUxZZnfFiOE7bGY=MDE5MDA4OTExNzQxMDc0NDY3NDc4NTMxM015RGV2aWNlMTUxMzI0NDkxNjg1Mg==",
     "version": "ZJDE0001",
     "formInputs": [
         {
            "id":7,
             "value": 1000
         },
         {
            "id":8,
             "value": "00000"
          }
      ],
"formActions":[
      {
             "command": "SetControlValue",
             "value": "PREMIER",
             "controlID": "100"
         },
        {
             "command": "DoAction",
             "controlID": "11"
         }
],

     "returnControlIDs":"30|461|401",
      "deviceName": "MyDevice",
      "formName": "P03013_W03013B_ZJDE0001"
  }

{"fs_P03013_W03013B":{"title":"Customer Master Revision","data":{"txtPaymentTermsAR_30":{"id":30,"internalValue":"P2","dataType":2,"bsvw":true,"title":"Payment Terms &#45; A/R","visible":true,"longName":"txtPaymentTermsAR_30","assocDesc":"P2 payment term","editable":true,"value":"P2"},"txtAlternatePayor_461":{"id":461,"internalValue":1000,"dataType":9,"bsvw":true,"title":"Alternate Payor","visible":true,"longName":"txtAlternatePayor_461","assocDesc":"Gas StationA","editable":true,"value":"1000"},"txtBatchProcessingMode_401":{"id":401,"internalValue":"I","dataType":1,"bsvw":true,"title":"Batch Processing Mode","visible":true,"longName":"txtBatchProcessingMode_401","assocDesc":"Inhibited From Processing","editable":true,"value":"I"}},"errors":[],"warnings":[]},"stackId":5,"stateId":1,"rid":"4ae1eb3fc80475ec","currentApp":"P03013_W03013B_ZJDE0001","timeStamp":"2017-12-14:21.14.41","sysErrors":[],"deprecated":true }

errors[]
image
I think that you might have just written your first AIS based code – pretty neat.
Next will be some advanced orchestration for you.

Quick assist on managing multiple WLS domains on a single Linux box and Server Manager

$
0
0
It's becoming more common to have a number of weblogic (WLS) domains on your web servers.  This is because that every component that is being released requires it's own J2EE container - and you might want a separate one for ADF and traditional web.  So, you create a couple of domains.

This is a good idea, but there are a couple of things to remember - each domain generally has an adminServer, and this can use quite a bit of memory - especially when you start creating multiple domains with multiple admin servers.

The dir structure generally looks like this:

[root@E1WEBv3 domains]# ls -l
total 20
drwxr-x---. 20 Oracle Oracle 4096 Dec 14 14:59 ADF_Apps
drwxrwxrwx. 18 Oracle root   4096 Oct 27 23:31 E1_Apps
drwxrwxrwx. 12 Oracle root   4096 Oct  7  2015 x_medrec
drwxrwxrwx. 12 Oracle root   4096 Oct  7  2015 x_medrec-spring
drwxrwxrwx. 13 Oracle root   4096 Oct  7  2015 x_wl_server
[root@E1WEBv3 domains]# pwd

/U01/Oracle/Middleware/user_projects/domains

You can see that I have ADF_Apps and E1_Apps in my home.  These can also be seen in server manager:


You cannot really tell from the front screen how many domains you have.  You should name things properly so it's obvious.  If you are introducing and naming a new domain, put that word into the text description!

This is a much better view and is hierarchal, we can see our domains and our admin servers and the various JDE components that we have running in each.

The main purpose of this post is to show you what you need running to be able to manage your  managed servers and managed instances.

If you click on the domain items, you'll see a table like:

Cluster Name
Managed ServerMachineListen PortRelated Managed Instances Help
{not clustered}AdminServer  (Running )SampleMachine17001None
{not clustered}myAccess  (Failed )SampleMachine19204
{not clustered}myAIS_TR  (Stopped )SampleMachine19224
  • myAIS_TR (EnterpriseOne Application Interface Services)
{not clustered}myAIS_MYDEMO  (Running )SampleMachine19223
  • myAIS_MYDEMO (EnterpriseOne Application Interface Services)
{not clustered}MYDEMO_9203  (Running )SampleMachine19303
{not clustered}myAIS_PY  (Failed )SampleMachine19221
  • myAIS_PY (EnterpriseOne Application Interface Services)
{not clustered}myAIS_DEMO  (Running )SampleMachine19222
  • myAIS_PD (EnterpriseOne Application Interface Services)
{not clustered}ADFServer  (Running )SampleMachine19266None
{not clustered}SMC_Server_EOne_ManagementConsole_Console  (Running )SampleMachine18999None
{not clustered}JPY920_9202  (Running )SampleMachine19202

None of these links will work, don't worry.  but you can see the ports for the domain's admin server

You'll also see the root install dir for WLS in /U01/Oracle/Middleware

I'm getting the following, what do I do?
Error
  1. Server 'IOT_Server' could not be started: Start task failed: Connection refused. Could not connect to NodeManager. Check that it is running at /192.168.204.238:5556.
    Failure during invoke:invoke(, , start) javax.management.MBeanException : Server 'IOT_Server' could not be started: Start task failed: Connection refused. Could not connect to NodeManager. Check that it is running at /192.168.204.238:5556.


I can see that this is for the ADF_Apps domain, so let's start the nodeAgent - or at least check that it's running:

[root@E1WEBv3 ADF_Apps]# pwd

/U01/Oracle/Middleware/user_projects/domains/ADF_Apps

Above is the root dir.  You can check for the process running.

[Oracle@E1WEBv3 ~]$ cd /U01/Oracle/Middleware/user_projects/domains/ADF_Apps/bin
[Oracle@E1WEBv3 bin]$ pwd
/U01/Oracle/Middleware/user_projects/domains/ADF_Apps/bin
[Oracle@E1WEBv3 bin]$ user
-bash: user: command not found
[Oracle@E1WEBv3 bin]$ whoami

Oracle

Make sure you are logged in as the user that owns the installation, generally oracle.


[Oracle@E1WEBv3 bin]$ ./setDomainEnv.sh

Ensure that you run the above.

[Oracle@E1WEBv3 bin]$ ps -ef |grep -i "weblogic.NodeManager -v" |more
Oracle    1690  1127  0 Jul24 ?        11:01:38 /usr/java/jdk1.8.0_60/bin/java -server -Xms32m -Xmx200m -XX:MaxPermSize=128m -Dcoherence.home=/U
01/Oracle/Middleware/wlserver/../coherence -Dbea.home=/U01/Oracle/Middleware/wlserver/.. -Dweblogic.RootDirectory=/U01/Oracle/Middleware/user_pr
ojects/domains/E1_Apps -Xverify:none -Djava.endorsed.dirs=/usr/java/jdk1.8.0_60/jre/lib/endorsed:/U01/Oracle/Middleware/wlserver/../oracle_commo
n/modules/endorsed -Djava.security.policy=/U01/Oracle/Middleware/wlserver/server/lib/weblogic.policy -Dweblogic.nodemanager.JavaHome=/usr/java/j
dk1.8.0_60 weblogic.NodeManager -v
Oracle    8435  8394 19 10:57 pts/2    00:00:29 /usr/java/jdk1.8.0_60/bin/java -server -Xms32m -Xmx200m -XX:MaxPermSize=128m -Dcoherence.home=/U
01/Oracle/Middleware/wlserver/../coherence -Dbea.home=/U01/Oracle/Middleware/wlserver/.. -Doracle.security.jps.config=/U01/Oracle/Middleware/use
r_projects/domains/ADF_Apps/config/fmwconfig/jps-config-jse.xml -Dcommon.components.home=/U01/Oracle/Middleware/oracle_common -Dopss.version=12.
1.3 -Dweblogic.RootDirectory=/U01/Oracle/Middleware/user_projects/domains/ADF_Apps -Xverify:none -Djava.endorsed.dirs=/usr/java/jdk1.8.0_60/jre/
lib/endorsed:/U01/Oracle/Middleware/wlserver/../oracle_common/modules/endorsed -Djava.security.policy=/U01/Oracle/Middleware/wlserver/server/lib
/weblogic.policy -Dweblogic.nodemanager.JavaHome=/usr/java/jdk1.8.0_60 weblogic.NodeManager -v
Oracle    8484  8307  0 10:59 pts/2    00:00:00 grep --color=auto -i weblogic.NodeManager -v

[Oracle@E1WEBv3 bin]$ 

Above will show you that there are two actually running

1 for E1_apps and 1 for ADF_Apps (see in the command for RootDirectory)

[Oracle@E1WEBv3 bin]$ ps -ef |grep -i "weblogic.NodeManager -v" |more
Oracle    1690  1127  0 Jul24 ?        11:01:39 /usr/java/jdk1.8.0_60/bin/java -server -Xms32m -Xmx200m -XX:MaxPermSize=128m -Dcoherence.home=/U
01/Oracle/Middleware/wlserver/../coherence -Dbea.home=/U01/Oracle/Middleware/wlserver/.. -Dweblogic.RootDirectory=/U01/Oracle/Middleware/user_pr
ojects/domains/E1_Apps -Xverify:none -Djava.endorsed.dirs=/usr/java/jdk1.8.0_60/jre/lib/endorsed:/U01/Oracle/Middleware/wlserver/../oracle_commo
n/modules/endorsed -Djava.security.policy=/U01/Oracle/Middleware/wlserver/server/lib/weblogic.policy -Dweblogic.nodemanager.JavaHome=/usr/java/j
dk1.8.0_60 weblogic.NodeManager -v
Oracle    8435     1 11 10:57 pts/2    00:00:30 /usr/java/jdk1.8.0_60/bin/java -server -Xms32m -Xmx200m -XX:MaxPermSize=128m -Dcoherence.home=/U
01/Oracle/Middleware/wlserver/../coherence -Dbea.home=/U01/Oracle/Middleware/wlserver/.. -Doracle.security.jps.config=/U01/Oracle/Middleware/use
r_projects/domains/ADF_Apps/config/fmwconfig/jps-config-jse.xml -Dcommon.components.home=/U01/Oracle/Middleware/oracle_common -Dopss.version=12.
1.3 -Dweblogic.RootDirectory=/U01/Oracle/Middleware/user_projects/domains/ADF_Apps -Xverify:none -Djava.endorsed.dirs=/usr/java/jdk1.8.0_60/jre/
lib/endorsed:/U01/Oracle/Middleware/wlserver/../oracle_common/modules/endorsed -Djava.security.policy=/U01/Oracle/Middleware/wlserver/server/lib
/weblogic.policy -Dweblogic.nodemanager.JavaHome=/usr/java/jdk1.8.0_60 weblogic.NodeManager -v

Oracle    8510  8307  0 11:01 pts/2    00:00:00 grep --color=auto -i weblogic.NodeManager -v

Interestingly when you kill the shell that started the nodemanager with nohup, the parent process moved to root (1).  That is nice, you nodeManager does not die.


[Oracle@E1WEBv3 bin]$ nohup ./startNodeManager.sh > /tmp/startNodeManager.log 2>&1 &

Above is a proper start command.  This will write logs to /tmp/startNodeManager.log

If you do this, it's terrible:

Oracle@E1WEBv3 bin]$ ./startNodeManager.sh &
[1] 8692
[Oracle@E1WEBv3 bin]$ NODEMGR_HOME is already set to /U01/Oracle/Middleware/user_projects/domains/ADF_Apps/nodemanager

CLASSPATH=/usr/java/jdk1.8.0_60/lib/tools.jar:/U01/Oracle/Middleware/wlserver/server/lib/weblogic_sp.jar:/U01/Oracle/Middleware/wlserver/server/lib/weblogic.jar:/U01/Oracle/Middleware/wlserver/../oracle_common/modules/net.sf.antcontrib_1.1.0.0_1-0b3/lib/ant-contrib.jar:/U01/Oracle/Middleware/wlserver/modules/features/oracle.wls.common.nodemanager_2.0.0.0.jar::/U01/Oracle/Middleware/wlserver/..

Firstly all of the output goes to your shell

I thought it was going to kill nodeManager when I logged out of the session, but it remains!

Note that the domain based startNodeManager actually calls the server/bin startNodeManager.sh script!

You can kill the nodeAgent as much as you like and it will not affect any of your J2EE servers running.

If you kill the admin servers, nothing runs either (control commands from SM), but you can just run the start commands at the commandline for the current domain to get things running.

Error
  1. Server 'IOT_Server' could not be started: Failed to connect to WebLogic. Make sure the domain administration server is running.
    Failure during invoke:invoke(, , start) javax.management.MBeanException : Server 'IOT_Server' could not be started: Failed to connect to WebLogic. Make sure the domain administration server is running.

Note that killing the admin Server also does not affect your existing instances running under the control of the admin server.

You cannot just start the admin server as a managedServer, see errors below

[Oracle@E1WEBv3 bin]$ pwd
/U01/Oracle/Middleware/user_projects/domains/E1_Apps/bin
[Oracle@E1WEBv3 bin]$ nohup ./startManagedWebLogic.sh AdminServer  > /tmp/startAdminServer.log 2>&1 &
[1] 9268
[Oracle@E1WEBv3 bin]$ 
[Oracle@E1WEBv3 bin]$ 
[Oracle@E1WEBv3 bin]$ 
[Oracle@E1WEBv3 bin]$ ps -ef |grep AdminServer
Oracle    9268  8768  0 11:20 pts/2    00:00:00 /bin/sh ./startManagedWebLogic.sh AdminServer
Oracle    9323  9269 99 11:20 pts/2    00:00:09 /usr/java/jdk1.8.0_60/bin/java -server -Xms512m -Xmx768m -XX:PermSize=256m -XX:MaxPermSize=512m -Dweblogic.Name=AdminServer -Djava.security.policy=/U01/Oracle/Middleware/wlserver/server/lib/weblogic.policy -Dweblogic.ProductionModeEnabled=true -Dweblogic.security.SSL.trustedCAKeyStore=/U01/Oracle/Middleware/wlserver/server/lib/cacerts -Djava.endorsed.dirs=/usr/java/jdk1.8.0_60/jre/lib/endorsed:/U01/Oracle/Middleware/wlserver/../oracle_common/modules/endorsed -Djava.protocol.handler.pkgs=oracle.mds.net.protocol -Dopss.version=12.1.3 -Digf.arisidbeans.carmlloc=/U01/Oracle/Middleware/user_projects/domains/E1_Apps/config/fmwconfig/carml -Digf.arisidstack.home=/U01/Oracle/Middleware/user_projects/domains/E1_Apps/config/fmwconfig/arisidprovider -Doracle.security.jps.config=/U01/Oracle/Middleware/user_projects/domains/E1_Apps/config/fmwconfig/jps-config.xml -Doracle.deployed.app.dir=/U01/Oracle/Middleware/user_projects/domains/E1_Apps/servers/AdminServer/tmp/_WL_user -Doracle.deployed.app.ext=/- -Dweblogic.alternateTypesDirectory=/U01/Oracle/Middleware/oracle_common/modules/oracle.ossoiap_12.1.3,/U01/Oracle/Middleware/oracle_common/modules/oracle.oamprovider_12.1.3,/U01/Oracle/Middleware/oracle_common/modules/oracle.jps_12.1.3 -Dweblogic.jdbc.remoteEnabled=false -Dcommon.components.home=/U01/Oracle/Middleware/oracle_common -Djrf.version=12.1.3 -Dorg.apache.commons.logging.Log=org.apache.commons.logging.impl.Jdk14Logger -Ddomain.home=/U01/Oracle/Middleware/user_projects/domains/E1_Apps -Doracle.server.config.dir=/U01/Oracle/Middleware/user_projects/domains/E1_Apps/config/fmwconfig/servers/AdminServer -Doracle.domain.config.dir=/U01/Oracle/Middleware/user_projects/domains/E1_Apps/config/fmwconfig -Doracle.mds.filestore.preferred= -Dadf.version=12.1.3 -da -Dwls.home=/U01/Oracle/Middleware/wlserver/server -Dweblogic.home=/U01/Oracle/Middleware/wlserver/server -Djavax.management.builder.initial=weblogic.management.jmx.mbeanserver.WLSMBeanServerBuilder -Dem.oracle.home=/U01/Oracle/Middleware/em -DINSTANCE_HOME=/U01/Oracle/Middleware/user_projects/domains/E1_Apps -Djava.awt.headless=true -Doracle.sysman.util.logging.mode=dual_mode -Dweblogic.management.server=http://E1WEBv3.mits.local:7001 -Djava.util.logging.manager=oracle.core.ojdl.logging.ODLLogManager -Dweblogic.utils.cmm.lowertier.ServiceDisabled=true weblogic.Server

Oracle    9344  8768  0 11:20 pts/2    00:00:00 grep --color=auto AdminServer

You need to actually start weblogic with startWebLogic.sh

startManagedWeblogic.sh only works when startWebLogic.sh has completed.

Note that you also want to nohup this bad boy, as it's pretty vocal.

But, now that the adminserver is running and the node manager is running, you can start things with SM.

Hopefully this gives you some skills in running commands from the command line to get your service processes up and running.





Transaction processing & locking in JDE

$
0
0

“To lock or not to lock” – that is the question!

To say that JDE does not do any locking is not quite true…  It calls the database functions that do the locking, so it does have a lot of responsibility in this.

Let’s look at a simple scenario, SOE and stock commitment…  Wait, that is not simple at all – but it’s understandable!

We have a person entering a sales order.  We know that this goes across a number of screens in JDE -

We know that this adds records to a number of tables

We want integrity in our database

We do not use fancy things like foreign keys – we use application logic to enforce transactional boundaries and we use database agnostic manual commits.

There are two things at play here though…  Locking and transaction processing…  They work together but are not necessarily the same time.

Locking

Let’s look at locking by itself.  I’m using a lot of information from here https://docs.oracle.com/cd/E24705_01/doc.91/e24234/record_locking.htm#EOTBF00095

I’m also reaching back to when I was programming and before JDE in C…  dark repressed memories.

In the scenario of SOE, we don’t really want to lock anything, as they are really new lines being added to a bunch of tables.

We do however want to lock the inventory for the orders so that there is enough to fulfill the order – so this is the lock we are talking about

We want to select for update over the F41021 (?) so ensure that we have enough inventory and then update when the order is committed.

JD Edwards does locking in two ways, optimistic and pessimistic.

optimistic is half glass full locking.  This is where you do not expect any problems, but if there are – you have a solution.  This involves manually checking timestamps and things…  If there is a situation, deal with it then.

pessimistic is where you ensure that there is never going to be a conflict – coz you’ve prevented it in the first place.  You are selecting the record for update (i.e. selecting the current stock levels)  and then you update when you are ready and the lock goes away.  Note that this is different to including the update in a transaction (with your inserts into the F4201 and F4211 – as they are naturally going to lock the record that is in the transaction boundary)…  See how they are the same but different.

Transaction Processing.

As demonstrated above, TP actually enforces pessimistic locking at the database level.  If you are doing an update as part of a transaction, the database is going to lock that record until the commit (or rollback) is issued, this is the purpose of TP and Multi Statement Transactions (MST).  Hopefully your database has row level locking and then you are not going to cause cascading of locks to pages and then tables… arrgghhh.

Transaction processing is all about manual commits.  It’s a series of transactions to databases with commit points, any errors will rollback the entire transaction – not just a single statement. handy.

Note that this DOES get more difficult with JDE.  We have this awesome thing called OCM which allows us to distribute logic and data.  Different logic locations can enforce a single transaction (using native DB tech like DTP Distributed Transaction Processing – I hope), neither will different data sources (event if they point to the same database).  This is because JDE opens the database connection and sets the commitment mode to manual or automatic.  It cannot programmatically enforce these boundaries with non standard logic and data setups.  This does get pretty complex under the scenes – stay standard and you will not have a problem.

Note that you also must look out for a BSFN (that runs on the enterprise server locking a record) and then having java code (or JDBC) reading or manipulating the same data – you are going to create some problems if they are not part of the single transaction. 

Want to know all of the areas in JDE that use TP?

https://support.oracle.com/epmos/faces/DocumentDisplay?parent=DOCUMENT&sourceId=1208208.1&id=1320968.1

Some of your purists out there might be surprised by the small number of listed programs (both batch and interactive).

You might be asking yourself about dirty reads

Not magazines passed around the boarding house… NO!  different dirty reads.

I’m talking about the above scenario when you are updating and inserting records in the database as a single transaction – do you allow people to see the uncommited version of the data or the commited version? Lets be honest for OLTP, you should only see committed data.  (You can see that massively parallel databases and noSQL databases might do something else).

This introduces the concept of isolation level

  1. Level 1: READ COMMITTED
    • This is default setting in SQL Server to prevent SQL from dirty read (which reads dirty page which is (not-yet) committed data)
  2. Level 0: READ UNCOMMITTED
    • This is to read uncommitted data that is, intentionally to have dirty read

 

Summary:

There seems to be enough tools and examples of TP and locking in the existing JD Edwards code and base code for you to be able to create some tight code, whether you are half glass full (optimistic) or half glass empty (pessimistic).  Remember that you need to manually do this locking if you are using technology like BSSV by using The startPublishedMethod, finishPublishedMethod, and close methods.  If you are using AIS, you are going to benefit from inheriting the TP functionality from forms that you are calling!  Nice.

Note that if you are manually calling BSFN’s – all at your own peril!

Error Error: Login Failed User is not included in the AIS server White List, contact your server administrator

$
0
0
I just created a new user, essentially GOD in JDE.

but it gets the following error when trying to log into the orchestration suite:


Note that it does not get this error when logging into the orchestration client (directly to AIS), so the error is a little bit strange!

A quick check of support.oracle.com shows me an error found in 9.2.1.2 - great -that is our release.

go here:  https://support.oracle.com/epmos/faces/DocContentDisplay?_afrLoop=249178588426576&id=2040956.1&_afrWindowMode=0&_adf.ctrl-state=10h8xp9h9n_145

Funny thing is that is works as JDE, but not as another user.  So I decided to follow the following option2 (as option 1 was for windoze).

Option 2:
a. take a backup of the config.xml file found in the 'WebLogic_home\user_projects\domains\AISDomainLocation\config' directory
b. add the '<enforce-valid-basic-auth-credentials>false</enforce-valid-basic-auth-credentials>" entry to the config.xml just before the closing
tag of the Weblogic Server domain:

myrealm
{AES}25la24ZXYsP1hsgwbVl7Qa6T6UxFeF/D2PN57oYOgOe1rmBOQYhviia/HoFghUXIeoYsJFteAhHWzaD0D4L8tykrYsYRnt/kzS3AQWPwZuc+jwLOE9r1LwyneM8dhHr6
weblogic
{AES}MtUDlUBN2E8NLXcHI3v/VE9AU3F3bwiMMqPBOBVGcPw=
false
true

backup your config.xml file from you domain home config dir

[oracle@ip-10-10-1-235 config]$ cp config.xml confix.shannon.xml
[oracle@ip-10-10-1-235 config]$ pwd
/Oracle_Home/user_projects/domains/e1apps/config

vi this file and add the line in bold

    weblogic
    {AES}UitOE/8SEeR3PneMozFFmPnhLCyzAzXEC4A8WUtUtHk=
false
    true
 
 
    AdminServer
   

Note that I had my AIS server, ADF and everything under the same home.  So I do not need to do this multiple times for multiple config.xml's

The fact that I get this problem with orchestration studio, means that I need to restart 9401, but I'll probably do my AIS server also.

Okay, so none of that made any difference.  It seems that you need to add this to the AIS server config for allowed users...

Change the SM view to advanced, then general.

Admin Service Allowed User List Help

Once I did this and synchronised rest.ini, then stopped and then started...  

We finally could login as another user.




Sharing orchestrations

$
0
0

I’ve been developing some orchestrations and am having a great time, no honestly.  There is so much power and so much productivity that you can implement using orchestration.  Notifications and subscriptions (although a little clunky) are also very cool.  I’ll do a bunch of blogging in this area, as it’s very cool.

But, let’s focus on a little issue I have.

I’ve been testing JD Edwards transaction processing (TP), locking and reservations using HTML, AIS and orchestration.  This involves different users and often different users trying to run the same code.

I WAS logging into the orchestrator and exporting my zip files and then importing with another user.  This is nice and easy, but not the correct way of doing things.

When calling with the alternate user, I get

{   "message" : "Endpoint not defined: POandVoucherCombo. Add the orchestration, or make sure it is shared to this user.",   "exception" : "java.lang.Exception",   "timeStamp" : "2018-01-31:02.28.59"
}

Method 1: save and restore:

image

Login to orchestration studio as user that created the orchestration.

edit the orchestration

Choose the export button, then ALL (this will include the rules and service requests and everything).

Import

image

Find the tools exit and choose import


image

Easy, choose the zip file that you created and you are away


image

Note they exist for me.  If they did not – just tick the box and choose submit!

Method 2: Fix security – share the UDO

run P98220

image

You’ll see orchestrations of various status

The orchestration that I’m dealing with is below, note that I’ve already selected the publish button.  My only options now are to reserve it so that I can publish it again.

image

Note that if I select reserve

image

The P9822OU changes immediately to editing

image

Let’s hit the request

image

image

And now it’s pending in JDE

image


How cool, the comments are in the MO – love it!

image

Lets share this awesome orchestration

image

Easy!!! – shared with public!

image

Unless you have it reserved, you cannot use it in the client:

image

So, you need specific security for the UDO to be able to run and see the shared orchestration

From P98220U

image

Now choose the “Revise View Security” tab

image

Enter the user names to share to and click SAVE (unlike me)

image

And now!

image


{   "message" : "ServiceRequest P0411OpenAndUpdateLedger.xml := java.io.IOException: P0411OpenAndUpdateLedger Not Found.  Check permissions of the UDO.",   "exception" : "java.lang.Exception",   "timeStamp" : "2018-01-31:03.04.48"
}

Okay, at least I get a different error now, this is a service request security problem, not orchestration problem.  I can fix that with all of the above mechanisms.

Setting up security for Orchestration Studio 6.0

$
0
0
Let's fix UDO security for orchestration notification button

image
Cannot add orchestration

image
Also cannot see the notifications button...

Make sure that you have these UDC's, the list below is correct for 9.2
image
I was able to change the security setting below for NTF
Security before:
After

Clear cache from SM
image
Reset the cache (JDBj) via server manager

image

Great, now I can add notifications!

Let's fix the security for orchestration now.

Above can now be chosen
Create UDO action security for NTF, SCHEDULE and ORCH
image

image

Should look like below
image

Now we can add a new orchestration!





imageNow lets download some samples to view what we need to orchestrate
Note that there is a download type of EnterpriseOne Orchestrator
image

Now goto tools menu from orchestration login

image
Import files, hit the BIG brown button
image

Save the par files and rename them to zip files.

image

Choose the file from the downloaded items

image

It shows you the included operations, note that these include orchestrations and service requests

Nice, we can now choose to edit the components


We can also see all of the edit controls, because our UDO security is correct
image

JD Edwards - JDE and the bot - your turn to play!

$
0
0
Want to know how easy it is to use voice and JDE?




This is it!

Purchase order approvals:


This is a sample PO approval conversation

You can talk to our bot about JDE.

For instance, ask it if you have any purchase orders to approve today?

You can then ask it, tell me about the second one (or 6th or 12th)

You can ask it to approve that order, it will prompt you for a reason - and it's done.

Meter readings:


This is a sample Meter Reading update

What is the current meter reading for yellow digger?
add 4 to that.

Job done...

These are very simple interactions that we can enable for you and your  installation of JDE.  This is using the power of AIS (or/and orchestration) if you like to create real-time integrations with JD Edwards.


Not only does this bot do what you ask, but it learns from your interactions.  We can also teach it how to react to certain requests.


Viewing all 541 articles
Browse latest View live