Wednesday, October 04, 2006

'E-Change' Demo

I thought I’d post the demo version of ‘E-Change’; here are the download links,

E-Change ---> http://www.FileUL.com/view.php?file=PhOX9ZH

E-Configure ----> http://www.FileUL.com/view.php?file=BJmSlx8

E-Restore ------> http://www.FileUL.com/view.php?file=mrff5swv

E-Help ---------> http://www.FileUL.com/view.php?file=Rl5o23s

The demo version will not provide any compare report repository (The Project Compare report will not contain any objects as the report filter has been set to “0”).

I’m currently working on a requirement where users wanted to upload some design documents along with the compare report. The next priority would be to provide a Viewer where they could select objects and view the modification History.

Some work on SQR application is still pending (We did have a lot of SQR Upgrade applications; unfortunately my friend had lost them, me in the process of re-development.)

And I would like to thank Jim and Chris for their comments on explaining the PeopleCode constraint. The links are here,

Wednesday, August 16, 2006

Seeking Your Suggestion

I have been interacting with users of Stat, a couple of findings…. Stat feels like a complete application as compared to what I’ve developed (No kidding here, I know the amount of time that I took to develop this application!). Interestingly, users find a great deal of value in having a complete application. This post is to seek your valuable suggestion on this.

Should I include Issue Tracking and store a record (would typically include the User and Date Time details) of all the actions performed on any single object? Or is there any application available in the market which I must look at integrating my Change Management application (I named it ‘E-Change’ – Enterprise Change Management, although it is PeopleSoft specific!) with?

Should I build File object Version Control too in ‘E-Change’? Or should I leave it to applications available in the market?

And finally, should I provide the “Build Capabilities” to ‘E-Change’? I do have a separate stand-alone application which could be used for Building objects in PeopleSoft, this I did before I started working on ‘E-Change’ and it should not be a great deal to provide this capability to the application. I’m only concerned about whether it would be acceptable from the Customer end.

I would be exited in knowing your views on these and you can help me by leaving a comment here (Oh! I remember, please do not send me a mail….my mail box is full of spam!).

Monday, July 31, 2006

PeopleSoft Change Management

You can view the help document for “PeopleSoft Change Management” here. Kindly let me know your valuable suggestion. I’ll upload the applications as soon as possible.



Monday, July 17, 2006

PeopleSoft Version Control

Two Months! That is the time since I’ve not posted on this blog! The reasons are here. And as stated I was busy with a lot of things. I was looking into my blog today and thought I’ll contribute something!

Version Control has been a big problem and this is a follow up to the post. I started coding the application from where I left the last time around (took 3 precious hours out of my routine.). The application completed as of today will help you in the following ways…

Firstly, when there is an enhancement which must be made to my existing PeopleSoft application. I intend to it on my DEV environment. (Let’s forget about TEST and other environments and try looking into what the application can do.) I identify the (on-line (just laughed out loud…remembered what Nietzche said “the parenthesis is for donkeys.” – That was not intended to abuse anybody)) objects which will be part of the enhancements and insert it into a project in development.

