rss
twitter
    Check out my Twitter Feed

PeopleSoft App Designer: You Don't Have to Search the Entire Database to Find that String in PeopleCode

For Spring/Summer Financial Aid awarding here at BYU, we have had a strange problem with some students not being able to accept or decline their awards, due to the fact that a hyperlink on the Accept/Decline page was not being enabled as we'd expected it to be. Discouraged at this news, I prepared myself for a marathon search through the entire database to find out where the link behind DERIVED_FA_SS_1.AID_YEAR_LINK was being disabled. At the same time I resigned myself to a fate of not being able to accomplish any of the tasks that I had hoped to check off my list today.

But then I stumbled upon something really cool, by reason of which I need to apologize for the many times I've cursed App Designer under my breath. It turns out that I was cursing only due to my ignorance.

I have known about Edit -> Find Definition References on App Designer's menu for a long time, but what I didn't know is what I can do with list of definition references that App Designer finds for me. Here's how to accomplish a day-long task in less than an hour (your mileage may vary):

1. Create a new, blank project.

2. Open the object (in my case I discovered by looking at the page that the field DERIVED_FA_SS_1.AID_YEAR_LINK was supplying the hyperlink) and Select Edit -> Find Definition References from the App Designer menu.

3. Click on the first definition reference in the resulting list. Scroll to the bottom of the list and, while holding the Shift key down, click on the last definition reference in the list. (See Figure 1. Click to enlarge.)

4. Right-click on the highlighted list and select "Insert into Project..." from the pop-up menu. Save your project.

5. Now that you have in one project every object in which your target object is referenced, you can much more quickly find what you want to know about that object. In my case I wanted to know where its "enabled" property was being set.

6. I named my temporary project "MY_TEMP_PROJECT". I selected Edit - Find In... from the App Designer menu. I specified enabled in the "Find What:" box, and MY_TEMP_PROJECT in the "Project:" box.

I still had to do some searching, but the effect of my approach was to reduce the code to be searched from the size of a haystack to the size of one fistful of hay.

It wasn't much longer until I was able to find exactly where (and, from a technical perspective, why) the hyperlink was being disabled.

I don't claim to be a PeopleSoft Financial Aid expert, so I have now turned over my findings to the people here at BYU who are. And now, I still might be able to finish a few things off my original to-do list for today!!

How We Conquered Trojan.Vundo, Downloader, AntiVirus2009, and Trojan.Metajuan, and ddvngs.dll—All in One Night

It all started on Valentine’s day. I don’t know which virus we got, but that’s when the wicked pop-up windows started happening. Before it was all done, we came within a hair’s breadth of reformatting the hard drive on the computer. In a last-gasp effort, we emerged victorious over the Trojan.Vundo, Downloader, AntiVirus2009, and Trojan.Metajuan viruses. There may have been something else, but that was all that Symantec End-Point Projection could find. It took surgical warfare in the trenches of c:\windows\system32 before we were able to dispatch the enemy once and for all.

Initially we suspected that Google Toolbar had been infected. So we uninstalled the Firefox web browser. When, thereafter, the pop-ups continued, we suspected that Internet Explorer was the culprit. This seemed to be confirmed when WeatherBug, which uses the IE Engine, was accompanied by the vile pop-ups. I uninstalled Weatherbug, because it’s a virus of sorts itself (I hate how it tells itself to load on startup if you EVER start the program manually.)

We began to get a better understanding of the real culprit when we attempted to uninstall Internet Explorer. An attempt to delete the entire Internet Explorer directory was fruitless, as Windows reported that it was in use. We were able to delete iexplore.exe, however—except that five seconds later it was back.

At that point, my son and I put on our deep-sea SCUBA gear and plunged to the supposedly safe depths of Windows Safe mode. It wasn’t entirely safe. We were able to delete Internet Explorer . For good measure we deleted the entire directory. We’re using Firefox and Opera now, thank you. ;-) We found every other instance of iexplore.exe on the hard drive and deleted it as well. Then we emptied the recycle bin.

It helps when you’ve been attacked by Vundo-Downloader-AV09-Metajuan to have another computer to compare to. A very helpful clue was that we noticed that rundll32.exe showed up in the process list of the infected computer, but not in the list of the non-infected computer. Whenever we would end the rundll32.exe process, it would pop right back in the process list. With some help of notes from the Symantec web site, we ran msconfig.exe and found a strange looking process that was in the list. It used rundll32.exe to invoke (in our case) a DLL called tehutaah. We disabled that line in the startup, but when we would restart the computer it would come right back. This was one of the issues that was (sort of) fixed in safe mode (but not completely—read on).

