About Primavera P6 Jobs, P6 Job Server and P6 Services.jar
In Primavera P6, many of the functionality requires time to complete, say more than 8 seconds. Oracle Primavera predefined these types of long-running functionality as a job which runs in the background. For example, copy and paste Projects. The time required to copy, and paste projects is depending on the number of projects, project size etc., so performing this task as a background job is an efficient method so the user doesn’t need to wait till the paste operation completes. Below I have mentioned some of the Primavera jobs
- Schedule a project(‘s)
- Summarize a project or EPS
- Apply Actuals
- Export an XER file
- Import a Project from XML
- Export a Project to an XML
- Initiation Synchronization
- Copy Project
- Generate PM Report
- Store Period Performance
- Create Baseline for a Project
- Publish Project
- Send to Unifier
An example scenario how the P6 job works
Below I have explained an example scenario about how a Job created, processed and finished by Primavera P6
1. User Copy a Project in Primavera P6
2. A record inserted into the JOBSVC table with JOBTYPE = CopyProject and STATUS_CODE = PENDING
3. The job server in P6 web picks the record and start processing and update the STATUS_CODE = RUNNING
4. Meantime, user can perform other activities in P6 and see the status of the Job in VIEW SERVICE STATUS page
5. The P6 Job Server in P6web updates the STATUS_CODE = COMPLETED/FAILED status once it done. The same status can be shown in the view service status.
Where is the P6 Job Server available?
The P6 Job Server is available in all the below Job modules
1. P6.ear (P6 Web Application)
2. Primavera Integration.Ear (P6 Integration API Server)
3. intgserver.ear (P6 Integration API )
4. P6services.jar (P6 Job Server)
5. p6ws.ear (Primavera Web Services)
P6 Job Server Configuration
The primavera admin config lists all the P6 job services. We can see and tune each p6 jobs by opening the P6 admin config > Expand the Configuration used by the p6 modules > Expand services >>Expand each job service and configure the setting
Here, I have expanded the Scheduler job and I can tune as below
Interval => P6 scheduler wait for 10s second before running the next job
Concurrent Threads => 2 Java threads run at a time and each thread takes a scheduler record from JOBSVC table and process it. A value of 0 indicates that this service will not run on the server (A thread per Server core, suppose you have 4 cores than don’t crease the concurrent thread value more than 4)
Active Mode => Choose true if you want jobs processed continuously until all jobs finish. Choose false if you want each job processed according to the Interval.
Like the above, we can enable/disable, increase/decrease concurrent threads of the jobs on each application. For example, I could enable SUMMARIZER, LEVELLER& SCHEDULER on one JOB Server with the high concurrent job and disable others jobs. On a large scale P6 environment, it is necessary to have a dedicated JOB server to process these jobs.
For example, assume there are 200 concurrent users using P6. One is summarizing an EPS, and other is publishing an EPS. If the EPS consist of 1000 project then 1000 record for Summarizer, and 1000 for Publisher records created in the JOBSVC table. P6 web only takes care of these 2000 jobs, then it affects the performance and may get a chance of Job will fail. A dedicated P6 job server is highly recommended.
How to create and run a P6 job Server
- Oracle recommends running the P6 Job Server on a dedicated server. The p6services.jar is a jar file that comes with the P6Home directory as shown below
- Run the dbconfig and create a separate P6 configuration for P6Services so you can tune the Job configuration.
- Make sure the BreBootstrap.xml should point to the new configuration ‘P6 Services’
- If you open the admin config, you will notice a separate configuration for P6services.jar like below
- Now create a batch file called startP6Service.bat or shell startP6Service.sh & append the following line in it. Place the bootstrap.home and p6services.jar path according to your environment
java -Xms4096m -Xmx4096m -Dprimavera.bootstrap.home=C:\P6EPPM_16_2\p6 -XX:PermSize=128m -XX:MaxPermSize=256m -XX:NewSize=128m -XX:MaxNewSize=256m -XX:SurvivorRatio=8 -jar C:\P6EPPM_16_2\p6\p6services.jar
- You can manually invoke the P6 Job server by double click on the batch file. You will see the P6 Services Started Sucessfull message as shown below. This will read all the PENDING jobs in the JOBSVC table based on the JOb setting in admin config
- You can put this batch file in Windows Job Scheduler or Linux CRON job as a nightly job so the Job service will run every night at less loading time.
The views expressed on this blog are my personal views and do not necessarily reflect the views of my employer.
Please feeling free to reach me on any comments and feedbacks you have. Would be more than glad to listen and reply 🙂
Latest posts by Govind
- How to schedule a Oracle BPEL process using Oracle Enterprise Schedule Service - August 5, 2018
- How to install Oracle Enterprise Scheduler12C - August 5, 2018
- How to reset ADF input File component - August 5, 2018