Secondly, I modify the objects in my DEV. After this I use the application which will run a PeopleSoft project compare and create a report of all the changes that will be made to production as a result of this enhancement - The compare reports will be available as HTML (8.46 supports this feature) and sorted according to the date (i.e. inside the folder marked with the date of . Now, to take a snapshot of the objects in PRD I must use the application which will take a snapshot of all the objects in the DEV project from PRD. The effort saving is that I do not have to identify and insert the objects into a PRD project.

Thirdly, the application will migrate the project from DEV to PRD.

Lastly, the application will allow the user to “Restore” the system back to a specific date (At the on-line object level). When I choose 01-JAN-2006, the application will apply all the snapshots starting from today to 01-JAN-2006 (In the reverse order) and hence I do not have to worry about identifying each of these snapshots from my file server in the specific order.

I intend to do a couple more things like – Define a path DEV --> TEST --> PRD and make sure the users do not skip any of these. The second feature will be object locking.

If you would like to test this application reach me on my mail. (n e x t r e v o l u t i o n i n e r p @ y a h o o . c o m)

The various things that I’ve been up to are far from over and will give everybody an update shortly.

Tuesday, May 16, 2006

PeopleSoft System Restore

There is one important aspect of Microsoft XP which helped me get out of the worst situations with ease – System Restore (I buy all the latest games and install it, download all internet games and without System Restore I would have been doomed). I’ve wondered many a times how will it be if we could perform System Restore in an ERP. This makes me feel good about choosing the appropriate blog title. System Restore is not impossible to achieve with an ERP system, but the complexity lies with the Table structures being modified result in loss of data in certain cases and this cannot be effectively handled with a System Restore that we try and build. Let me provide a scenario, a patch delivered by PeopleSoft changes the Field type from Number to Char and we alter the table to make this change. After a few weeks the Char data which flows into the system might make it impossible for us to revert back to our Numeric field type.

Although it could not be so useful incase of the Field properties which require “Alter” on all tables containing the Field, it would be suitable for all the other Field property changes (like Labels, Descriptions, etc.). The online objects like Pages, Components, PeopleCode, etc. could prove a big advantage for System Restore. This post will mention how we could achieve system restore with PeopleSoft and provide an automated application to achieve the same.

Before applying a project to our existing environment we are bound to perform a PeopleSoft Project compare. We initially apply the Patch project to our Demo environment and then compare with our Development/Test environment and copy the object to our Dev/Test, we reapply our customizations with the help of compare reports, perform tests on the Dev/Test environment and finally copy the project from Dev/Test to Production. To back up and restore our system we can manually list all the objects in our Test/Dev environment and back-up the corresponding rows from PeopleTools tables for the objects in the project. The back-up can be through data mover scripts and the exported .dat file from production can be used to revert back to any specific point.

The manual task of identifying the objects in Test/Dev and then writing export programs to get the Meta Data of these objects in Production can be automated. The link provided below contains an application which will help you achieve system restore for Fields – The application can only back-up and restore the on-line object (the current application can only do it for Fields in a selected project.), it cannot build these changes at the database level – Remember Automate those Migrations by Brent! The export-import through data mover used by the application cannot be suitable for PeopleCode; we might have to use database level import-export options.

Use the link below to download a Zip file which will contain the Setup.exe and the help document. (Approx. 2MB) – Valid for 30 days from today (17th May 2006). Do not be alarmed by “FileUL.com is being moved to a different server, we are sorry for the inconvenience this may cause”. Instead search for this “You can download the file here.” – “here” is the download link.
http://www.fileul.com/view.php?file=T0gzdY

The application is still at its primitive stages and I do not expect it to be perfect. Test it and let me know your suggestions. If you want to work on the Source Code and extend the applications features, feel free to send me a mail at nextrevolutioninerp@yahoo.com. I can provide you with the source code and certain design documents to extend the benefits of this application. The application was built with Visual Basic and tested on Windows XP and PeopleTools 8.46. Do not complain about Translate changes as the application will only handle Fields currently and Translates are distinct on-line objects in PeopleSoft projects.

I still feel like a developer at heart and would like to leave consulting for development – Just like the little boy in Alchemist! I’m not sure when that day will dawn, but I’ll keep this blog to motivate myself in the right direction.

Thursday, May 11, 2006

PeopleSoft - "Applications Unlimited"

After the Big News “Applications Unlimited” – by Charles Phillip, I thought I would do some research on these promises. The almost obvious aspect of this announcement was the fear of Oracle in SAP stealing their customer base. PeopleSoft was not procured for its strength in applications; Oracle went in for the huge Customer base that the acquisition would give them – But this is of least importance, as most of know where all this was heading to - Monopoly. The deeper meaning in this announcement when understood will only shatter our hopes of where the IT industry is heading to.

The first PeopleSoft 9.0 product release that I found on Customer Connection was Enterprise Learning Management. Now, that PeopleSoft 9.0 was released for this product I wanted to know what the ELM Development team was up to; for my disappointment I heard that this development team was scrapped and moved to product fusion (This might not really be true, as this one came from a rather unreliable source – But cannot rule this out as impossible!). Nevertheless, let us take a closer look at what, if this were true, are Oracle’s intentions with “Applications Unlimited”. Oracle I guess is looking to convert most of the Development teams of PeopleSoft, Siebel, JDE and Oracle under one umbrella as per their previous plan of Fusion development. Then, what about “Apps Unlimited”, the support development teams will be responsible for developing future releases of PeopleSoft (post 9.0), Siebel and JDE. “Apps Unlimited” will only provide certain enhancements to Customers wanting to stick with PeopleSoft and if any real improvement which the Customer would require from the applications - He might have to move to Fusion. The support development teams might be discouraged from making major enhancements to future releases of existing Application products, while these will be part of Fusion –Customers who would like to make use of these benefits must move ahead to Fusion.

Oracle has pulled this one to perfection; it can now retain the Customers in existing applications and at the same time will be working hard on building and selling Fusion. The real story is what is demeaning; I am yet to see another business where a Company dictates terms to its Customers. Why should this happen in the IT industry? Probably the next decade will save Customers the trouble of depending too much on the product vendor. Probably, we will have a lot more competition in this sphere to pull the client out of the current situation. So much for all these probable statements!

Kindly be informed - these are my personal views and Oracle Corporation has no role to play with this post.

Thursday, May 04, 2006

PeopleSoft SQR Upgrades

It has been really sometime since I have written something. I am dedicating most of my time to the Re-Implementation project planning phase, I seem to have taken it personally, and the main reason is – One of my previous colleagues from the PeopleSoft Solution Center said “You will need all the experience inside our solution center to pull this off”, by which he means at least 600 projects that was completed by the Solution center. He has a point and I respect his views, but a challenge is always exiting. So as per my expectations these long breaks between my posts is going to continue. In this post I would like to give some suggestions to achieve the SQR Upgrade during a PeopleSoft upgrade process and the kind of Tools that you could develop to achieve the process with ease. This post talks about how I would handle the project, most of it is based on what I learnt out of my previous experience. If I’m missing something kindly let me know, missing pieces are perfectly possible because I work from India with absolutely no client interaction and no knowledge of the Real Time issues with this process. The offshore process described will involve the Technical Upgrade of the SQRs and I believe the process defined for this specific portion is precise.

The PeopleSoft SQR Upgrade must be divided into three phases,
SQR Technical Upgrade
SQR Functional Upgrade
Testing and Issue Resolution

SQR Technical Upgrade
The SQR Technical Upgrade is further classified into,
SQR Upgrade for Custom Added SQRs
SQR Upgrade for Custom Modified SQRs

Each Custom Added SQR is made compatible with the new PeopleSoft instance, this being a Technical Upgrade we will only consider the effects of Table structure modifications which would prevent an SQR from execution, the results of the SQR can only be perfected after Functional Upgrade and Testing. The Table structure changes must be provided in a document to help the Technical Consultant achieve his goal. The usual Format of this document will contain the changes that must be incorporated into each of the SQRs (This document is the Technical Design document). The Technical Design document can be created by parsing each SQR for table names within the SQRs and printing all the differences in the table structure for these tables. The table structure differences are pulled out of the Meta Tables from our old and new release PeopleSoft databases, another important aspect which must not be overlooked is the impact of “Renamed” objects. The utility which creates the SQR TDD must also look into the path specific rename scripts. The path specific rename scripts are the scripts in your new release pshomes which will be executed for your upgrade path. So the inputs to our TDD utility are folder containing Custom SQRs, Old Release database, New Release Database and the rename scripts. Understanding the precise use of the TDD is very important, at no point in time should we forget the real objective of this stage – Make the old release SQRs executable in the new release. When the report points to a field which was deleted from a specific table, we must look into the data conversion programs to identify the replacement RecordField. When a new Field is added to a table we must look out for the INSERT statements in the SQR containing these tables, and add these newly added fields in the Insert statement, if the values being inserted can be identified easily for these new RecordFields the Technical Consultant can include the precise values else we either include a Default value for the field or data type specific defaults (for CHAR – ‘ ‘, for number – 0, for date – NULL). The values entered in these insert statements will be evaluated during the subsequent phases. Renames must be done depending on the TDD pointers. Finally, the PERSONAL_DATA changes must be made to the SQRs depending on the upgrade path – that is if the upgrade path has transferred all the data from PERSONAL_DATA to PERSON, ADDRESSES, PER_DATA_EFFDT etc. An example for this is – The Custom SQR which looks like this,
BEGIN-SELECT
EMPLID
NAME
ADDRESS
ADDRESS_OTHER
FROM PS_PERSONAL_DATA
WHERE EMPLID = ‘xxxx’

We will have to convert the program to this format in the new release,
BEGIN-SELECT
! Modified by UpgraderName for SQR Upgrade Project Name - Begins
A.EMPLID
B.NAME
C.ADDRESS1
D.ADDRESS1
FROM PS_PERSON A, PS_NAMES B, PS_ADDRESSES C, PS_ADDRESSES D
WHERE A.EMPLID = ‘xxxx’
AND B.EMPLID = A.EMPLID
AND B.NAME_TYPE = ‘PRI’
AND C.EMPLID = A.EMPLID
AND C.ADDRESS_TYPE = ‘HOME’
AND D.EMPLID = A.EMPLID
AND D.ADDRESS_TYPE = ‘MAIL’
! Modified by UpgraderName for SQR Upgrade Project Name – Ends

I guess I have covered the PERSONAL_DATA changes in detail. Look out for the comments these serve as perfect documentation trails within the SQRs. After we do this sort of Documentation whenever a change was made, we make sure the summary goes to the Top of the SQR like this,
!***********************************************************
! SQR Technical Upgrade by Co. Name on May 4, 2006
!
! + Renamed XLATTABLE to PSXLATITEM – 7 Occurrences
! + Implemented PERSONAL_DATA changes in the procedure
! Get-Personal-Info
!***********************************************************
The steps listed above must be performed to complete the SQR Upgrade for Custom Added tables. These steps can be automated; the tool must make all the desired changes, and make proper documentation in the SQR. There are number of instances to be considered, Renames must only be made to the Table or Column name and not to the variables that appear with the same names.

Technical Upgrade of Custom Modified SQRs are done with the help of Beyond Compare (or any such file comparison program) the Custom Modified SQR is compared with the Delivered SQR in the old release and the Customizations are identified. The Delivered SQRs between the Old and New releases are compared to identify the changes made by PeopleSoft. If the Customization can be carried forward it should be carried forward to the New Delivered SQR. This would have been my next objective had I stayed with my old team – Create a tool to automate this analysis of SQRs and then customize them with the help of a code.

All the Technically upgraded SQRs are compiled with the help of another tool – it does nothing more than pass the command line parameters using the common flags set.

SQR Functional Upgrade
The Technically upgraded SQRs are executed with Test data and the results are analyzed. The issue is identified as a business process issues which have come into effect as a result of an upgrade in this stage will be evaluated by the Functional Consultants to provide suitable solutions.

Testing and Issue Resolution
As always we finish our project with this phase.

I’ll probably upload all the Tools mentioned in this post in sometime and provide the links. Currently working on a Tool to get a complete Application Engine program from the back-end, this will include the exact sequence in which the Application Engines are being executed (Dynamic Call section must be handled, Application Designer doesn’t do it! Just trying my best will let you know how it goes – Required for Re-Implementation project.) and the contents (PeopleCode too (Yes!)) and properties of the various steps.

Wednesday, April 26, 2006

On-Demand Applications - What I did not say?

It has been sometime since my last post, I was a bit busy with the Re-Implementation Strategies (Actually I wanted it to be the first post on my blog for sometime so that I could get some more ideas!). I was going through the success story of Salesforce.com and found out that it can be attributed to hosting applications. The mid-sized companies which need an IT solution to their business are quick to realize the cost benefits of this On-Demand version of software applications. Remember the post titled “Past, Present and Future of Applications”, I did discuss about the future of ERP industry will most likely be the hosted applications. On-Demand is how we call it! Would you believe it if I told you that I did not know On-Demand was what I was referring to? I’m disappointed at myself! I was under the assumption that, I’ve come up with a brilliant idea. But the reality is I’m not reading all the news! I hate myself for doing that.

But the idea already in existence does not ward me off. After I made the post I knew how to achieve On-Demand (to a certain extent!) but the problem that I knew and did not let know is what I’m going to discuss in this post (Probably, I should have been in marketing!). When a Customer chooses a XYZ’s On-Demand services, his entire IT infrastructure is with XYZ, this makes a move from XYZ to ABC almost impossible. If ABC after certain years comes up with the best possible application architecture and business process the Customer might regret his choice of XYZ applications. This problem is most similar to the one faced by Bigger Customers who have chosen an application (ORACLE/SAP/PeopleSoft/Siebel) which suited their requirements when they bought the applications. I hate this inflexibility, but this is what drives the business of the product vendors (Customers watch out!).

The second issue in choosing an On-Demand service is this, if a large number of Customers are being hosted with a single infrastructure, the Customer looses his freedom of upgrade at HIS pace. Although the architecture change which the On-Demand vendor wants to make to his existing systems would definitely add value to my application, I’ll not enjoy the constraint of moving to the new release at a time when I have my own business issues to take care of. Additional cost which must be incurred might bring my business down.

I’m still searching for answers to these questions in the World Wide Web, will let you know if I find one.

Today morning my friend called me up and told me that Oracle has extended the development plans of PeopleSoft. Read more. I hope my predictions will come true!

Monday, April 17, 2006

Re-Implementing PeopleSoft Data Conversion Strategies

Although I strongly believe that my current Customer should not have opted for a re-implementation, I do not intend to squeeze every penny out of his pocket. Now it is my responsibility to reduce the amount of effort required in this project. The effort required in data conversion will define the project and I badly wish that I pull it off. Today I started documenting the various strategies which could be followed for data conversion and I look forward to your valuable suggestions to choose the best out of these. The complexity with this project seems to be never ending - The customer has a single 7.5 instance and he wants to split the single instance into two different 8.9 instances (X and Y). The amount of customer data amounts to approximately 300GB.


Re-Implementation - Data Conversion Strategies

The purpose of this post is to analyze the various data conversion strategies that can be adapted during a PeopleSoft Re-Implementation when the Customer intends to move from PeopleSoft version 7.5 to 8.9. The biggest challenge in a PeopleSoft implementation is data conversion and the right strategy adopted at this stage marks the early success of the project. Let us look into the various data conversion strategies available in brief.

Upgrade-Like Approach
In this approach, data conversion is achieved by using the PeopleSoft delivered Application Engine programs customized to suit our requirement. To achieve our objective of migrating the application data from the Old PeopleSoft system (7.5) to our new system (8.9) we must first upgrade the PeopleTools release of our 7.5 system to 8.46 and then copy the records, fields and record fields from our newly implemented 8.9 (We must have applied the customizations to the new system) system to the 7.5 system. After this we run “Alter without deletes”. Copy the application engine programs delivered by PeopleSoft for data conversion into the 7.5 system. Customize the conversion programs to suit our requirements. Run data conversion programs and then “Alters with Deletes”. The application data in our 7.5 system can now be migrated directly to our new system using database tools for export and import. Finally we can purge the data not required by X and Y in the X and Y systems respectively.
Pros
The effort required to create the data conversion scripts can be greatly reduced.
The delivered data conversion scripts can be used with slight modifications (Modifications are required to handle data conversion programs specific to the upgrade path 7.5 to 8.8 as these programs will be expecting the records to have structures of 7.5+8.8, what we have in our database is 7.5+8.9)
The data conversion process is handled efficiently in this approach and hence the time required for conversion and migration is reduced greatly.
Cons
The PeopleSoft delivered data conversion scripts are path specific, hence effort required to merge the two sets of conversion programs (7.5 to 8.8 and 8.8 to 8.9) into a single program must be taken into account.
During the final move to production there is an added overhead which requires us to perform the PeopleTools upgrade of the 7.5 system.
PeopleTools upgrade will also require database migration from an older release of Oracle to the supported Oracle database release.

‘RE’-Implementation Approach
In this approach we develop SQL scripts which will convert the data in the 7.5 system to the data format required by the 8.9 system. The SQL scripts will convert data by a series of CREATE, ALTER, UPDATE and INSERT statements depending on the data format required by 8.9. The data conversion happens within the 7.5 system and hence it is very efficient. These scripts are created with the help of the PeopleSoft delivered data conversion programs. Once data conversion is complete we can migrate the data from the old system into our new system using data migration tools. Data segregation between the X and Y systems can be achieved by purging the data that is not required in each of these systems (Scripts must be developed for this purpose, these are simple DELETE statements with conditions specific to purge X and Y data).
Pros
The overhead of upgrading the PeopleTools release of the 7.5 system during final move to production is removed.
The data conversion process is optimized by directly migrating the data from 7.5 to 8.9 system after conversion within 7.5 system.
Cons
The effort required to develop the conversion scripts is huge.
The reliability of the conversion scripts cannot be assured until we obtain the comprehensive test results.

DBLinks Approach
Data conversion programs delivered by PeopleSoft for the upgrade paths of 7.5 to 8.8 and 8.8 to 8.9 are analyzed and merged to create a single Data conversion application engine program. The data conversion programs are customized to read data from the old release database using DBLinks and insert the data into our new release systems. Data segregation for X and Y specific data is achieved by customizing these programs to suit our requirements. The tables which are not handled by the conversion programs can be directly migrated from the old release database to the new release database.
Pros
The overhead of upgrading the PeopleTools release of the 7.5 system during final move to production is removed.
Data segregation between the X and Y systems are achieved in a single step.
Cons
The migration of data between databases using DBLinks is not desirable for large amounts of data as this may require a large amount of CACHE to hold the selected data from the old release database.
DBLinks in Application Engine programs is not recommended by PeopleSoft.
Migrating data from the old release database could be time consuming if the Servers are in different locations, this would be the scenario with X and Y systems.

Database Schema Approach
The application data is migrated from Copy of Production to a new schema in the database server containing the new release database. The delivered data conversion scripts must be customized to read data from the tables that exist on the database schema for copy of production and insert the data into the tables present in the new release database schema. This would increase the efficiency of data migration. Data segregation for X and Y specific data is achieved by customizing the delivered programs to suit our requirements.
Pros
The overhead of upgrading the PeopleTools release of the 7.5 system during final move to production is removed.
Data segregation between the X and Y systems are achieved in a single step.
Cons
Although this sounds logically feasible, the complexity involved can only be addressed by a PeopleSoft DBA.
The conversion programs must be tediously analyzed and the schema names must be added to each of the conversion scripts.

Pure Implementation Approach
Data conversion and migration are achieved in this approach by developing Application Engine programs in the 8.9 system to migrate and convert data from the 7.5 system. The migration and conversion can be achieved by developing Component Interfaces. Separation of X and Y data can be handled from within these conversion programs.
Pros
The overhead of upgrading the PeopleTools release of the 7.5 system during final move to production is removed.
Data segregation between the X and Y systems are achieved in a single step.
Cons
Migration and conversion can be achieved using Component Interfaces or Application Engines only if application data is present in a flat file format, hence during final move to production all the data in the 7.5 system must be converted to flat file format.
Cut off time required during final move to production is considerably increased due to the requirement of converting the data into flat file.
The conversion process will not be as efficient as the conversion within the database as in the previous case.

Partial Implementation Approach
In this approach we identify all the tables which do not require any structural changes for data migration (Customer created tables are the best examples to this class of tables). Migrate all these tables from 7.5 to 8.9 using database migration tools. For the tables requiring conversion we develop the conversion programs as described in the Pure Implementation Approach. Data segregation for X and Y systems can be achieved in the conversion scripts for tables that have a structure change between the old and new releases. For the tables which do not have structural modifications, data segregation can only be achieved by purging the data that is not required in each individual system.
Pros
The overhead of upgrading the PeopleTools release of the 7.5 system during final move to production is removed.
The data conversion process is optimized by directly migrating the data which do not need conversion.
Cons
Although data conversion is optimized by directly migrating data from tables which do not need any data conversion, ideally the amount of data within these tables will only amount to a small percentage of the entire application data in the system.
Cut off time required during final move to production is considerably increased due to the requirement of converting the data into flat file.
The conversion process will not be as efficient as the conversion within the database.

Kindly vote for the approach that you would be following or if you have a better approach do let me know.

Monday, April 10, 2006

PeopleSoft Missing Key

I’m back from my vacation! It was a wonderful trekking experience – People who came along with me were shocked at my stamina, which I think is at its worst! Back to blogging. This is something that I always wanted to write, and the attribution comes in the beginning – this story is a brain child of one of my friend kartick (He works for ORACLE Corporation - not me!). He doesn’t write Technical stuff, so don’t be disappointed after reaching his blog.

Most of you know that I enjoy working with the application directly from the back-end. I’ve used Meta-Data manipulation more than PeopleTools. The most interesting part was when I created a page using SQL INSERT statements. It was a wonderful sight. All this backend playing was totally alright when you are developing objects, but manipulating application data requires you to be extra cautious. The reason as we all know is that data integrity is maintained in PeopleSoft by the Application Server code. When we insert a parent record and a child record in a PeopleSoft page, it is the responsibility of the internal code to maintain data integrity. A few months back my friend was given the task of uploading some data into the PeopleSoft Test environment, with absolutely no Functional knowledge (Just like me!) he uploaded the data into the child without taking the parent into account. This I think could have been prevented had PeopleSoft provided the capability of Foreign Keys.

Foreign keys, this is what I intend to discuss in some length. PeopleSoft used almost all the delivered capabilities of the database world, why did they miss this? The reason could go something like this – Development training for a record creation is very simple in PeopleSoft, had they implemented Foreign keys then the training will require the consultant to clearly understand the parent-child relation at the very beginning instead of the normal page creation part of it, I don’t think this to be a valid reason for somebody to overlook Foreign keys. The other reason could be that PeopleSoft does not recommend users to update data directly from the backend. What has just happened is that PeopleSoft had to build their integrity code; I strongly feel that we could have used the database delivered integrity to achieve our goal - Efficiency.

The tough times keep coming! This is what I currently do for identifying the all the parents of a given record, I do “Find All Definition References” and then manually try identifying the parent. This could have been easily simplified had integrity been enforced at the database level – Makes life simpler for a technical consultant.

To conclude, Foreign keys must have been provided in the application. All delivered business processes having a clear link between the parent and child record at the database level could have proved valuable. I don’t like being pessimistic, but is there something that I’m missing? I’ll leave the question to be answered by the readers.

I’m currently learning NA Payroll from PeopleBooks (trying hard to be a Functional Consultant). My first impression is – The complexity of the PeopleSoft is not at its development environment level, it is more so at the Business process level. The Enterprise product packages all the requirements and provides a lot of flexibility to the customer, but the amount of flexibility is the problem (not really Customers want more flexibility!). Trying to build flexibility into the application has resulted in expecting parameters for each simple process to manipulate it differently. If I find more time to actually become a Functional Consultant, probably this blog will move into its next domain – Functional Needs of a Customer ;)