It occurred to me after we encountered tehutaah to look in c:/windows/system32 for further activity. This is where we hit paydirt, except it still took about 2 hours to clean everything up. We sorted all files in c:\windows\system32 by descending date, using file explorer. Several DLL and INI files had been recently created. The other advantage is that, because a spawner dll program was creating new ones of these almost as fast as Symantec got rid of them, the filenames were easily noticeable, because they were random jumbles of upper- and lower-case letters (and occasionally numbers, I think, but I don’t remember for sure). One by one, I determined whether any of those files existed on the non-infected computer (hardly any of them did). If they didn’t exist on the non-infected computer, my son deleted them on the infected computer. It came down to 2 DLLs and 2 INI files that could not be deleted—even in safe mode—because somehow the DLLs were in use by windows. (I think my next computer will be a Macintosh.) The culprit files, in our case, were called:

· EfcYOHXn.dll
· nxHOYCFe.ini
· nxHOYCFe.ini2
· ddvngs.dll

We first did a search in the registry for ddvngs.dll. While we found the following on the non-infected computer (AppInit_DLLs value is blank):



we discovered that on the infected computer, the AppInit_DLLs value was set to ddvngs.dll , which was one of the files that we couldn’t delete from c:\windows\system32. We changed the value of AppInit_DLLs on the infected computer to blank (as illustrated above) and restarted the computer in safe mode, at which time we were able to get rid of ddvngs.dll.

But we still had EfcYOHXn.dll and nxHOYCFe.ini & .ini2 to deal with. (Notice that the base name of the ini and ini2 files is the base name of the dll file spelled backwards).

I right clicked on the DLL file and performed a Virus scan, and it came up clean. I right clicked on the DLL file and performed an Ad Aware Scan, and it came up clean again.

We couldn’t delete EfcYOHXn.dll, even in safe mode. But I could delete the ini and ini2 files. Just like the iexplore.exe file discussed earlier, however, both files were regenerated within a few seconds.

Not being able to delete the EfcYOHXn.dll I was able to rename it somehow. Before restarting the computer again in safe mode, we did a search in th registry for EfcYOHXn and found that instead of how it looked on the non-infected computer (Application Packages value is “mxv1_0”):



the value of the “Authentication Packages” token had two values—not just “msv1_0”, but also “c:\windows\system32\efcYOHXn”. We found and cleared this extra Authentication Packages value out of several ControlSet registry entries.

Then we restarted in safe mode. Then we were able to delete the dll file. Then we were able to delete the ini files, and they never came back.

CNN Uses Hologram People on Election Night 2008

This is absolutely amazing. I know it's not the real thing like from Star Wars or something, but the fact that CNN used hologram people in its election night coverage is very cool.

For more info, click here.

It was already being parodied Wednesday in an online mash-up, substituting CNN correspondent Jessica Yellin's voice with Princess Leia of "Star Wars."

Yellin stepped into a booth set up in a tent at Grant Park in Chicago, surrounded by 25 high-definition cameras that duplicated her moving image in much the same way as a flight simulator would.

On screen, it appeared she was standing and talking to Wolf Blitzer on CNN's New York set, an eerie white halo around her.

...it certainly did not appear to be a distraction, as CNN's audience Tuesday was nearly double what it was for Election Night in 2004.

COBOL Survives Every Claim that it Will Fail

Nobody is programming in COBOL these days, right? Wrong. It is one of the most mature languages out there, and while Pascal and others fall by the wayside, COBOL is still mainstream in many development shops.

PeopleSoft talked about moving to Fusion, which at the time sounded like a move away from COBOL. They now talk about Applications Unlimited, a healthy realization that one cannot simply snap one's fingers and completely rework an application development environment. PeopleSoft still delivers tens of thousands of lines of COBOL programs.

As this article says, COBOL is about as sexy as a rock, but it still works very well for what it does. I'm glad they still taught COBOL when I was in college.

PeopleSoft: Which Project is My App Engine In?

One of my favorite "tools" in PeopleSoft App Designer is Edit -> Find Definition References. If I'm not sure, for example, whether a page I'm working on has been included in the appropriate project, Find Definition References will help me quickly find out whether it is or not.

That doesn't work so well when I want to find which project an Application Engine program is in.

When I select Edit -> Find Definition References for an App Engine, I see something like the following.












Well, I pretty much already knew that!

