HEUG: PeopleSoft Test Framework Review

Today, I also attended the PeopleSoft Test Framework: Simplifying Upgrade and Maintenance session by Scott Schafer.  Again, I was very impressed with the tool.  I think this is going to revolution implementation projects in PeopleSoft and routine maintenance for systems.

Scott listed many of the advantages of PTF as the test framework is frequently called.  The PTF has a record and playback feature that allows a power user to easily generate a test by recording his actions in the system.  One of the key features is that PTF understands PeopleTools metadata.  It does not just record clicks on the screen at a specific coordinate but clicks on a particular record, field on a particular row.  Also, because they are managed as PeopleTools objects, the tests are comparable between environments and migrate-able to another environment.

First, Scott discussed the Usage Monitor.  He said it was an extension of the Performance Monitor.  I need experiment some more with this because I didn’t quit understand whether or not a full implementation of Performance Monitor is required.  Basically, this tool tells you which of the delivered objects you actually use.  You turn the monitor on in production, and it records which objects get touched by your every day use.

One of the questions I would have is how accurate is this list of objects?  I mean what about periodic events such as year-end processing?  Unless you keep your monitor on for a full year or you happen to build your list during the year-end time frame, you are not going to get objects specific to that process.

Next, Scott mentioned a new feature of App Designer.  Now, it stores the compare report data in the database.  So, you can build your own tools to automate processing the compare results.

Then, Scott demoed the product.  He showed how you can click a record button.  The browser would open and you could perform a basic activity in PeopleSoft.  The client tool would list the steps that you went through to make the activity happen.  Then, he clicked the play button, and he showed how it would step through those actions rather quickly to reproduce the activity.  Finally, he showed how an error would stop the test and show the problem.

The cool part is the object tracking.  Each test represents a business process.  PeopleTools tracks the objects related to the test.  Therefore, you can tie an object to a business process.  Also, your usage data shows you which objects you use, and you can make sure that you have a test for each one of those objects.  Finally, you can compare the objects included in a bundle or maintenance pack with your usage data to see which part of it affects you.  Again, you can then tie that back to the tests and see which business processes gets affected by the new code/objects.

All in all, I think this is the first iteration of a cool tool that will revolutionize PeopleTools.

HEUG: PeopleTools Tips and Tricks Review

Today, I attended Jim Marion’s PeopleTools Tips and Tricks session at the HEUG Alliance 2011 conference.  I really enjoyed the session, and now I need a client who wants one of the features that Jim discussed in the session.  I’m eager to try this stuff out!

First, I learned that I have the personality of a cheesehead!  But, that’s okay.  I can admit to the geek label.  Also, I was only 4 chairs away from getting the free book!  Oh well, I am going to have to quit being cheap and just buy it.  After hearing the session, I really want it now.

The first topic presented was the use of Pagelets.  One of the cool parts about them is that they aren’t a customization.  Rather, they are considered configuration.  So, they are a great way to add to your system without having to customize and worry about upgrade costs.

One of the examples was to take a YouTube video and get the embed HTML to include in a Pagelet.  Another example was to place a navigation collection on the home page.  Then, I thought it was really cool to see how the XSL Template was used to make the collection a accordion style menu.

In passing, Jim pointed out the differences in the tools navigation between 8.50 and 8.51.  I think I read this on the Grey-Sparling blog but didn’t understand it.  In 8.50, you just hover over the folder in the menu to open it, but in tools 8.51, you have to click each folder to open it.  Something to watch out for…

The related content is a great tool.  Two of the cool examples were to take the title of a page and display Google search results next to the PeopleSoft page.  Similarly, the other example displayed search results from Amazon based on the page title.  I have a scenario where I would like to display a customized data page beside the delivered data without customizing the delivered component.  Related content solves that problem.  I wish Jim would have had the time to delve into how he set up the Related Content.

Integration Broker Ajax was another topic that was great to see.  Again, I wish he would have had time to show how he was able to make it work.  I know that Integration Broker is a complicated topic, and it would have taken way too long.

The Mobile app idea was quite interesting.  I know how to create a native Android application, but I didn’t realize that you could create an HTML 5 app that would run across the different mobile platforms — something to look into.  Then, using Integration Broker to power it was a great idea.

Finally, Jim suggested using Fiddler and Wireshark as troubleshooting tools because you can see what data passes between systems/clients.  It was nice to see that work and you can use it to troubleshoot setup.

HEUG Alliance 2011 — Here I Come!

I am very excited about the HEUG Alliance conference next week.  This is my first time attending, and I will get to present with Sean McKay from George Fox University.  So, if you are planning to attend, please catch us at 4:30 on Tuesday afternoon.  We will be talking about our Moodle interface that we worked on last year (a great project).