Friday, April 07, 2006

God save Customers!

God save Customers! I am currently on a vacation and today morning got an emergency mail from my organization. I thought I’ll share it with all the PeopleSoft experts and ask them their advice on this. The current project we are on is a 7.5 to 8.9 HRMS upgrade, the Customer wants us to perform a re-implementation of HRMS 8.9 and then migrate and convert the data from their 7.5 system to the newly implemented 8.9 system. The reason being stated is that a 7.5 to 8.9 upgrade will take two hops to reach 8.9 and the customer is worried about the RISK involved in the two hops (calls it cumulative risk!). The customer wants us to implement HRMS 8.9 and then migrate and convert the data from 7.5 to 8.9. Now the biggest dilemma that I face is, I think a vendor (I mean a service provider!) conversion from 7.5 to 8.9 will have more risk involved in it than the delivered conversion from 7.5 to 8.9. The customer calls it less riskier because he says we can test the application after we convert our data to 8.9, rather than hop from 7.5 to 8.8 and then from 8.8 to 8.9 and finally test the errors and figure out the exact place where our conversion got screwed (Could be between 7.5 to 8.8 or 8.8 to 8.9). My God! I think he is missing another vital piece of it, migrating and converting all the data is going to take at least twice the time compared to what two data conversions from 7.5 to 8.9. This in turn results in double the down-time. The amount of effort required in writing the conversion scripts is going to be huge. Implementation time required for applying the required customizations to the system can be reduced to a certain extent, but it still is going to be higher. The effort required in making the setup is going to be high. I do not see any benefit to this approach.

