Primavera P6 and E-Business Suite

Today I received an alert about the Project Portfolio Integration Pack for Primavera P6 and E-Business Suite.

Here is the link to the Data Sheet:
http://www.oracle.com/applications/aia-pip-fin-project-mgmt-p6-ebs-data-sheet.pdf
http://www.oracle.com/ocom/groups/public/@ocompublic/documents/webcontent/039439.pdf

I am excited to see the integration scenarios we identified several year back now come true.

It looks like the solution working for both Financial and Workplan, just like the feature Oracle Projects had provided for several years with Microsoft Project. However, the integration with Primavera is more flexible. You can choose to create projects in either directions.

Also, there are bi-directional integration between project budgets.

Siebel Data Security 2

Three types of data security in Siebel:

1. Restrict the access to the data only to the owner.
2. Assign a team to the records. Allow the team members view the records
3. Assign an organization to the records.

For case 1 ad 2, you can grant the access to a user or to a position.

A position is a job title associated with an organization. A manager position can have sub-ordinate positions to form a manager hierarchy. A position can report to a single position.

A position in Siebel is almost the same as the position in E-Business Suite HR. However, they are created for different purposes. The position in EBS HR is mainly for head count budgeting and many EBS HR apps deployments do not use the feature. Using position for security has a major benefit is to keep the data security rule independent from the individuals.

Siebel Data Security 1

Siebel apps uses assigning "responsibility" and "position" to control the secure access for users.

  • Responsibilities determines a collection of views the user can see.
  • Position determines what data the user can access. Position is the base for row security. A position represents an assigned job title within an organization. It determines a set of records the user can see. An example is North America VP of Sales.
The definition of Responsibility is very similar to the "Responsibility" in E-Business Suite (EBS). It is the base for "function security" using the E-Business Suite term. However, EBS responsibility may determine "data security". Each responsibility can be restricted to access only a single operating unit.

This is considered a Siebel interview question.

What is the difference between globalization and localization?

I am talking about their meanings in the software business.

Localization (L10n) - You customize and translate the software for a specific area or a specific market. Localization may include customized code changes for supporting specific local requirements. A software sometimes needs to be localized for entering into the local market and complying with the local legislation. Localization does not require any major software re-architecture. The result of localization is to have a local version of the software that can address the specific needs of a locale that is not the same locale which the original software was developed under. Localization increases the maintenance costs of the software. When a new feature is added or the existing functionality is modified, the localization may become broken and changes will need to be done to local version.

Globalization (G11n) - Globalization is about the process of designing and developing the software with the global market in mind and make the software can be configured to support the different country's requirements. The goal of globalization is to eliminate customization or localization if possible. Globalization may require a software re-architecture. The cost of globalization is that the software itself may become more complex and the overhead added to the software will impacts all the customers even those who do not use any global feature.

Oracle Acquires Primavera - A good analysis from Forrester Research

Ray has provided an excellent analysis on the Oracle's Primavera Acquisition.

http://blogs.forrester.com/appdev/2008/10/oracle-acquires.html

He describes the key issues that are totally aligned with my understanding:

  • The rapid market consolidation had made it difficult for niche players like Primavera to break into enterprise sales.
  • Oracle’s thin PPM offering made it difficult for the vendor to venture beyond the controller’s or cost account manager’s office.
More precisely, there are three groups:

  • Field personnel who are using the Primavera or any project scheduling tool for managing their projects. Some tried to standardize the process and start building PMO.
  • Cost Management or Project Cost Control group. These are not accountants. They are cost engineers who are very familiar with the cost breakdown and knowing how to estimate the costs.
  • Project Accountants. They could be people assigned from the financial department working on specific projects. They may also be the one who prepare the invoices to customers.

The industry is hunger to have an integrated solutions and unfortunately no single vendor can provide a one stop shop with a prepackaged solution.

I think that a successful solution should also include a web based project analytics tool. It would be the key for an integrated enterprise project management solution. The project analytics application will consolidate the project information from various subsystems and provide a single project management dashboard that allows the deploying company can pull the project information at different stage of project lifecycle with different level of detail information that are required for different users.