Also, I won’t be presenting at it, but I will be at the ACE presentation at 9:30 that morning.  Joe Rossi and Adrian Valente will be presenting the tool that we built in PeopleTools to automate enrolling and accepting payment for continuing education from self service.  So far, that tool has generated a lot of excitment, and I think that presentation will be good.

Finally, I can’t leave off Jim Marion’s presentation at 9:30 on Monday.  I am going to make it a special point to listen in on his presentation to see what tips and tricks I can pick up from him.  Ever since his announcement about his book, I have wanted to meet him, and now I will get to hear him speak!

If it wasn’t for the time conflict, I would have mentioned Grey Sparling’s presentation at 9:30 on Tuesday morning.  Their blog posts are always helpful, and I would love to hear a presentation.  I saw something about the sessions being recorded, and I will have to do some research to see if I can watch or listen to the recording.

Anyway, if you are attending and you read my blog, please stop by the MIS, Inc. booth and say hi.  I would love to meet you.

Tracing Tips and Resources

I had an issue recently where I needed to trace a process to try to determine where a bug was occurring.  So, I decided to try to document how I could setup tracing on a single process.

To enable tracing, you need to open the process definition.  Online, navigate to PeopleTools > Process Scheduler > Processes.  Then, search for the process that you want to trace.  Make sure that you change the search page so that you are searching by process name and not the process type.  Once you have the Process Definition open, go to the Override Options tab.  Then, change the parameter list to “Append” and enter the desired trace settings.

Applying the Trace Settings
Applying the Trace Settings

This is the recommended setting by Ketan on PeopleSoft Support & Tips:

-TRACE 135 -TOOLSTRACESQL 31 -TOOLSTRACEPC 1984

I think I would prefer these settings instead:

-TRACE 7 -TOOLSTRACESQL 3 -TOOLSTRACEPC 3596

My options aren’t to say that Ketan’s are wrong.  I just cut out some of the options I wouldn’t use to trim the extra info in the log file.  I also normally use traces for troubleshooting, so my options are tuned for that.

You can read below for details on what each of these does.

The -TRACE option sets the tracing for the App Engine program generally speaking.  For example, it can turn on the trace output that displays which steps run in which order.  Here are the different options (from the psappsrv.cfg file):

  • 1 = Trace STEP execution sequence to AET file
  • 2 = Trace Application SQL statements to AET file
  • 4 = Trace Dedicated Temp Table Allocation to AET file
  • 8 = not yet allocated
  • 16 = not yet allocated
  • 32 = not yet allocated
  • 64 = not yet allocated
  • 128 = Timings Report to AET file
  • 256 = Method/BuiltIn detail instead of summary in AET Timings Report
  • 512 = not yet allocated
  • 1024 = Timings Report to tables
  • 2048 = DB optimizer trace to file
  • 4096 = DB optimizer trace to tables

If you’ll notice, 135 is “Timings Report to AET file”, “Trace Dedicated Temp Table Allocation to AET file”, “Trace Application SQL statements to AET file”, and “Trace STEP execution sequence to AET file”.  My preference just leaves off the Timings Report.  I think the timings report would be good for performance tuning, but if you are troubleshooting, it is just overhead.

The -TOOLSTRACESQL option specifics the SQL tracing besides the SQL executed by steps in an App Engine program.  This would include any PeopleTools system database communication, and more importantly, it would include any database access caused by a component interface driving an online screen.