I’m looking forward to your valuable suggestions. I’ll post more once I’m back from my vacation on Monday, hopefully. You can mail me at nextrevolutioninerp@yahoo.com

Tuesday, March 28, 2006

PeopleSoft Upgrade Applications

If you would have noticed the recent changes to the Side bar in this blog you would have known that I did upload the recent demo version of Reapply Customizations utility which I had built. To actually know the approach followed by me in building this Tool take a look at this.

I’ve also included the Help document for all these Tools to walk you through the steps required to run the applications. If you have any questions kindly let me know. I would like to hear your feedback after you test these applications. I would also love to hear your suggestions for improvement.

But be warned you will need at least three instances to test the Reapply Customization application. I know – Flash Demo for Reapply Customization is pending. I am working hard on making Reapply Customization work for “Pages” – this is a challenge basically because PNLFLDID was added to PSPNLFIELD only after PeopleTools 8.40. We can see PeopleSoft Compare process failing in identifying exact page Customizations in the PRT files prior Tools 8.40. One of my friend actually wants to know why LASTUPDOPRID field was not added to PSPNLFIELD, I think it is more to do with the tedious task of updating this field for position changes (position changes are actually not very significant in the Report). I think PS could have added this field and updated it when something other than the position of the field changes in the Page – these are just thoughts.

The Customization Analyzer utility available in the Demo version does not provide the complete features – the missing portion is that the utility gives all the Navigation paths for each object in the report to help the functional consultant.

The Reapply Customization utility is aimed at providing comprehensive Documentation for the objects to which it reapplied the customizations. Certain tweaks would actually make these comments more comprehensive.

If you are interested in taking a challenge - try writing an algorithm to achieve Reapply Customizations for Pages (Points to ponder – Must be Tools compatible, Must only reapply customizations.). Any luck on this let me know.

Test it and let me know your feedback at nextrevolutioninerp@yahoo.com

Thursday, March 23, 2006

PeopleSoft Upgrade Contribution

Oracle’s ideas on FUSION are headed in the right direction, thanks to its acquisitions. PeopleSoft PeopleTools/Application development worked so closely with the upgrade teams, which resulted in a good upgrade path (I would not call it Best! I still think PeopleSoft could have automated the process of Reapplication of Customizations – at least to a certain extent. With only one programmer at my disposal (which is me!) I was able to automate reapply customizations for records, fields, record fields, indexes, components, menus, indexes and translates (whew!)). They (The Upgrade Development Team) worked closely with the PeopleTools/Application development and ensured that the New Release does not put too much effort requirement into the Upgrade. Can't really take the credit away from PS because a single developer could not have achieved this had they not worried about the Upgrades.

Let me give you a clear pointer to this, PeopleSoft PeopleTools development wanted to remove Menus, but the Upgrade Development team identified the complexity which this would have brought to the upgrade. Although, attaching components to Menus involves a bit of effort it does provide us with the much needed grouping of related business processes. If I remember correctly, it was my mentor who put me this question “Why do we need Menus?” and digging into somebody told us it is for compatibility with Older PeopleSoft releases. We did agree upon this because we thought the advantage of Menus could easily be over-ridden by allowing the user to optionally attach these components to a Menu – This is what we thought the PeopleTools development wanted to achieve with the replacement of Menus. I have always wanted to ask somebody in PeopleSoft development whether this was actually a plan or a Myth! But this being a Myth or reality doesn’t really change things here; the Upgrade development played a critical role in PeopleSoft. Looking into the way Upgrades were presented in PeopleSoft, we really know that this did happen.

I’ll get back to the first line of this post; “Oracle’s ideas on FUSION are headed in the right direction, thanks to its acquisitions”. During my recent conversation with x-colleagues I heard them say that the Upgrade development team is involved with the FUSION development in pointing the challenges which FUSION will have on PS upgrades.

Another important aspect of this post is, I’m not trying to underestimate the capabilities of other Application products. ORACLE could have done it (But doesn’t look like it to me, when I was introduced to ORACLE application upgrade, it did not look like I would have understood it in 2 days. This was the amount of time required to understand PS upgrades.). If there is another company (other than PS) in FUSION whose contribution I wouldn’t doubt it is definitely SIEBEL.

Small note here, another of those useful information which I came across recently is, a Customer of ORACLE migrated from ORACLE applications to PS. One of the senior members in PS had this to say, “PS HRMS 8.9 is easily the best product available in the market currently. Did you ever hear about a Customer moving from the parent company to the acquired company?” Of course heard about this from x-colleagues. I was not successful enough in getting this information from the internet, and I'm not able to recall the name of the Customer. Probably give it to you in a later post.

Disclaimer: The thoughts mentioned here are strictly mine.

Oh! blogs are so much easier to write (No flashy marketing lingo required), White Papers are not!!! I really have miles to go before I could finish the White Papers assigned to me. I'll try finishing atleast a couple before I could return to the blogspot.

Friday, March 17, 2006

Past, Present and Future of Applications

1980’s

XYZ Corp is a huge organization, the business requirements of this organization are spread across various processes. XYZ is facing the requirement of using Software to make their business process efficient. XYZ talks to developers and suggest that they build applications for each of their complex business process. The developers at this stage build applications for XYZ which will help XYZ in making their business process efficient. The problem with this was that the developers had to build each business process individually and the amount of effort required for this is a lot. Applications developed for different processes were developed using different technologies. Now, when the XYZ thinks about integration the Technology factor of the applications has a big disadvantage. The other constraint on these applications was that, certain developers chose not to make their source code available to the Customer. XYZ has to depend on the developer to make any changes to the application and XYZ were at the mercy of these developers to support these applications.

1990’s

XYZ Corp was looking for something reliable. The ERP companies came to the market with lots of promises. An ERP would contain all the applications required for any organization – this reduces the requirement of building separate applications for each business requirement. These applications would be built on a single platform – makes life so much easier! XYZ has gained control on the developers and restricts them to use only the ERP development framework to build the applications. The other major breakthrough which came in was, the ERP companies were willing to make available all the code which drives the various business processes – XYZ has the capability to customize the application and can make it work the way they want.

2000’s

The ERP industry has become a place where only big players can be present. All the major ERP players (Why did I say that? I could have said the two major players!) are focused on companies like XYZ Corp. The major players know for a fact that companies like XYZ can provide all the funds required for running the ERP industry. The annual support fee charged by the ERP players would give them the capability to grow in the market. Also companies like XYZ would move to the newer releases of ERP. XYZ expects these newer releases to make their life simpler, replace their Customizations with delivered Processes, whereby the number of staff (read: Customer staff) required in maintaining these Customizations can be reduced. But in reducing these Customizations they do not realize the fact that these applications are making their business rigid. Yes I concur with this quote which I took from Neil’s comment

“Yes, I like that term: “adaptation” rather than “customization”.

2010’s

The major players in the ERP industry have forgotten about the millions (or billions) of small and mid sized companies which could prove to be a bottomless well of fortune. The next generation of major ERP players are raising the bars rapidly. The Customers of interest for these ERP vendors are the smaller companies which face the same problem as what XYZ did in the 1980’s. Now these ERP vendors provide the smaller customers the applications required by them at a very low cost of ownership. They have achieved this by allowing multiple Customers to be placed on a single instance which will be hosted by these ERP companies. The data security is the responsibility of the ERP Company and they have achieved this by extending the Row-Level (Row-Level security allows user’s with proper rights to access their information) security concept of the previous decade. These ERP companies also allow Customizations to these applications by providing the Customer with the business process source-code. The Customer can make Customizations to the business processes and send the Customizations back to the ERP Company; they would host his application with Customizations at a slightly higher fee than the non-customized applications.

