Tuesday, July 15, 2014

Quick Macro for Scanning PeopleCode Compare Reports

Today I am preparing for our Upgrade and I was doing some analysis on the Record PeopleCode Compare reports that I had saved as Tab Delimited text files and imported into excel.  What I was doing was analyzing the deltas and documenting the event I found them.  This analysis would occasionally require me to scroll 100's of excel rows without finding a change in event or code!  This was starting to frustrate me.

Compare Report for Record PeopleCode

What I needed was a Macro that could scan the report for me and stop on either the column 1 having a value or column 8 having a value; both are highlighted in red above.  This was my simple Macro that I executed when I wanted to quickly scan to the next change or to the next event.

Sub scan()
Dim i As Long
Dim s As Long
Dim o As Long
 s = ActiveCell.Row
 For i = ActiveCell.Row To Rows.Count
  
 If Cells(i, 8).Value > " " Or Cells(i, 1) > " " Then
  o = i - s + 1
  ActiveCell.Offset(o, 0).Select
  
  Exit For
 End If

Next i
End Sub

Thursday, July 10, 2014

Technology Radar

Being in IT for the past 15 years I have learned that technology changes quickly and what is hot today, often is not relevant tomorrow.  This makes learning new technology challenging as you don't want to invest your time into something you will have no use for in the future!  Since then I have learned about the Technology Radar, this website can help IT Staff, Managers and even CTO's keep current on the latest trends and stay on top of the ever changing landscape that is IT.

Tuesday, July 8, 2014

8.53 tools Site Name Bug

We recently upgraded our tools from 8.51 to 8.53 in preparation for our 9.2 Upgrade and by far this tools upgrade has caused us more issues then any tools upgrade I can remember.  The most dubious issue we have discovered is related to our Interaction Hub's site name.  We use the string 'PSP' in our site name and this was preventing the delivered Activity guides from working and we opened a case with vendor regarding this issue and they recommended that we remove the "PSP" from our site name as they knew about the bug, but they had not begun analyzing the fix.

We considered modifying or site name, but the effort would have caused a delay in our upgrade project and we were not willing to move our date to remove the "PSP" from our site name.  So I was asked to analyze the delivered JavaScript and determine the root cause of the "PSP" bug.

I traced the issue to the following Regular Expression that attempts to derive the URI from the current location.  Below is the Regular Expression:
      
       /\/ps(c|p)\/?([^\/]*)?\/?([^\/]*)?\/?([^\/]*)?\

I have bolded the “?” since this appears to be the issue with the expression above.  A question mark tells the regular expression to match on one or zero times on the last “/”.  This means that the expression will match anything that begins with ‘/psc’ or ‘/psp’.  So if you remove the ‘?’ from the expression it will match only ‘/psc/’ or ‘/psp/’.    I believe this is the fix to the Sitename issue.


Below are all the locations I have modified in Portal, HCM and FIN to fix this Bug.

 

Portal