Oracle Buys Primavera

Primavera is a leading project management tool. Today Oracle announced that it acquires Primavera.

http://www.oracle.com/us/corporate/press/017594_EN.doc

Primavera has a very popular project scheduling software. Primavera purchase gives Oracle a very good position to the industries like engineering and construction, aerospace and defense, professional services, etc.

In the past few years, the project management software has moving toward, or at least, vendors and analysts are pushing toward, a project portfolio management (PPM) solution. The idea is that an enterprise project management suite that consists of project costing, project billing, project cost management, project scheduling, project collaboration, project resource management, and project portfolio management.

There are several drivers leading us to this strategy and position:

1. Project oriented organizations are adopting the central Project Management Office or Program Management Office (PMO), which establishes the management standards and provides supports for project managers and program managers. An integrated, enterprise level, project management solution is required for supporting the needs of PMO.

2. In the project management software area, many vendors, especially Primavera, has been educating and demostrating the application of integrating the project scheduling with project cost management via earned value analysis. It is now a common expectation that the project software not only supports the scheduling needs of individual project managers, but also provides built-in functionality to track all types of project costs throughout the project lifecycle.

3. Professional Services Automation. Beyond the basic billing and financial related processing needs, the professional service organizations are looking for a resource management solution that can help them to optimize resources. They are also interested in automating its project management process and improve its workforce collaboration among the project team members and the key project stackholders. The integrated colaborative solution includes document and file management, deliverable tracking, and change management.

4. Web based project management tool. The web makes the sharing of project management information very easy. The web based project management not just allow the user to share the information, it also allows the project managers to manage projects, and tracking project progress.

5. IT are asked to justify their investments. Project portfolio management solution which applies the finanical porfolio management theory to analyze and justify the company's project investment arised.

The opportunities and demands are out there, however, it was not easy for ERP to extend its support from a project costing and billing based solution to cover the enterprise project management. It is not about the software but about the mind set and about customer's deployment environment. Many organizations may not even standardize the project management software solution. The project world is actually divided into different sub groups.

There are people who are close with the project execution and would like to have weekly or daily project status and progress traking. There are people who just view project with a somewhat high level with an external or customer facing information. There are again another set of people treat project are high level financial buckets for tracking the resource and expense and may not require any level of breakdown. The different sub groups have different project information needs and required different structure of the data. They may also claim the ownership of their own view and their own data.

With the purchase of Primavera, Oracle now is in a very good position to remove the problems. It would be very interesting to watch how the industry evolves.

Identifying the language used in the software

The software you uses may be used by people using other language. A software may be designed to support multiple languages.

One scenario is that the software may be designed to support multiple languages with different versions. You install the version of the software available in a language. If you want to use the software in a different language, you need to install a different version.

A software may allow different user who install it to use a different language, but while you are installing, you need to specify which language you are using. A variation to this scenario is that you can switch the language you want to use even after installation. However, you can only use one language at a time.

Some software allows multiple users and each user can have a different language preference. These users may store their own data in different languages. The software can display different language based on user preference and store the data in different languages. An extreme of this scenario is that the data created by a user can be stored in a language but can be displayed to another user in different language.

In all the above cases, one of the common requirement is to allow the user to specify a language.

How does the language is identified? How does the user tell the system which language they are using?

The standard way and the most common way the software vendors use nowaday is Locale.

It is used by Linux. You can see the Locale definition in Linux documentation.

Language codes are usually taken from the list of two-letter codes defined in ISO-639-1, country codes from the two-letter codes defined in ISO-3166-1.

It is used in Java. You can see Java Locale documentation. It basically follows the same rule. ISO Language can be used independently. Country is not required but can be used to further qualify the language. For example, the 2 letter code for Chinese is zh. To differentiate the classic Chinese and the simplified Chinese, the Locale can be zh-CN and zh-TW.

The standards are defined in RFC 1766.

Oracle Database is a little bit different. It supports NLS much earlier then then the standard was defined. Oracle has its own language and territory codes. A list of Oracle language code and territory can be found in Oracle documentation.