Although, the very essence of hosting Applications in a single instance started with the concept of all the application available to the Customers will be uniform. The decade saw the process evolve, the Processing Server (Application Server in the case of PeopleSoft) knew how exactly to present different Customizations to different Customer’s from a single instance. But at this stage these companies have found out ways of allowing multiple processes co-exist nevertheless still can’t find ways of making the Customizations at the Database Table (PeopleSoft Record) level co-exist.

The important aspect of this post is that 2010 has not started and there will be many more innovations which would drive 2010 to be what I expect it to be. And for the constraints that I’ve mentioned and omitted, the solution will be provided by a conglomeration of ideas (I mean not just my thoughts!). I’ve a couple of White Papers to write and should be some time before I can start posting again.

Sunday, March 12, 2006

Security Part 2

It was an awesome week! (I mean the last week) I went out trekking with my cousins. I was out of work for two weeks and I make sure that I do not go to the computer when I’m on a break. I’m back to work today and back blogging. I just finished preparing a presentation and started to hack PeopleSoft. Thought I would reveal some aspects of it here.

Firstly, PeopleSoft PeopleTools Team is great. I hacked into the first level (I’ll not precisely mention the route which I took, but it is all there in the post “Security”.) and found out the private key used by PeopleSoft to encrypt the password. My God! What a Key (It just made me feel what it said)! (As before, I’ll not give it out.) Then started doing a Google search for this particular weakness of PeopleSoft at the Development Environment in two-tier and this is what I found,

http://seclists.org/lists/bugtraq/2006/Feb/0080.html

I would like to quote a few points from the above mentioned link; PeopleSoft (ORACLE) has provided the following solution…

Vendor Solution: (Provided by Oracle)

In Enterprise PeopleTools 8.47 and above, PeopleTools provides Triple DES encryption (i.e 3DES) for increased data security. The PSCipher Utility has been enhanced to provide a command line utility to encrypt a variety of text values stored in various configuration files throughout your system. In addition, the PSCipher includes the following features:

  • Dynamic Key generation: The ability to generate unique encryption keys.
  • Version maintenance: The key file maintains a version history of all previous versions of the keys, which enables text previously encrypted to be encrypted or decrypted.


Important additional information:


It is important to provide proper scope to the usage of PSCipher.

PeopleSoft does NOT use PSCipher for the following encryption purposes:

PSCipher is NOT used for the encryption of ANY application data -

PSCipher is NOT used for the encryption of ANY data stored in the PeopleSoft DB.

ALL user passwords stored in the DB are hashed using the SHA-1 Secure Hash Algorithm

At last with PeopleTools 8.47 we have Dynamic Key generation and version maintenance. But still it can be hacked! How safe is safe? This time I’ll not tell how I’m planning to break this Dynamic Key security, but if you see closer you could probably see the weakness.

So, what is my purpose with hacking PeopleSoft? (I’ll not be unethical in retrieving sensitive information.) It is got to do with the Tools that I have; I just want to add the feature of PeopleSoft USER ID capability to the Tools. One of the Tools which I’ve built will actually run all the SQRs (in any given folder) in one shot, but it requires access id and password. This did not find much appreciation because Reports were to be run with specific user privileges, for this I wanted the users to create separate access ids with different grant permissions and then use the Tool. Users are against the concept of creating separate ids and want it to be done with PeopleSoft User id. This can only be achieved if I could decrypt the PeopleSoft encrypted password and use it to connect to the database (Initial connection to retrieve passwords can be done using connect id and password).

Although the other aspect which has to be considered for the SQR tool is that Application Server will have direct access to the SQRs but I’ll need the exact location of the files to be provided to the utility and most users will not have this information. Trying to work something out for this. If I dynamically accept SQR locations, user could very well provide a fake location and place a custom SQR with the SQR name that he has access to and write any SELECT or INSERT within it! Security not to be overlooked from my side.

I have lots more to write about (a post on Foreign Key usage in ERP….a post on removing Menus from PeopleSoft….). I would reserve these for sometime later in this week. Think it is going to be a hectic week, two-week work pending!

PS: Started learning Java. I tried coding a Message Box….oooppphhh…it sure is one coding language…then settled for printing in the console.

Thursday, March 02, 2006

PeopleCode to Java

A couple of my x-Team-members told me recently that they would be a part of the Team which would build the PeopleSoft-Oracle Fusion Upgrade (Note: I was never part of ORACLE Corporation and will never be.). I was exited about this and thought I would post some ideas that I would have implemented if I were to do this.

Most of the blogs that I’ve read recently point to one of the most crucial aspect of this Upgrade – Replacing PeopleCode with Java. I will post some thoughts of achieving this and then talk about the object level differences. The amazing thing about PeopleSoft upgrades is that they make life of an Upgrade Consultant to be a cake-walk.

The Fusion team must first concentrate on building an application which would parse the PeopleCode and convert them into Java equivalents. Make modifications to PeopleTools so that the compiler will actually compile Java instead of PeopleCode. Now, anybody who has written a small piece of code to parse a file will know for certain that the amount of time required to parse the file is going to take ages. Let me give you an example, I used to upgrade SQRs from older PS release to newer releases (7.5 to 8.8). PERSONAL_DATA was a pain – if an SQR had PERSONAL_DATA in old release, then in 8.8 it was not available to upgrade the SQR we had to replace PERSONAL_DATA with PERSON, ADDRESSES, NAMES and PERSDATAEFFDT depending on which fields were selected from PERSONAL_DATA, i.e. if in the old release NAME was selected from PERSONAL_DATA we had to replace it with NAMES and add two more criteria (NAME_TYPE = ‘PRI’ and EFFDT = current date). The code that I wrote had to check for so many different possibilities (Nobody follow standards!) and also take care of the documentation within the SQR ( “! Modified by ps-guy” – this kind of stuff for each modification). I think that is enough (I feel bored about it!), the point that I’m trying to make here is, when I finished this code I astonished by the amount of memory constraint on my machine and the amount of time it took, although I used a very efficient logic (This could also be attributed to the fact that I’m a VB programmer and not a Java geek – Too lazy to learn something, VB and PeopleSoft did not require any effort – Refer to the Title “Driven by …” – a small note here planning to change the Title to “Powered by PeopleSoft Motivated by MicroSoft”). The other important aspect of an application performing that job for you is that you do not have to do it anymore – Keep your machine busy rather than yourself. Although there will be huge amount of constraint on the time required for the application to complete this conversion of PC (PeopleCode) to Java it could save the effort.

But I think that ORACLE should plan this properly, Replacing Java compiler for PC compiler should be done with one more release of PeopleTools (say Tools 8.9, I heard that work for Tools 8.48 has started). Build PC-Java Converter and convert all the PS delivered PC for Application 8.9. Now the PS QA team (PS QA has a total strength of approximately 60 people for HR CORE compare this to 5 people on ORACLE side – Info based on yesterday’s discussion with my friends – PeopleSoft does not treat QA lightly) - will have their part to play, they will have to test all these conversions and make sure that they work as they used to. If any error is found then PC-Java team must review the code and try modifying the application to handle this scenario.

Once PC-Java is internally tested ORACLE could deliver it to the clients so that they can convert all their Customizations in PeopleCode to Java. The PC-Java application must allow the user to select all the PeopleCode that he wishes to convert (This will allow me to convert only the Customized PC and replacing the Non-Customized PC with the new delivered Java Code), thus reducing the amount of time required at the Client location. The application must allow the user to phase the conversion of PC to Java.

So will the PC-Java converter do the trick for us? It will to a certain extent, but still there is an issue of Customer training. We cannot ignore this factor as a Client would have recruited 100 Consultants with PC skills, they being his permanent employees and he cannot do away with them. For this ORACLE must take an initiative which would benefit them in the long run. ORACLE must provide Java training to all the Clients and Partners at their own expense. This would motivate the Clients in moving to Fusion (A benefit in the long run!).

I have solved the PC – Java puzzle to a certain extent (I strongly believe that this can be achieved!). How about the other objects? It still remains a mystery to me as to how ORACLE is planning to store the objects (Fields, Records, Pages etc…PS terms). I do have some idea on the approach that ORACLE will be taking and as always have a plan to clean things up – I’ll reserve that for a later post.

This is how I would handle Fusion Migration. If you have better ideas do let me know.

Wednesday, March 01, 2006

SQL

There is one question which keeps coming to my mind, Are my thoughts wise or rotten? The answer to which is still not known, but I use this blog to document all that which comes to my mind about an ERP product. Another important reason is that if someday I start building my ERP it should at least be satisfactory to myself.

The PSQuery is a very good application to develop your queries; but I’m not satisfied with it. When I want to create a query which will select all the employee names from person table with some criteria, the steps to be performed are:

New Query
Select PERSON from the list of tables.
Select NAME from PERSON table
Go to the criteria tab and provide my criteria

Simple isn’t it? A simpler solution would be, allowing me type “SELECT NAME FROM PS_PERSON WHERE blah-blah”. The SQL tab provided by PSQuery is non-editable. The reason is, once I build the query following PeopleSoft PSQuery standards then the application will know how to construct the SQL from my definition, this is non-geek. PeopleSoft answer to the non-geek community. This is where the geek community should be addressed, it would be wonderful if the SQL tab is editable and allows me to directly type the SQL and then constructing the Query objects (Query objects refers to PeopleTools data for each query) from my SQL statement.