Here are the options:

  • 1 = SQL statements
  • 2 = SQL statement variables
  • 4 = SQL connect, disconnect, commit and rollback
  • 8 = Row Fetch (indicates that it occurred, not data)
  • 16 = All other API calls except ssb
  • 32 = Set Select Buffers (identifies the attributes of columns to be selected
  • 64 = Database API specific calls
  • 128 = COBOL statement timings
  • 256 = Sybase Bind information
  • 512 = Sybase Fetch information
  • 1024 = SQL Informational Trace

Again, the recommended setting is 31, which includes: “All other API calls except ssb”, “Row Fetch (indicates that it occurred, not data)”, “SQL connect, disconnect, commit and rollback”, “SQL connect, disconnect, commit and rollback”, “SQL statement variables”, and “SQL statements”.  My choice would just be to see the SQL statements and the variables because that is the most important information.  Commits and Rollbacks can be important, but you generally know when those happen and don’t need the extra information.  The fetches will tell you how many rows you will receive but it won’t give you any of the data, so it just clutters the trace file.  Those options can be helpful, but unless you need them, I would leave them off.

Finally, the -TOOLSTRACEPC option turns on tracing for PeopleCode.  This could be PeopleCode steps in an App Engine, or it could be PeopleCode in a component accessed by a Component Interface.  Here are the options:

  • 1 = Trace Evaluator instructions (not recommended)
  • 2 = List Evaluator program (not recommended)
  • 4 = Show assignments to variables
  • 8 = Show fetched values
  • 16 = Show stack
  • 64 = Trace start of programs
  • 128 = Trace external function calls
  • 256 = Trace internal function calls
  • 512 = Show parameter values
  • 1024 = Show function return value
  • 2048 = Trace each statement in program (recommended)

The recommended option is 1984, which includes: “Show function return value”, “Show parameter values”, “Trace internal function calls”, “Trace external function calls”, and “Trace start of programs”.  For me, I want to see what PeopleCode is running, so the most important option would be 2048 — Tracing each statement.  The variable assignments, fetched values, parameter values, and function returns all show the data as it flows through the PeopleCode, so I find those helpful in troubleshooting.  For me, that adds up to: 3596.

Resources

Step By Step: PeopleTools 8.51 Upgrade (Part 7)

This is a continuation of my PeopleTools 8.51 posts.  Now that we have our servers started, we can finish the Change Assistant Job.

Please see my Step by Step page for more articles like this, or you can start at the beginning of this series withPart 1.

Read More

More Memory Leak Troubleshooting

Recently, I have been doing a lot of Memory troubleshooting.

Here are some windbg commands that helped:

Load the sos module (for .Net 4.0)

.loadby sos clr

List all of my object specific to my program:

!dumpheap -stat -type <parent namespace>

List all the instances of a particular object:

!dumpheap -type <namespace>.<object class name>

List references to the object:

!gcroot <address>

Break on garbage collection:

!findroots gen any

List references to the obect (must break in garbage collection):

!findroots <address>

Show sizes in the memory:

!eeheap

List large strings in memory:

!dumpheap -type System.String -min 10000

Then, I also found that you can use the SOS module with within Visual Studio.  First, in the project settings, I had to go to the Debug tab and check “Enable unmanaged code debugging” under “Enable Debuggers”.  Then, in the immediate window, I could run the following command:

.load sos

I thought my problem seemed to be related to the Data Grid view just like this forum post.  The post lists a code fix, but my problem is finding out where I place the code.  This blog mentions putting the code in the Form Close, but my problem is during the execution of the program.

Actually, it ended up being that I was loading a hidden column into the grid that was taking a lot of memory.  I had a Select * SQL statement, and I had to list only the fields that I wanted in memory.

Resources

UserPreferenceChangedEventHandler Resources

Memory Leak Troubleshooting

This is a tad off topic, but I don’t want to loose all of these reference links for tracking down memory leaks with a VB.Net program.

Here is the article that helped out a lot.
Rico Mariani’s Performance Tidbits: Tracking down managed memory leaks (how to find a GC leak)

As far as I can tell, you download the Vadump program from here:
Windows 2000 Resource Kit Tool: Vadump.exe

Since I have Visual Studio 2010 installed, I found it here:
<Visual Studio Home>\Common7\Tools\Bin\winnt

WinDbg, I didn’t find on my system. So, I had to download it in the Windows SDK from here:
Download and Install Debugging Tools for Windows

The CLR Profiler is another tool that I tried:
CLR Profiler

I haven’t finished, so maybe, I will have to write a follow up article.

Anyone Using Virtual Machines?

Someone was asking me about using virtual machines for production PeopleSoft servers, and he pointed out this article:

Support Position for Oracle Products Running on VMWare Virtualized Environments [ID 249212.1]

From what I can tell, Oracle does not support VMWare for production servers. From the article, it looks like you can do it, but you are taking a slight risk that you would have to prove VMWare wasn’t causing the problem when you open a ticket with Oracle. I didn’t confirm this, but I think Oracle supports their own virtualization products.

Is there anyone out there using virtualization for their server environments?

Fusion and PeopleSoft

I ran across Tim’s post on the Myth of Oracle Fusion.

I don’t have any insider information, but my view from PeopleSoft was somewhat different. When Oracle purchased PeopleSoft, that’s when I began first hearing about Fusion.

What scared me at the time was that Oracle might take the PeopleTools platform that I had begun to love, and that they would drop it for something inferior but more familiar to their products. PeopleTools is somewhat unique from what I can tell, and the records, pages, and components form a very innovative platform for which one can build applications. Did Oracle really understand the benefits of this platform? Could they preserve these benefits and still combine it with their products to create Fusion?

Personally, I am glad that we haven’t seen Fusion yet. I would rather Oracle take their time and get it right than for them to mess up an awesome platform. Oracle has added some features in the recent releases of PeopleTools, and the platform continues to expand. For that, I am grateful.

That’s my take on it. Maybe I misunderstood the intentions of Oracle at the beginning, but that was my view from the PeopleSoft world.