Oracle actually provides a Locale mapping utility to convert the language code and territory code to ISO standard codes.


.

PeopleSoft Tree Manager 8: Skip Level Tree

The PeopleSoft Tree Manager allows you to create a tree with some of the node skipping levels. Skipping level means that the parent child relationships are not strictly validated by the level the node belong to.

The Tree Levels are created as part of the tree instance, not as part of the tree structure. That is the tree levels can change from a tree version to the other version. The same Tree Name and SETID may have different level definitions.

You can add levels before you build the tree (by adding tree nodes to its parent nodes) or add levels during you build the tree.

When you build a tree , you can turn the display option "Display Level" on in order to see the levels.

You can then see the name of level for the tree node that you created or added to the tree. The level is default based on the level of the tree you add. You can change the " level" with any level below the assigned level and the tree manager will change the indentation for displaying theode tree.

Skipping level is a powerful feature for reporting. When viewing the data, the expectation is to not see the dummy nodes. You should be able to see the skip level nodes as the immediate parent from the parent node.

A typical implementation to support the skip level hierarchy is to store the hierarchies as a parent/child relationship. I guess that this is how PeopleSoft Tree Manager supports it. You should not see a dummy node and see the summary of the child nodes to the dummy node.

PeopleSoft Tree Manager 7: The secret of the PSTREENODE table

The key table in the PeopleSoft Tree Manager data model is the PSTREENODE table.

The first three columns are the composite key of the table.

  • TREE_NAME
  • SETID
  • EFFDT

This table looks like a normal parent child self-join table.
  • TREE_NODE_NUM
  • TREE_NODE
  • PARENT_NODE_NUM
  • PARENT_NODE_NAME

It seems nothing special. However, if you take a closer look, you will find that PeopleSoft Tree Manager have built the intelligence into the TREE_NODE_NUM number generation.

Accounting to the posting from Grey Sparling PeopleSoft Expert's Corner, you can directly report at a given parent node without using a flatten hierarchy table or use connect-by query. PeopeSoft accomplishes this by adding the TREE_NODE_NUM_END column to the PSTREENODE table. This column helps you to get all children of a given node. The TREE_NODE_NUM and TREE_NODE_NUM_END forms the range of the TREE_NODE_NUM that can group all child nodes within the branch.

If your department tree is a winter tree, I can list all the department under a given parent department in a single SQL:

1 select d.setid, d.deptid, d.Descr
2 from ps_Dept_tbl d
3 , pstreenode t1
4 , pstreenode t2
5 where t1.tree_name = 'DEPT_SECURITY'
6 and t2.tree_name = t1.tree_name
7 and t1.SETID = 'FEDPS'
8 and t2.SETID = t1.SETID
9 and d.SETID = t1.SETID
10 and t1.EFFDT = TO_DATE('01-01-1980', 'DD-MM-RRRR')
11 and t2.EFFDT = t1.EFFDT
12 and t1.tree_node = 'FRG'
13 and t2.tree_node_num between t1.tree_node_num and t1.tree_node_num_end
14* and t2.tree_node = d.deptid

This query will return all child departments under the parent department 'FRG'.

If the department tree is a summer tree, we can just join the PSTREELEAF. It is also mentioned in Grey Sparling's blog.

Oracle EBS - Flexfield: How to find the Flexfield available for a table?

I would like to extend the Oracle E-Business Suite Applications to capture additional attribute.

I know the name of the table I would like to extend. How do I find the descriptive Felxfield?

Answers:

1. Go to the Application Developer responsibility
2. Flexfield -> Descriptive -> Register
3. Enter Query mode: Use View -> QBE -> Enter
4. You can find a list of Flexfields

It can also tell you which columns are available to be used as Flexfield columns.


PeopleSoft Tree Manager 6: What are the names of the Tree tables?

The PEOPLESOFT blog provides a list of tables and their descriptions:

PSTREEDEFN: Stores valid tree definitions. Updated by the Tree Manager. Non English stored in PSTREEDEFNLANG.