Although the Application Designer has become an integral part of every Technical Consultant, the geek interface for this is still missing. I know how to create a table using SQL and Application Designer (I agree that most of us do know this), but wouldn’t it be better if I could do this,

New Record
From SQL
Type in the SQL – “CREATE….”
The Application Designer must parse this statement and create the field definition. (I know I’m missing a lot of pieces here…read on)
Then create the record definition

When the Application Designer tries to create the first field it would get the basic information (Field name, Field type and length) but there are other properties which will be needed by the Application Designer to complete the creation of field, it includes Labels, Formats, the option of creating translates in a few cases, description and chartfield. The Application Designer must prompt the user to provide these inputs which cannot be found in the SQL. If a Field name does not fulfill the criteria set by PeopleSoft for fieldnames it could prompt the user to change the fieldname and set the cursor on that field in the SQL. The record creation will include the complexity of index creation, but this should not be an issue if we follow the same pattern as prompting the user for key information or allowing him to type the “CREATE INDEX” SQL.

Sunday, February 26, 2006

Security

Is it easy to hack PeopleSoft? The answer to this question is not a simple ‘NO’. You could keep arguing on this, but let me give you some background on what I did, trying to achieve this and also provide a feature which any ERP must package along with its application.

I was into my sixth month as a PeopleSoft consultant and did not know much about PeopleSoft at this point I was reading a book on cryptanalysis (I don’t remember the name of the book, it was not any computer hacking book instead it gave a very good Mathematical analysis on the topic); my interest in hacking the PeopleSoft system could be attributed to this book. One place where I thought PeopleSoft was weak in its security offering was the Application Designer connected to the database in two-tier mode, PeopleSoft Peoplebooks has this to say about Application Designer in two-tier;

“A determined hacker could hack into the PeopleSoft system if he is provided with this.”

A first step here is to realize the simple fact that when we log on to the Application Designer we use PeopleSoft user id and password. PeopleSoft user id and password are stored in the database; PeopleSoft Application Designer must be able to establish a connection to the database before it could validate the user id and password – interesting! This is when I remembered the connect id and password, and the grant.sql in pshomes where I could set the connect id and password. The connect id and connect password are the access id and access password to the database with permissions to select from PSSTATUS, PSACCESSPRFL and PSOPRDEFN. This is where the Application Designer validates the PeopleSoft user id and retrieves the access id and password to log on to the database.

I have found the place from where I can retrieve the information but know it is encrypted (This is where you must be “determined hacker”). Application Designer has a C++ code which actually knows how to decrypt the passwords retrieved from the database (A determined hacker would be able to obtain the code by decompiling the application at this level, will also find himself behind bars for obtaining the source-code of a commercially licensed product). I realized that there is still another place, if I get the encryption logic with the key (once I get the encryption code, the key should be within the piece of code that was used for encryption.). PeopleSoft user profile creation page allows the user to enter a password and on saving a user profile it encrypts the password that we typed in. Had PeopleSoft been stupid enough (which they are absolutely not) they would have written the encryption code as a PeopleCode, but instead they provided a peoplecode built-in function “HASH” to encrypt the passwords (I would love to set a PeopleCode trace and know if the code for an inbuilt function is visible….I know for certainty that it would not be).

Can I stop my hacking desire here? No, because I remember something that was taught to me during my initial PeopleSoft Boot-Camp – we could encrypt the passwords using Data Mover (this is just an encrypt.dms which again uses a PeopleSoft inbuilt function) and cipher.bat file. Cipher.bat file interested me and made me think that I can do it now. But I outsourced this particular job to one of my friends and he told me that this bat file calls a number of java class files (I’m not certain about this and not sure whether we could decompile the class files – not a geek when it comes to programming languages). People who are interested can actually try something out here.

But if only you are a mathematical hacker you could hack the encrypted passwords and get the key used by PeopleSoft, if I do this I would probably land in RAND or behind bars (basically because PeopleSoft must be using the RSA and it has one private key which is built-in, RSA decryption is not a simple thing but we can get lots of sample data by creating our own user ids and passwords.) This is sure to take a lot of time but it is not without its benefits, read on to know how you could benefit out of this particular effort.

I have seen a lot of customers who blindly use people and peop1e to be connect id and password respectively in their PeopleSoft system (We should be through to get the encrypted passwords). PeopleSoft does provide the option of extended encryptions to Customer’s passwords, but this code (and algorithm) has to be developed by the Customer. Not even a single Customer who I came across has done this, reasons could be that you have to find a mathematician to develop the algorithm and then implement it. None of the service providers could take the pains of accomplishing this. If we could somehow obtain the PeopleSoft encryption key, we get access to almost all the PeopleSoft systems on planet Earth (remember we must have two-tier access). At the three-tier level I have a strong feeling that PeopleSoft is very secure.

So is there something that can be done about this? The solution is that an ERP should provide strong encryption algorithms (PeopleSoft already does this) along with this the Customer must be allowed to choose his private key which can only be used to decrypt the passwords. The Application Development environment (Application Designer in the case of PeopleSoft) must get the private key from the Customer and then use the inbuilt decryption algorithm to decrypt the password.

Thursday, February 23, 2006

Wink

Firstly, I apologize for the non-erp post but was not able to resist writing about the new software that I found on the web, WINK. This is an amazing software which allows you to create a Flash Presentation in no time and very user-friendly. Took me a couple of minutes to understand it; the user-forum dedicated for the application solves most of our problems. Although I’ve not used multiple call-outs on a single page, it can be done. Steps for that,

After we finish our recording, save the project as “.wnk”
Export the file to HTML
Open the folder containing the images for the HTML document.
Edit the required image with MSPAINT
Delete the existing thumb-nail for the image in WINK
Create a blank thumb-nail in its place
Copy-Paste the image file that we edited in step 4

I did find these steps from the user-forum, posted it here just to make sure that you don’t overlook it. This application is just great. I’ve created a flash presentation for Customization Analyzer (You can find it in the side-bar, it is not complete...will post the complete presentation soon). It makes the job of presentations so much easier, that I enjoyed doing this one. Did I forget something? What is the price of this application? It’s a freeware!

Almost forgot the attribution part. WINK is a product of DebugMode Software.

Tuesday, February 21, 2006

Version Control

This post is intended in documenting one of the most important aspects of MY ERP. This morning I saw my post and found a valuable suggestion from Brent Martin, a very valuable suggestion which I did overlook. Brent did give another link to look into before knowing the exact problem, Grey Sparling

As we all know Grey Sparling Solutions is an organization run by able x-PeopleSoft employees. I thought I better read it before I make any suggestions out here. The biggest challenge when it comes to version control in PeopleSoft’s case was this, PeopleTools release means changes to Source code at the Application Designer level and Application Server level. I think this should be very easy (as the source code is in text format), we could use any commercially available Version Control application for this purpose. Although this piece of version control requires third-party tools, it will only be internal as we will not package this to the Customer.


The biggest challenge to PeopleSoft is in tracking the object level changes. Chris Heller (refer to Grey Sparling link above) has mentioned that they achieve this by using SUBVERSION, i.e. a text format result for these changes on database objects. Once the SUBVERSION is available it should again be easy for us to establish version control. PeopleSoft provides a Compare process which allows the user to compare objects in the database and generate reports. But as I’ve always thought, one of the main draw-backs of the PeopleSoft Compare process is that it is not PeopleTools compatible. I did develop a couple of tools to help an Upgrade Consultant; Reapply Customization was one of them. Reapply Customization will compare, analyze and then reapply the customizations and I made it PeopleTools compatible. It will compare databases between different releases and then reapply customizations; all this was achieved only with the rel-scripts at my disposal. PeopleSoft could have made their Compare process PeopleTools independent (from any new release to any old release) this would have allowed us to generate the database object level compare report in text format.

Having said all this, the Compare process independent of Tools gets a tick for MY ERP. It is a feature which must be present.

Monday, February 20, 2006

MY ERP Architecture

Before I really start working on MY ERP I have another important step which is finalizing the Architecture for this product. This reminds me of a presentation which I made to the ‘Architects of Oracle Fusion’* (*this was how they were introduced to me) six months ago. The presentation was intended in giving the Architects an overview of PeopleSoft Architecture. The most striking feature of PeopleSoft’s architecture is their ‘Meta-Data Driven’ part. I was always fascinated by the fact that an ERP chose this approach (Whether they were the first? I can’t answer this question). The database companies today spend valuable amount of effort in making the data retrieval process of the database to be quick and efficient, PeopleSoft did not have to worry about the efficiency of data-retrieval as they chose the Meta-Data Driven approach. As an application package ERP’s should always worry about end-user efficiency. When you choose a Meta-Data approach, the system will certainly become more efficient with time as you will only be storing required information.