Searching for match(/\/ps(c|p)\/?([^\/]*)?\/?([^\/]*)?\/?([^...
EPPSC_ADDSC_JS.4 -- match(/\/ps(c|p)\/?([^\/]*)?\/?([^\/]*)?\/?([^\/]*)?\//)[0].replace("/psp/", "/psc/");
PORTAL_REFRESHPAGE.4 -- match(/\/ps(c|p)\/?([^\/]*)?\/?([^\/]*)?\/?([^\/]*)?\//);
PORTAL_REFRESHPAGE.4 -- match(/\/ps(c|p)\/?([^\/]*)?\/?([^\/]*)?\/?([^\/]*)?\//)[0].replace('psp','psc');
PORTAL_REFRESHPAGE.4 -- match(/\/ps(c|p)\/?([^\/]*)?\/?([^\/]*)?\/?([^\/]*)?\//);
PORTAL_REFRESHPAGE.4 -- match(/\/ps(c|p)\/?([^\/]*)?\/?([^\/]*)?\/?([^\/]*)?\//)[0];
PTAI_NAVSUBPAGEHTML.4 -- match(/\/ps(c|p)\/?([^\/]*)?\/?([^\/]*)?\/?([^\/]*)?\//)[0].replace("psp", "psp");
PTAI_PAGELET_JS.4 -- match(/\/ps(c|p)\/?([^\/]*)?\/?([^\/]*)?\/?([^\/]*)?\//)[0].replace("psc", "psp");
PTAI_PAGELET_JS.4 -- match(/\/ps(c|p)\/?([^\/]*)?\/?([^\/]*)?\/?([^\/]*)?\//)[0].replace("psc", "psp");
PTAI_PAGELET_JS.4 -- match(/\/ps(c|p)\/?([^\/]*)?\/?([^\/]*)?\/?([^\/]*)?\//)[0].replace("psc", "psp");
PTAI_PAGELET_JS.4 -- match(/\/ps(c|p)\/?([^\/]*)?\/?([^\/]*)?\/?([^\/]*)?\//)[0].replace("psc", "psp");
PTAI_PAGELET_JS.4 -- match(/\/ps(c|p)\/?([^\/]*)?\/?([^\/]*)?\/?([^\/]*)?\//)[0].replace("psc", "psp");
PTAL_JS_PAGE.4 -- match(/\/ps(c|p)\/?([^\/]*)?\/?([^\/]*)?\/?([^\/]*)?\//)[0].replace("psp", "psc");
PTPANEL_PAGELET_JS.4 -- match(/\/ps(c|p)\/?([^\/]*)?\/?([^\/]*)?\/?([^\/]*)?\//)[0].replace("psp", "psc");
PT_COMMON.4 -- match(/\/ps(c|p)\/?([^\/]*)?\/?([^\/]*)?\/?([^\/]*)?\//)[0];
PT_COMMON.4 -- match(/\/ps(c|p)\/?([^\/]*)?\/?([^\/]*)?\/?([^\/]*)?\//);
PT_COMMON.4 -- match(/\/ps(c|p)\/?([^\/]*)?\/?([^\/]*)?\/?([^\/]*)?\//)[0].replace('psp','psc');
PT_HP2_JS.4 -- match(/\/ps(c|p)\/?([^\/]*)?\/?([^\/]*)?\/?([^\/]*)?\//);
PT_HP2_JS.4 -- match(/\/ps(c|p)\/?([^\/]*)?\/?([^\/]*)?\/?([^\/]*)?\//)[0];
PT_IFRAME_HDR_JS.4 -- match(/\/ps(c|p)\/?([^\/]*)?\/?([^\/]*)?\/?([^\/]*)?\//);
PT_IFRAME_HDR_JS.4 -- match(/\/ps(c|p)\/?([^\/]*)?\/?([^\/]*)?\/?([^\/]*)?\//)[0].replace('psp','psc');
PT_PORTAL_AS_JS.4 -- match(/\/ps(c|p)\/?([^\/]*)?\/?([^\/]*)?\/?([^\/]*)?\//)[0].replace('psp', 'psc'),
21 occurrence(s) have been found.

HCM


Searching for /\/ps(c|p)\/?([^\/]*)?\/?([^\/]*)?\/?([^\/]*)?\...
PORTAL_REFRESHPAGE.4 -- /\/ps(c|p)\/?([^\/]*)?\/?([^\/]*)?\/?([^\/]*)?\//);
PORTAL_REFRESHPAGE.4 -- /\/ps(c|p)\/?([^\/]*)?\/?([^\/]*)?\/?([^\/]*)?\//)[0].replace('psp','psc');
PORTAL_REFRESHPAGE.4 -- /\/ps(c|p)\/?([^\/]*)?\/?([^\/]*)?\/?([^\/]*)?\//);
PORTAL_REFRESHPAGE.4 -- /\/ps(c|p)\/?([^\/]*)?\/?([^\/]*)?\/?([^\/]*)?\//)[0];
PTAI_NAVSUBPAGEHTML.4 -- /\/ps(c|p)\/?([^\/]*)?\/?([^\/]*)?\/?([^\/]*)?\//)[0].replace("psp", "psp");
PTAI_PAGELET_JS.4 -- /\/ps(c|p)\/?([^\/]*)?\/?([^\/]*)?\/?([^\/]*)?\//)[0].replace("psc", "psp");
PTAI_PAGELET_JS.4 -- /\/ps(c|p)\/?([^\/]*)?\/?([^\/]*)?\/?([^\/]*)?\//)[0].replace("psc", "psp");
PTAI_PAGELET_JS.4 -- /\/ps(c|p)\/?([^\/]*)?\/?([^\/]*)?\/?([^\/]*)?\//)[0].replace("psc", "psp");
PTAI_PAGELET_JS.4 -- /\/ps(c|p)\/?([^\/]*)?\/?([^\/]*)?\/?([^\/]*)?\//)[0].replace("psc", "psp");
PTAI_PAGELET_JS.4 -- /\/ps(c|p)\/?([^\/]*)?\/?([^\/]*)?\/?([^\/]*)?\//)[0].replace("psc", "psp");
PTAL_JS_PAGE.4 -- /\/ps(c|p)\/?([^\/]*)?\/?([^\/]*)?\/?([^\/]*)?\//)[0].replace("psp", "psc");
PTPANEL_PAGELET_JS.4 -- /\/ps(c|p)\/?([^\/]*)?\/?([^\/]*)?\/?([^\/]*)?\//)[0].replace("psp", "psc");
PT_COMMON.4 -- /\/ps(c|p)\/?([^\/]*)?\/?([^\/]*)?\/?([^\/]*)?\//)[0];
PT_COMMON.4 -- /\/ps(c|p)\/?([^\/]*)?\/?([^\/]*)?\/?([^\/]*)?\//);
PT_COMMON.4 -- /\/ps(c|p)\/?([^\/]*)?\/?([^\/]*)?\/?([^\/]*)?\//)[0].replace('psp','psc');
PT_HP2_JS.4 -- /\/ps(c|p)\/?([^\/]*)?\/?([^\/]*)?\/?([^\/]*)?\//);
PT_HP2_JS.4 -- /\/ps(c|p)\/?([^\/]*)?\/?([^\/]*)?\/?([^\/]*)?\//)[0];
PT_IFRAME_HDR_JS.4 -- /\/ps(c|p)\/?([^\/]*)?\/?([^\/]*)?\/?([^\/]*)?\//);
PT_IFRAME_HDR_JS.4 -- /\/ps(c|p)\/?([^\/]*)?\/?([^\/]*)?\/?([^\/]*)?\//)[0].replace('psp','psc');
PT_PORTAL_AS_JS.4 -- /\/ps(c|p)\/?([^\/]*)?\/?([^\/]*)?\/?([^\/]*)?\//)[0].replace('psp', 'psc'),


FIN

Searching for /\/ps(c|p)\/?([^\/]*)?\/?([^\/]*)?\/?([^\/]*)?\...
PORTAL_REFRESHPAGE.4 -- /\/ps(c|p)\/?([^\/]*)?\/?([^\/]*)?\/?([^\/]*)?\//);
PORTAL_REFRESHPAGE.4 -- /\/ps(c|p)\/?([^\/]*)?\/?([^\/]*)?\/?([^\/]*)?\//)[0].replace('psp','psc');
PORTAL_REFRESHPAGE.4 -- /\/ps(c|p)\/?([^\/]*)?\/?([^\/]*)?\/?([^\/]*)?\//);
PORTAL_REFRESHPAGE.4 -- /\/ps(c|p)\/?([^\/]*)?\/?([^\/]*)?\/?([^\/]*)?\//)[0];
PTAI_NAVSUBPAGEHTML.4 -- /\/ps(c|p)\/?([^\/]*)?\/?([^\/]*)?\/?([^\/]*)?\//)[0].replace("psp", "psp");
PTAI_PAGELET_JS.4 -- /\/ps(c|p)\/?([^\/]*)?\/?([^\/]*)?\/?([^\/]*)?\//)[0].replace("psc", "psp");
PTAI_PAGELET_JS.4 -- /\/ps(c|p)\/?([^\/]*)?\/?([^\/]*)?\/?([^\/]*)?\//)[0].replace("psc", "psp");
PTAI_PAGELET_JS.4 -- /\/ps(c|p)\/?([^\/]*)?\/?([^\/]*)?\/?([^\/]*)?\//)[0].replace("psc", "psp");
PTAI_PAGELET_JS.4 -- /\/ps(c|p)\/?([^\/]*)?\/?([^\/]*)?\/?([^\/]*)?\//)[0].replace("psc", "psp");
PTAI_PAGELET_JS.4 -- /\/ps(c|p)\/?([^\/]*)?\/?([^\/]*)?\/?([^\/]*)?\//)[0].replace("psc", "psp");
PTAL_JS_PAGE.4 -- /\/ps(c|p)\/?([^\/]*)?\/?([^\/]*)?\/?([^\/]*)?\//)[0].replace("psp", "psc");
PTPANEL_PAGELET_JS.4 -- /\/ps(c|p)\/?([^\/]*)?\/?([^\/]*)?\/?([^\/]*)?\//)[0].replace("psp", "psc");
PT_COMMON.4 -- /\/ps(c|p)\/?([^\/]*)?\/?([^\/]*)?\/?([^\/]*)?\//)[0];
PT_COMMON.4 -- /\/ps(c|p)\/?([^\/]*)?\/?([^\/]*)?\/?([^\/]*)?\//);
PT_COMMON.4 -- /\/ps(c|p)\/?([^\/]*)?\/?([^\/]*)?\/?([^\/]*)?\//)[0].replace('psp','psc');
PT_HP2_JS.4 -- /\/ps(c|p)\/?([^\/]*)?\/?([^\/]*)?\/?([^\/]*)?\//);
PT_HP2_JS.4 -- /\/ps(c|p)\/?([^\/]*)?\/?([^\/]*)?\/?([^\/]*)?\//)[0];
PT_IFRAME_HDR_JS.4 -- /\/ps(c|p)\/?([^\/]*)?\/?([^\/]*)?\/?([^\/]*)?\//);
PT_IFRAME_HDR_JS.4 -- /\/ps(c|p)\/?([^\/]*)?\/?([^\/]*)?\/?([^\/]*)?\//)[0].replace('psp','psc');
PT_PORTAL_AS_JS.4 -- /\/ps(c|p)\/?([^\/]*)?\/?([^\/]*)?\/?([^\/]*)?\//)[0].replace('psp', 'psc'),
20 occurrence(s) have been found.