PSTREENODE: Contains one entry per tree node / deptid. Defines relationships between nodes. Updated by the Tree Manager.

PSTREEBRANCH: Stores tree branches.

PSTREESTRCT: Defines the different records and fields that control the tree attributes. Updated by the Tree Manager.

PSTREELEVEL: Validation table for tree levels. Updated by Tree Manager.

PS_ACCESS_GRP_TBL: Stores defined Access Groups. Used for Query Security

PSTREESELCTL: Control table for PSTREESELECT## tables. Also: PSTREESELNUM.

PSTREESELECT: 01-30 Stores tree leaf information (one table for every possible length of a chart field 1-30 characters). Work table for optimization purposes.

PSTREELEAF:Contains ranges of field values that are associated with a node of a tree.

PSTREEPROMPT (Specific to 8.x and up only): Stores similar information as PSTREEDEFN and is needed for trees to be viewed through PIA

PeopleSoft Tree Manager 5: Winter Trees, Summer Tree, and Spring Trees

PeopleSoft application has a foundation called Tree Manager. It is the reusable component and design pattern widely used in PeopleSoft applications.

It has an interesting notions of Winter Tree, Summer Tree, and Spring Tree.

  • A winter tree uses the detail value table for nodes and has no leaves.
  • A summer tree uses the PS_TREE_NODE table for nodes and a detail value table for leaves.
  • A spring tree is a hybrid between a node-only winter tree and a summer tree. A spring tree uses a detail value table for the nodes as well as the leaves.
The differentiation of whether the tree has leaves or not is important because it determines how the department or individual field values are attached to the tree. In a winter tree, every single node has a department associated with it. In other word, each node represents a department. In a summer tree, nodes represent the grouping of the departments and each node does not represent a specific department.

PeopleSoft Tree Manager 4: Tree Structure

A tree structure identifies fields that the tree is built on
A tree's Structure defines the link between the Tree nodes and the underlying tables the tree required.

PeopleSoft delivered one tree structure for each chartfield.

PeopleSoft Tree Manager 3: Terminology

Tree: A tree has a hierarchical structure. A tree is like the organization chart. It is visual representation of a set of values that are related to each other for the purpose of summarizing and security.

Node: The element within the tree. A tree is made up of nodes.

Root Node: Each tree has one and only one root node. A root node is the first node in the tree. The highest level for rollup.

Parent Node: It is any node has at least a child node. A root node is always a parent node unless there is no other node in the tree.

Child Node: All nodes are child node except the root node.

Sibling: Sibling are nodes at the same level.

Detail Values: Detail Values are always at the bottom of the tree. The tree can be used t summarize the data associated with the detail values. The detail values can be assigned to the tree nodes using the range of values. You can also assign individual values.

Levels: logical grouping of nodes. for example, State, country and regions. Tree manager can enforce the integrity. The use of level is not required. However, once you decided that you are not using levels, you cannot add levels back. When you create the tree by adding nodes to the tree, you add levels from top down.

Tree Structure: it defines which pages, record, and fields are used

Relationship: A relationship within a tree is a parent child relationship. A relationship includes two node, the one closer to the root node is the parent node and the other one is the child node.

PeopleSoft Tree Manager 2: Tree and Date Effectivity

A tree always has a tree name. Some trees can have an effective date. It means that the entire tree becomes effective since that date. If two trees have the same name but different effective date, one tree will still be effective until the other tree becomes effective. As my previous posting pointed, PeopleSoft effective date support does not have the end date. A tree becomes ineffective if another effective tree with the same name exists.

In PeopleSoft Tree Manager, the individual relationships are NOT effective dated. Changes to the tree will be considered effective since the tree effective date.

The effective date at the tree level makes the tree can have multiple versions, each is effective for a period of time. If a historical image of the change needs to be kept, each change will need to be made in a copied of the entire tree even only a small branch of tree is changed.

Since Tree can be effective dated, you can specify new department, reporting relationships, or organization structures in advance and have those changes take effect automatically. By creating and using tree with the past, present, and future effective dates, PeopleSoft allows users to always report on the current and historical data.