One of the first questions which I recall from my session is, “Wouldn’t storing all information in a database make it in-efficient?” And I said there is always a trade-off. Here is an example, a user designs a page using the application’s development environment (Application Designer incase of PeopleSoft), let us assume that the development environment is not meta-data driven. Now, the development environment will create a file for this page, the next time when the user wants to view the page, the development environment has to retrieve information from the file-server instead of a simple SQL (like: SELECT * FROM PSPNLFIELD WHERE blah-blah). The file-server version will definitely prove to be more inefficient. We can still make it efficient by adding the Application Server layer to our development environment, but there is no guarantee that this would prove to be more efficient.

The Meta-Data Driven approach is not without its disadvantage, customers will not relish the fact that half (not literally) of their database space is occupied by the application. As I said before there is always a trade-off. One thing is for certain I’ll surely not think about Batch Programs (Application Engine in PeopleSoft’s terms) residing in the database. They are better left as SQRs in a file-server. It was a great idea to allow users code their batch programs from the development environment, but I think they should have been left to the file server from where the development environment could have accessed them.

I think I’ll stay with the Meta-Data driven architecture with lots of tweaks to it. But before I do so I would just love to hear opinions on this. What do you think should I choose - an approach similar to PeopleSoft (The Title says it, “Driven by PeopleSoft….’) or is there something better?

Monday, February 13, 2006

My Mentor

He is very important to me just for the fact that he has insights. HE is my mentor. I asked him to go through my posts last week and guess what? He gave me a perfect solution to the trial roll-out of MY ERP’s coding interface. The solution goes as below,

We could call the drop-down coding interface to be the non-geek (functional) coding interface and the MY ERP’s complete code interface to be the geek (Technical) interface. This should keep the geeks and the non-geeks happy. But the basic idea of this ERP lies in eliminating the geeks (including me) and let the non-geeks build their requirements and test it. But it is still a long way to go. Planning to start my alpha version build as quickly as possible. Let you know how things proceed. I’m running out of time. Can somebody make the days run for another dozen hours?

Tuesday, February 07, 2006

MY ERP Upgrade!

An important aspect to consider when you set out to build an ERP will be presented to the reader. My experience with ERP industry has been upgrades probably that drove me here. No awards for guessing the content of this post, but I certainly wish to share some thoughts on how to achieve what we desire.

Today’s ERP industry is quickly becoming a legacy system. When I set out to build MY ERP my first priority would be to look at how well the application will provide the upgrades. The question which arises to the user is, “How can you estimate your upgrade when you have not built your first release?” (Appreciate your attention!). I plan to take the non-traditional route.

When my business process specialists build the functional pieces of MY ERP, I would like them to look into other competitors and ensure that we provide all the features provided by our competitors. Once the essential pieces of my applications architecture has been built, I want the people in my organization to come up with an upgrade path from one of our competitors to our application. This application upgrade path should be 75% more efficient than our competitors upgrade path from his old release to his new release. The most important trick here is to ensure that we do not loose any valuable Customer data. Our upgrade application must have conversion scripts which will ensure smooth migration of our client from one ERP segment to the other. As always the next section will give you an example, so that my vision does not get blurred through your eyes.

The Customer is running PeopleSoft and using the HRMS application. The Customer makes use of the HRMS product of PeopleSoft to store and manipulate his data. Our business process analysts will determine the exact location in our application where the PeopleSoft data can be used (Tedious job! But nevertheless it should not be left to the Customer). Then we will create conversion scripts to move the data from the PeopleSoft system to MY ERP. All features provided by PeopleSoft which do not exist in our system will be added to our system as Customizations. This particular script will be utilized by an upgrade Tool (Conversion Aide) which will parse the script and provide user interfaces that will ease the job of upgrade. If there are any Customizations made to the PeopleSoft system (Why did I put an ‘If’?) then the Conversion Aide would provide suggestions to the Upgrader to handle the Customizations. E.g.: If the Customer adds a field to a particular table the Conversion Aide will identify this to be a feature which would be lost during the upgrade and hence will provide the user information related to this. It will provide the user a segment of the Conversion Road Map, which includes a pictographic representation of “how and where” the data from the Customized table gets converted. Then he will be given the option of retaining or retiring the Customization ( The Customer will require some effort to look into why the Customization was done, so the Conversion Aide will also provide him the Customization plan which would be generated by the Conversion Aide to determine “Why were the Customizations made? What is the Customization?” This would not be possible without understanding the complete architecture of PeopleSoft and what are the details to look into?). If he wishes to retain the Customization he will be prompted with another interface to apply the Customization to MY ERP. The Conversion Aide will track the Customization made by the Customer and it will make the necessary changes to the conversion script. Now the Customer should be able to verify the validity of the changes made by the Tool, hence it will provide a Compare Interface to validate and edit the changes.

Most of the thoughts in the previous paragraph are targeted at Customer Modified objects, what about the Customer Added objects. Here I’ll concentrate on the other aspect of Customization, the first step in handling Customer added objects is to perform a check on, why the customization was done? The Conversion Aide will start with this simple question on a user interface which will be indexed. Now when the Customer types in the reason for the Customization the Tool will search and retrieve the business process available within MY ERP for the requirement. If the Customer is satisfied with the business process provided by MY ERP then the Conversion Aide will assist him to generate the scripts required for the conversion. Else the Customer Added object from PeopleSoft will get converted into Customer Added object in MY ERP.

I certainly understand that this will require lot of effort from understanding the business process and architecture of two systems, but it will certainly save a lot of time for the Customer and increase his ROI. It will also gear us up for our own upgrade. I’ve not spoken in length about the Code section (Look closely I’ve only considered objects!). I’m an optimist when it comes to me believing the fact that code modifications can also be automated (at least to a certain extent as to ease the user effort).

“Why should I migrate?” – This will be the first question asked by the Customer when you reach him, so it’s always better that we do concentrate hard on making MY ERP a better product than what the market offers and then allow the user to migrate to the better product in a better way!

Monday, February 06, 2006

Vision Statement for MY ERP

The time is ripe for me to document all that I think of, so the best place where I can do this is in a blog. If you had been a frequent visitor to my posts you will know my reasons to start this blog; to create an ERP which will be way superior to the existing ones. MY ERP -- This is where my journey began and I wish to take it somewhere.

The most essential aspect of my application is that it will not require any coding changes from the Customer end. I wish to pass all the coding arguments which the Customer would normally customize to the Properties page of each object which he creates. When a Customer intends to change the logic which drives a particular page, the application will provide the Customer a user interface where he can actually make his Customizations.

The problem with all this documentation is that I’ll have to give proper examples to ensure that I’ll understand my thoughts after a while; E.g.: I want to test my emplid before I save it, the application might provide a simple Validation Check to ensure that I do not enter any special characters to the column. I being the Customer would like to add a criterion as to check whether the number added is according to my business requirements. Now the application should provide us with the option of adding the Extra Validations to the column without opening the code; that is I should be able to open the property of the column emplid and say, “Add Criterion” à Set Field Type Column to “Type” à Select “<>” à Select “Number” à Set Action to “Error”. Then for the next criteria I say the following to the application “Add Criterion” à Set Field Type Column to “Value” à Select “Greater than Equal to” (This could be a drop down box which should also allow me to type “>=”) à and provide a value in the next column as “5000” à Set Action to “Error” (This could also point to another condition or another Set of processes which the Customer wishes to perform. E.g.: The Customer would like to provide an auto-generate option to the user which will need a message box to obtain user feedback followed by a set of calculations to determine the emplid. These will be called processes and can be added just like Criteria). Now the application should add the following code to the columns code section as follows,

If emplid.type <> “Number” then
Error
End if
If emplid.value => 5000 then
Error
End if

-- I hate the system constraining the user with the requirement of learning the syntax to use applications code section.

I think I have taken the simplest situation in Customizations, but there will be more complex customer requirements which we as developers should not ignore. E.g.: The Customer is not satisfied with the Validation Check provided by the application and prefers to comment the entire logic provided by the application and add his own criteria and processes. So we should split each and every piece of code that we put on an object into functions and allow the user to deselect the functions and create the ones that he requires. There will be instances where the Customer would choose to add some criterion at a specific point in the logic provided by the application, this should be achieved by providing our logic to the Customer in the same fashion which he will be using to create the logic. That is if the application code is also structured in the property of the object, the Customer can think about inserting his logic at any specific point in delivered code.

I totally understand that there are millions of other situations which will arise and prove to be a complication to the system but with proper specifications set to build the system developers should be able to foresee all of these (I trust the developers and I’m an optimist – at least to MY ideas). The initial versions of the applications should also provide the Customer with an editor to help him code the requirements manually, just to ensure we do not get complaints about not being able to customize our applications. We should then analyze the segments where the Customer has chosen manual code customizations and improve our product.
Although I work as a Consultant currently, I strongly believe that developers responsible for building the applications should leave no room for the Consultants to form the middle layer between the application and the Customer, even if it leaves me without a job.

Before I end this post I want to say something to the people who have read this:
If you think that this post is just a dream then you are a pessimist (According to me).
If you think it to be a Vision, I tag you as an optimist.

I belong to the pessimist sector when it comes to Oracle’s DREAM (not VISION as I’m not an optimist in this case) of building the Fusion (Coincidence “Frankenstein” also starts with “F”) with the best pieces (“Parts” also starts with “P”) from PeopleSoft, Siebel and Oracle.

