Thursday 27 November 2014

JD Edwards release & support matrix

Once again, this is a community service announcement, because I can never find the latest edition of this support matrix.

What really scares me is the release dates of each release, because I’ve been working with JDE through ALL of them…  <panic>Oh no, I’m old.</panic>

image

This is very handy for determining what release is supported until when.  What is really important is that JD Edwards has a published roadmap until at least 2021 + 5 years of support – 2026!  That makes it an awesome investment in the future with guaranteed support from Oracle during this time.

image

Please, always go to the horses mouth (so to speak) to ratify anything regarding support and releases. 

JD Edwards current published roadmap

https://support.oracle.com/epmos/faces/DocumentDisplay?id=1317204.1&_afrLoop=417429168425373&_afrWindowMode=0&_afrWindowId=null

For all oracle applications and their support and release matrix:

http://www.oracle.com/us/support/library/lifetime-support-applications-069216.pdf

Tuesday 25 November 2014

JD Edwards Road Map

I get asked this all of the time, so thought that I’d add a couple of slides.  Note that do not enter into any contracts based upon this information, please see your friendly oracle people for the gospel!

image

Apps:

9.1 2012

9.X 2015

9.Y 2018

Every 3 years an app release

 

Tools

Major tools releases (9.1, 9.2 etc) just before the application release – on a three year cycle.

A significant dot release for the tools every 6 months or so.

Friday 21 November 2014

Enable logging for particular UBEs

This is potentially one of the best posts that I’ve done in a while… Well, perhaps it might be one of the most helpful ones in a while.  But, I’d best get off my soap box and get into the nitty gritty of the post.

It’s a common situation that a UBE goes into Error sometimes and works the rest of the time…  So, you need debug…  Your choices are limited for enabling logging, as it’s pretty global on your enterprise server and will be enabled for all UBE’s and all processes that start after you’ve enabled the setting in the JDE.INI file.

I had this conundrum at a client recently and decided to try and enable logging in an OSA.  If I could enable logging with an OSA, I could map this to any UBE that I needed to enable logging for.  Therefore, no package builds, no deploys, no global logging enabled – just logging for the UBE’s that I want to log WHEN I want to log them. 

So now you can configure what logging is enabled for a UBE based on :

  • version
  • environment
  • machine

Too good to be true, no – it actually worked!  The best thing is, I’m going to give you all of the source code as well.  All 1 line of it!

EXTERNC APIEXPORT void CDECL myriadEnableLogging(POSA_REPORT_INFO pOSAReportInfo,
POSA_LINK_INFO pOSALinkInfo,
unsigned long ulNumberOfLinks)
{
//jdeDebugInit();
changeLogSettingsNoINI(_J("Output"), 1);
}


 


So you can map this to the UBE that you want logging via the OSA application.


You need to compile the code above into a DLL (in my case called myOSA) and plonk this in the enterprise server bin32 dir. 


Then create the OSA definition P986168 for enableLogging


image


The first button above and then add


image


Then map your UBE’s that you want logging on for (the second button)


image


The second button


image


So in this example I’m enabling logging for all users that run R42565 in JDV910.


If you want a windows DLL prebuilt with this code, let me know and I’ll probably be nice and send it to you.

Monday 10 November 2014

Tell me when there are errors in my log files

This should help a lot of people.  This is a simple vbs script that you can schedule every 15 minutes (or when you want), which will tell you if your specified errors have been logged in a JD Edwards log file.  Note that this script is completely generic and you do not need to use it for JD Edwards.

Schedule it every 15 minutes and you are away.  If you schedule longer or shorter, change the scriptSleepTime variable in the header.

dim filesys
set filesys=CreateObject("Scripting.FileSystemObject")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Dim objShell 'instance of the wshSHell object
set objShell = CreateObject("WScript.Shell")
FromEmailAddress="jde@myriad-it.com"
Const strSmartHost = "smtp"
Company="Myriad IT"
RecipientNames = ARRAY("smoir@myriad-it.com",someone@thing.com)
ScriptSleepTimeMinutes=15


strSearchForArray = ARRAY("ORA-03114","ORA-03113","GetRecipientPreferences")
Set oFSO = CreateObject("Scripting.FileSystemObject")
JDELogFolder = "D:\JDEdwards\E910\log"

Set objFolder = objFSO.GetFolder(JDELogFolder)

Set jdeLogFiles = objFolder.Files
For Each objFile in jdeLogFiles
'Wscript.Echo objFile.Name
strFile = JDELogFolder & "\" & objFile.Name
set objFile = objFSO.getFile(strFile)
if objFile.size > 0 then
for each SearchString in strSearchForArray
If InStr(oFSO.OpenTextFile(strFile).ReadAll, SearchString ) > 0 Then
'Email Details
if objFile.size < 2000000 then
If DateDiff("n", objFile.DateLastModified, Now) < ScriptSleepTimeMinutes Then
'File has been modified in past 10 minutes.
i=sendMail("URGENT: " & SearchString & " Found in log file - see attached", "See attachment", strFile)
End If
else
i=sendMail("URGENT: " & SearchString & " Found in log file - too big to attach", "NO attachment", "")
end if
END If
next
END If
Next
wscript.echo "Script complete"


'#####################################################################
'FUNCTION:sendMail
'#####################################################################
function sendMail(subjectText, emailBody, attachment)
on error resume next
Dim iMsg
Dim iConf
Dim Flds
Const cdoSendUsingPort = 2

for each name in RecipientNames
'Create the message object
Set iMsg = CreateObject("CDO.Message")
'Create the configuration object
Set iConf = iMsg.Configuration
'Set the fields of the configuration object to send using SMTP via port 25.
With iConf.Fields
.item("http://schemas.microsoft.com/cdo/configuration/sendusing") = cdoSendUsingPort
.item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = strSmartHost
.Update
End With

'Set the message to,from,subject,body properties.
if strlen(attachment) > 1 then
With iMsg
.AddAttachment attachment
.To = name
.From = FromEmailAddress
.Subject = subjectText & " " & now()
.TextBody = chr(1) & " " & emailBody
.Send
End With
else
With iMsg
.To = name
.From = FromEmailAddress
.Subject = subjectText & " " & now()
.TextBody = emailBody
.Send
End With
end if
set iMsg = Nothing
next

end function