PeopleSoft Tree Manager 1

PeopleSoft has the Tree Manager as a separate tool. It is part of the PeopleTool. When we go back to the day while PeopleSoft applications was a competing ERP apps with Oracle E-Business suite. PeopleTool Tree Manager is one of the key strength of PoepleSoft apps and the feature is used to compete against Oracle EBS. It demos very well.

Trees defined how the system groups values for reporting. It organizes and maintains the Chartfield values.

In PeopleSoft Financials, tree are used in consolidation and to organize the Chartfield values . In HR, trees are used in department security.

Tree Manager is a sophistic tool from PeopleSoft apps.

Hierarchy Manager in business applications

Manage a hierarchy is common seen in a business application. A hierarchy is a nature way to organize information. The file system organize the files by the tree like hierarchical structure. The Internet portal like Yahoo! started their business by providing the data structure in a tree like directory.

In business applications, the hierarchy is built for

  • summarizing
  • allocating
  • defaulting
  • looking up the business rules
Modeling the hierarchy in the data model and providing the tool to manage the hierarchy are thus required.

Here are some of commonly seen hierarchies within the enterprise applications:
  • organization hierarchy
  • GL account hierarchy
  • product hierarchy
  • calendar hierarchy
  • position/supervisor hierarchy
  • BOM
  • pricing rule
  • customer hierarchy
  • xx category hierarchy
It is worth to define common design patterns or approaches to handle this subject. It is actually possible to build the common tools or data model to support hierarchy.

A code or design reviewer's responsibility

As part of development process, we assign code and design reviewers into the projects. We want to ensure that the review can help improving the overall quality.

However, sometime I feel people misunderstand the review with the approval authority and mix the review with their interests or the awareness of the projects.

A code reviewer and design reviewer holds a similar responsibility as the code and design writer. Once the reviewer finishes the review, and express the reviewers' inputs. The reviewer provides their contribution.

The reviewers should have deliverables. It is part of the job of the code or design review to provide the inputs and feedback to the completed draft design or code. The input should be a written format if possible.

Their deliverables should have a deadline, just like any other task. A code review and a design review, just like the design and coding themselves, takes time and efforts. A code review and a design review should be considered as a task placed into the development schedule and on the resource plan to reduce the resource's availability.

We need to understand that once we put a developer into review. We are expecting the developer to produce an output from the review. We also assume that the developer may not be able to continue full time in coding and thus the review work need to prioritize among the other tasks, if there is a schedule conflict.

Do we put more authority to a developer on the design or coding when we assign them as reviewers? Does a reviewer of the design or code have a higher "power" over the result of the design? In my opinion, it does not have to be. A reviewer provides a 2nd eye on the work and contribute to the process. Whether a review has the authority will depend on whether the reviewer is also an "approver".

A project has a owner or a sponsor who is the holding the authority but may not be the project manager. I think that a design document or a program also have such as "owner", who are typically the developer manager who are responsibility for the delivery from his or her department. The approver or the person who has the authority need to make sure that he or his team can produce the design and code with quality. The reviewer should be seen as the helper to help the manager to reach the goal.

The owner should proactively think "who can help me success?", "who can help us review so we won't make mistake?", "who has the skills and knowledge that can supplement my team's work?". Assigning the proper reviewers into the design and coding becomes a tool for the owner and is the responsibility of the owner.

This post is sent from Google Docs.

Organization Model in ERP (2)

Credit Control Area for credit management

SAP applications allows the user to manage the customer credit limits by credit control area.

"A credit control area is an organizational unit for specifying and controlling customer credit limits. A credit control area can include one or more company codes. It is not possible to divide a company code into several credit control areas."

The Credit Control Area provide the flexiblity to to users when they define the credit limits. When the customer can be used in multiple company codes, the user does not have to enter the the credit limit for each company code. The customer credit limits can be managed at a higher level.

I do not know if E-Business Suite have a similar business entity in its organization model. The customer (credit) profiles are entered globally.