Monday, August 11, 2014

TAMTOOL: Slow Checkin and Get in OMW

One of the major issues with OMW use over a period of time, is deteriorating performance of Checkin and get methods.

I have seen systems where the screen almost freezes white when you try to do a Get.

This is caused by empty spaces in the spec files that may come in due to constant add and delete of data. These files can be defragmented using the TAMTOOL.exe to eliminate this crawling checkin and get.





To get an idea of the amount of free space that's there, just run the following from the command prompt :

c:\b7\system\bin32>tamtool -countfreenodes -a -p c:\b7\dv7334\spec\



If there are a lot of free nodes in the spec files, following would eliminate them:

c:\b7\system\bin32> tamtool.exe -clone c:\b7\DV7334\spec\gbrspec.xdb c:\b7\DV7334\spec\gbrspec.ddb c:\b7\DV7334\gbrspec.xdb c:\b7\DV7334\gbrspec.ddb -copydata


This should eliminate the performance issues related to Get and Checkin being slow.

I have only have to do this once in my last 8 years of being a CNC. Only did it on ERP 8. Will update the post when i get a chance to try this on the newer versions.


Friday, August 8, 2014

Object Transfer between Disconnected Instances

At various occassions we come up with a requirement where we need to send pobjects built on one instance to another instance at a remote location. Product packaging is one way of dealing with it.

Lets try and install objects created in one JDE instance on a separate JDE instance of E812 bypassing the Product Packaging technique.

 To make things clear, lets say we have one instance of JDE running at a consulting company in USA. Let their Deployment Server be DEPUSA. They need to send some objects in a project to a client in Canada. The client's deployment server is DEPCANADA and their instance is completely independent of the consulting company's instance. Now lets transfer opjects from USA to CANADA.

I ) On Source JDE Installation:

1.    Make a list of all objects that have to be deployed on Target JDE installation.

2.    Check in all the objects from development workstation to the server.

3.    Go to Menu GH9083 (Package Development Tools), take option “Package Assembly” (P9601) and follow the Director. Select all the objects that are to be deployed on   target machine. Make sure that the following instructions are followed while package assembly :
a)    Package type should be an  ‘Update Package’.
d)    Parent package should be a ‘Full Package’.
c)    Check the option ‘Include Object specification’.
d)    The ‘Path code’ and ‘Parent Package’, which you are specifying, should      exist on target JDE.
e)    Activate the Update Package before taking the Define Build option.

5. Take Option Package Build (P9621) and follow the Director. Select the package that you have assembled in the above steps to be built as above and make sure that the package is built for  Client Workstation only. Check in Build Specifications options.  If you have a Business Function in your Package, check in Build Function Option. 

6. Activate the  Package and submit the  Package for Build Process .

7.    Verify the report generated after Build Process is completed .If any errors are reported take option Package Build History (P9622) and verify the Logs, Status  of the Package. Then take option Submit Rebuild from this screen if any errors are reported for that Package. Make sure that the Package and All Objects of the Package are built successfully. 

8    The Package build process creates PackageName.INF file in the directory \\Servername\E812\PACKAGE_INF (Ex: \\DEPUSA\E812\PACKAGE_INF) and also a PackageName Directory in \\Servername\E812\Pathcode\PACKAGE directory  (Ex:  \\DEPUSA\E812\ProdE812\PACKAGE)

 9.  Copy the above PackageName.INF file and PackageName directory on a CD or any other portable media. This is now ready to transfer to the Target JDE  Installation.    

II) On Target JDE Installation


1    Go to Menu GH9083 (Package Development Tools), take option “Package Assembly” (P9601) and follow the Director similar as you did in STEP-I .Do not select any Objects for the Package to build i.e., Assemble an empty Update Package with the same name as given in STEP-I . The Path code, Parent Package should be the same as given in while assembling an Update package on source JDE installation.

2.    Activate the assembled Package before taking the Define Build option.

3    Take Option Package Build (P9621) and follow the Director. Select the package that you have assembled in the above steps to be built as above and make sure that the package is built for  Client Workstation only.

4.   Activate the package before taking the Define Build option

5.    Check the report for any errors. Ensure that the package is built successfully.

6.    Similar to STEP-I the Package build process creates PackageName.INF file in the directory \\Servername\E812\PACKAGE_INF  and also a PackageName  Directory in \\Servername\E812\Pathcode\PACKAGE directory .

7.    Replace the PackageName.INF and PackageName directory created in this step with those created in earlier step.

8.    Now open the file PackageName.INF in edit mode and change the source Severname wherever you find in the file to the target Servername.

9.    Now select a development workstation in the network and create OL entries for all the new objects, which you are going to deploy. If the objects are existing objects checkout  the objects to the workstation.

10.    Deploy the Package to the development workstation.

11.    Open all the objects in the design mode, check whether the specifications are transferred are not. Compile all the objects and check in the objects in to the server.


Done! Your objects have reached the target server :)

Thursday, August 7, 2014

Sheduler Mantras

One of the most requested items on my Help me! form is SCHEDULER. I have more than a couple of hundred responses asking me to post more on scheduler. Since i did not get any concrete questions, here are a few common questions my buddies have had for me in the past:

Q1) Why is the number of scheduler records different in F91300 and F91320?

Ans: In one word the answers is, recurrence. When we set recurrence on a job its updated in F91300 but the date-time run records that get created for that particular job are placed in F91320. So for every job with recurrence  we see multiple records in F91320.

Q2) How do I know when a particular job expires?

Ans: Look at SJSCHENTIME in F91300. If it looks incorrect, that's because it is in UTC format and needs to be converted. If you need a detailed post on converting this and putting it into an excel. Shannon has this on his blog here

Q3) Password update for User jobs on scheduler. Do we change each and every job that's been scheduled under a particular ID?

Ans: If you are not running version 8.12, the answer is an unfortunate Yes. You will indeed need to go to each job that runs under the user's id and change the password. For 8.12 and above, there's a way to update the password automatically provided the correct ESU's are in place. For 8.12 you will need to have JK22431 installed and for 9.0 you will need to have JL11051 installed.

I have always used functional accounts for specific jobs. This still brings in password changes every 90 days but at least the user id's remain consistent.

If you get a hand of F91300 and F91320, JDE scheduler is one of the easiest schedulers to manage. To understand how it works you need to know the JDE.INI settings which govern the scheduler and just these couple of tables. Happy Scheduling!