Tuesday, January 31, 2006

What I want in Oracle Fusion

PeopleSoft Internet Architecture brought the Internet “Look and Feel” to our application, because of which I always compare the application front-end to the best websites that I come across in the internet. Few of these websites need not be the best but still they are the once that I frequent. I want my application to match these websites. In this post I’ll list out certain features which I badly need in my application.

First, I check my emails regularly on Yahoo. I can do it in the following ways,

  1. Go to http://www.yahoo.com/ and then click the “mail” option available on that webpage. After which I sign on to my email account.
  2. Go to http://www.google.com/ and search for “yahoo mail” and then reach the desired webpage and log on to my account.
  3. After I reach http://mail.yahoo.com/ in any of the above mentioned methods I can add it to “Favorites”. When I need access to the webpage the next time I can reach it by using my Favorites.
  4. Go to http://mail.yahoo.com/ and sign on to my account.


Option 1 will be the most undesirable option as it involves these disadvantages,

1. I have to wait for the http://www.yahoo.com/ page to open on my system before I can choose the “mail” option. Then wait for the Mail page to open.

2. It involves two steps to be performed by the end-user, Step 1 to type the url in the address bar and Step 2 to Click the “Mail” option

Option 2 should have been the worst nightmare to imagine (I’m not against Search Engines, kindly read on…), but I keep it lower than Option 1 because there could be instances where I forget the address of both the home page and the intended page, our Search Engines come in handy when this happens. PeopleSoft did provide you this option with the Verity Search Engine.

Option 3 is good but not the “best” (According to me!), because it is only a while before “My Favorites” gets clogged making it unreadable and unusable. PeopleSoft provides this option. I want them to look at the next.

Option 4 is the “best” option available (According to me! I insist this because applications should cater to the needs and requirements of all users). You can achieve this in PeopleSoft if you remember a variety of components that form the building blocks of a PeopleSoft url (Not very attractive!). I see two ways in which this can be implemented.

  1. When we log on to PeopleSoft application we see a standard DHTML Tag containing the links to “Home” and “Sign Out” options. PeopleSoft can add an address box to this along with a “Go” button and let the user type the address of the page that he wants to visit. The user can type in “LEV_REQUEST” and access his Leave Request page. Fortunately the PNLGRPNAME field is unique. PeopleSoft can do this by a combination of SQLEXEC and a simple transfer function on the Field Change event of the button “Go”. The page will not load if the user does not have proper permissions to access the component.

  1. The other option is to enable our application server to accept a parameter from the address url and manipulate on it to determine the page intended by the user. Eg: To access leave request component (LEV_REQUEST), the user types in the url as https://lev_request.my.peoplesoft.com/, where the standard url used by the user to access the application is https:\\my.peoplesoft.com and the component which he intends to access is LEV_REQUEST. I’m not certain about this option being viable as I’ve NEVER done network programming neither do I completely understand the way the Web Server and App Server function. I only believe that it is possible.

Am I done? No not yet, there is one more function which I desire, “Remember my Password” option. Although my password manager can do this, it would be of great help if the Application can provide me with this option. I’m certain that the “classical” Security experts will not agree with this, but this is MY requirement.

If I ever succeed building an ERP (MY ERP), I’ll ensure these features are packaged with it.


Tuesday, January 24, 2006

Customization Analyzer Purpose Clarified

Introduction

The PeopleSoft Compare process delivered by PeopleSoft provides a reliable and efficient method to compare the online objects in PeopleSoft database. The results of the Compare are provided to the end-user in .PRT format (prior PeopleTools 8.46, from 8.46 the Compare process results in generation of .XLS and .XML files). The output file obtained from PeopleSoft Compare is often cumbersome and difficult to understand. The output file lists the objects in alphabetical order rather than the desired Classification of objects into Customer Added objects, Customer Modified Objects etc. The output file created will only contain one object per file and the classification of objects (Custom Added, Custom Modified…) is not readily recognizable to the user. The report generated by this utility helps us overcome all these pit-falls in the PeopleSoft Compare process. In addition the Customer can add any additional documentation to each of his Customizations. A sample output for the utility is available in the following link,

http://www.fileul.com/view.php?file=17Rgi8

This document outlines the benefits of the Customization Analyzer utility. The document is segmented into three categories depending on the application area of the utility.

Ø Customization Tracking
Ø PeopleSoft Upgrade
Ø PeopleSoft Patch Application


Ø Customization Tracking

The utility can be used to track and document all the customizations made to online PeopleSoft objects. The Customer can document all the Customizations made to his PeopleSoft system. The report generated by the utility is in a user friendly format. The Customer can review all his Customizations from a single Excel document. All the functional documentation can be added to the report, which will help in decision making for an upgrade to a newer release. It facilitates the process of identifying Customizations which are not required i.e. from the report generated the Customer can obtain all the objects created by him where he will be able to identify Customizations which are no longer required in the production.

Ø PeopleSoft Upgrade

The utility aids the process of Upgrade Assessment where the effort required for the upgrade is estimated based on the number of Customizations available on the Customer’s Production environment. The utility also provides a Gap Report which identifies all the Obsolete Modified Objects i.e. the objects which were modified by the Customer in an older release of PeopleSoft that were deleted by PeopleSoft in the new release. The Gap Report aids the Functional Consultants in identifying the Gaps that have occurred between the PeopleSoft releases. The utility helps the Upgrader to delete all the Obsolete Modified Objects by toggling the “Take Action” flag in the PeopleSoft Database.


Ø PeopleSoft Patch Application

The PeopleSoft process for application of patch projects to the production environment requires the Customer to apply patches to Demo instance initially and then Compare and Copy to the production. In this scenario it will be useful to document all the objects affected by the application of patches. The Customer has the flexibility to document all Customizations affected by the application of patches and he can also document the objects omitted (objects that were delivered with the patch and not applied to the Production) by him in his patch application.

Tuesday, January 17, 2006

Want to be an Enrepreneur? Disclaimer: I'm just advising and will not take responsibilty for anybody's failure

Its been a year since I started working and my Enrepreneur instinct has been growing rapidly. But I know for certain that instincts do not lead you anywhere. I've hated working under somebody. I dedicate this post to the millions of wanna-be Enrepreneur in my country ( Pardon me for being country specific, you will know the reason at the end. Disclaimer: Could be useful in other countries too!!!!!).

*** under-grads -- refers to students pursuing their under-grads

The software industry has taken a shift in its course compared to the past decade. Think about an induvidual wanting to start a software services firm in the 90's. He could have been successful with some hard work and luck. But the situation is different now. If you are a start-up services company, you might probably loose the battle (Disclaimer: Unless you know somebody like Larry Ellison!!!!). So the way to go about it is to start a Product based company. Now if you succeed in making a good product, it doesn't neccessarily mean you can sit back and relax. You should have been bruised by the time you accomplish your goal of building a product (I mean financially!! Disclaimer: Not if you are Bill Gates.). Then waiting for the people in the market to come to you and purchase your product (could be a lot more painful).

Now let me analyze the situation in my country. The under-graduate curriculum is not very punishing in my country. A large number of my friends who left to the USofA tell me that their post-graduation requires them to do a lot more work in terms of assignments(Some kind of Home work which will prevent you from playing your favorite Computer games like Max Payne, Mafia, COD etc....). But even after so much more (comparitive) effort required to finish their assignments all these buddies of mine work part-time!!!!! It just stuns me, may be I could have worked full-time in an organization during my under-graduate program. This is the energy which all the budding Entrepreneur's must tap. I can obviously hire a few of these under-grads to develop a product for me. Ohh Ohhh!!! then what about the knowledge that comes with experience!!! I did build a couple of products without knowing the basics of programming (Claim: The code is way too efficient). I did this only with the help of "Google Search"(- I cannot live a single day without it!!!). This should be our target as budding Entrepreneurs tap the under-grads when they have a lot of energy and can be hired at dirt rates. A service based company cannot do this as the CLIENTS of that organization will start doubting the capability of the organization!!!!(Whatever that means)

The next consideration is that Entrepreneurs do not want under-grads with dirt IQ(Although they need them at dirt rates!!!). In this country there are other considerations too, I can stick a poster for Job vacancy outside my organization, but our under-grads will not respond properly (Number of reasons for this: He thinks "Why should I search for a job?", "What if I don't get a job?"...). This is not a failure to our announcement. Instead, we will recieve a lot of applications from people who have completed their grads and know the answer for all the questions in an under-grads mind. When we recieve these applications be sure to close you shop and start writing down the reasons for your failure.

Do not Panic!!!!!! I have a suggestion to help you tackle this problem. Fortunaltely all the under-grads are exited about getting a job in their "Campus Recruitment" program. We can use this as an oppurtunity to conduct our "On-Campus Recruitment For Part-Time Jobs". Now we get under-grads at dirt rates and as a complement they do not have a dirt IQ.

Once successful this program will only improve the overall economy of our country. Students can start supporting themselves, Parents can start thinking about their Dream house.

No Rights Reseved: I do not want to reserve any rights to this post. Kindly make full use of the advice presented and make our country a better place to live in. ;)