There is a way that I can find which project an App Engine is included in, but it requires a database query. I can use a query similar to the following:
select * from sysadm.psprojectitem
where objectvalue1 = 'MY_APP_ENGINE';
Using the above query, if your App Engine is included in any projects, the value in the OBJECTVALUE1 column will be your App Engine name. App Engine objects have the following object types:
  • 33 - App Engine Program
  • 34 - App Engine Section
  • 43 - App Engine Step
Occasionally, references to App Engines are stored differently in PSPROJECTITEM (if anyone knows why, please clue me in!). If the above query doesn't work, use a query similar to the following:
select * from sysadm.psprojectitem
where objectvalue1 = 'Application Engine'
and OBJECTVALUE2 = 'MY_APP_ENGINE';
Using this query, if your App Engine is included in any projects, the value in the OBJECTVALUE2 column will be your App Engine name.

With one of those two queries, you should be able to find whether your App Engine is included in the appropriate project.

PSDBOWNER and Why I Can't Login to my New Database

We copied our upgrade database to our development backup database this morning. I had to apply about 13 bundles to the upgrade database to get it current on maintenance.

The next step is to copy the customizations from our dev database into our dev backup database. But this morning after the dev backup database was created, I couldn't login to it using App Designer, even though I could login using the same userid and password to the upgrade database (from which dev backup was a copy).

Does anyone know where this is going? Well, I'm sort of new to PeopleSoft, so I was bordering on the verge of panic, but I found someone else on our staff who has been doing PeopleSoft for a long time.

He said, "Did you update the DBOWNER table?"

And that's all it was. The PS.PSDBOWNER.DBNAME still had the name of the upgrade database in it. Once I updated that, I was able to login and do a compare between the dev and dev backup databases.

To perform a full database compare
  1. In App Designer, select Tools->Compare and Report->To Database
  2. Specify the database in the login dialog and wait for all the permission lists, etc. to load.
  3. When the Compare and Report Dialog comes up, click the Options button.
  4. When the Upgrade Options dialog comes up, click on the Compare Options tab.
  5. In the Compare Type area of the Compare Options tab, click the Database radio button.
A full database compare takes a long time.

Now I'm just waiting for my compare report to run...

Where is My Menu Item?

When you're learning about a PeopleSoft page, and especially if you are providing backup support for a customized pages, it is not very intuitive how to actually navigate to that page.

It's pretty easy, using App Designer, to figure out which menu a page is located on.

  1. Bring up the page in App Designer.
  2. Click Edit -> Find Definition References on the menu to find out which component it belongs to.
  3. Bring up the component in App Designer
  4. Click Edit -> Find Definition References to find out which menu it belongs to.
But if you're trying to find out how to navigate to that page, you've hit a dead end.

However, once you know what the component name is, navigate to PeopleTools -> Portal -> View Menu Item Detail. Type in the name of the component as the "Portal Object Name" to find out not only how to navigate to it (Menu Path), but what permissions are required to access it, and who actually has access to it.

That was easy.

Free Wireless in Red Rock Country

We just arrived in gorgeous Moab, Utah. Tomorrow we're heading over to Mesa Verde National Park near Cortez, Colorado, and then Saturday, we'll take in Arches NP just outside the north end of Moab.


I was excited to find that our hotel has high-speed wireless internet access. What I was surprised to find out was that it has no security.

So if you happen to be in Moab and need to check your e-mail, pull your car into the parking lot of the Moab Valley Inn, and as long as you have a wireless card, you're "in like Flynn"!

Peoplesoft Financial Aid: BYU Institutional Application

For about the past 4 months I've been working on BYU customizations to the PeopleSoft-delivered financial aid module. Most of the time has been spent on what we call the Institutional Application. I'm not sure why Peoplesoft doesn't already have something like this!

Students will be able to apply online for various forms of Financial Aid. The Institutional App displays different options based on whether the student is an undergraduate, law student, etc. Based on the various options the student selects on the page, various To-Do List items are created.

Many To-Do list items contain a message that says something like 'Please take a copy of your 2006 Federal tax forms to the Financial Aid Office.' However, in certain cases, the information can be provided online; therefore, some of the To-Do list items are custom pages as well. A custom cross-reference table identifies the custom pages and, with the help of about 10 lines of code, which checklist item codes will transfer to the appropriate custom page. Some of the information a student can provide online include other schools attended, other sources of financial aid, or whether the student served an LDS mission.

The greatest complication to the Institutional Application is the fact that a student can make an additional request for financial aid if any of the loans or grants for his or her initial request has already been originated.

I spent most of the day working on this functionality, and I think it's ready to go--but what do I know? We'll see what the users think.