Oracle SOA/BPM 12c Installation

Oracle SOA/BPM 12c Installation steps on windows


Following steps


  1. Install Database
  2. Install SOA/BPM software
  3. Create Repository
  4. Create Domain.


First you need to downloaded latest Oracle SOA/BPM installation files from Oracle site.
i.e. http://www.oracle.com/technetwork/middleware/bpm/downloads/index.html?ssSourceSiteId=ocomen


Decompress files and get Jar files


Install latest JDK i.e 1.8


Install SOA/BPM Suite

Please set the JAVA_HOME before you start

Run the setup but using the following command


Java –jar fmw_12.2.1.3.0_bpmquickstart.jar






Next




Install


Click next and unselect “Start JDeveloper” check box


And Finish Installation process.

Repository creation


Go to oracle_common\bin


And run rcu







System load and product load if you have sysdba access to repository database


Otherwise select Prepare Scripts for system load and provide to dba


And after dba ran the scripts then Choose Perform Product Load


I am selecting System load and product load for this installation.


Assuming you already installed Oracle Database 12.1.0.2


Execute following sql to find pluggable database
select name from v$services;


Provide database instance details and click Next and Prerequisites check dialog will appear.




Provide repository schema password




Click Next




Click Create



SOA/BPM domain creation


Go to oracle_common\common\bin
Run config



Oracle SOA suite - 12.2.1.3.0 [soa]
Oracle BPM suite - 12.2.1.3.0 [soa]
And other related competes will be automatically selected.
Optionally you can select Oracle B2B abd Business Activity Monitoring or any other required for your business process development need.




Click Net




Set Weblogic Password




Click Next




Set domain directory or select default and click next




Select you domain mode and click next







Above all tests must be successfully, otherwise check the notified issues and correct before continuing.




Click Next




Click Next




Summary report will appear and select Create





Now new SOA/BPM enabled Domain has been created and complete installation is ready for development


To start WebLogic and domain


Do to domain folder


C:\Oracle\Middleware12c\Oracle_Home\user_projects\domains\base_domain\bin


First run startWeblogic.cmd
Then run startManagedWeblogic.cmd soa_server1
And provide weblgic user and password


Please note that run start both servers in separate terminals and do not close otherwise server will be shutdown.


Oracle Jdeveloper for SOA/BPM is installed with this installation you target to jdeveloper direct under weblogic home and run j


i.e C:\Oracle\Middleware12c\jdeveloper\jdeveloper.exe


Good luck.


You can post your question and any help required, I will do my best.

Oracle HRMS API: Update Employee Assignment API

/* Formatted on 12-Mar-18 3:40:47 PM (QP5 v5.114.809.3010) */

DECLARE
   l_object_version_number          NUMBER;
   l_special_ceiling_step_id        NUMBER;
   l_people_group_id                NUMBER;
   l_soft_coding_keyflex_id         NUMBER;
   l_supervisor_id                  NUMBER;
   l_assg_id                        NUMBER;
   l_group_name                     VARCHAR2 (200);
   l_effective_start_date           DATE;
   l_effective_end_date             DATE;
   l_org_now_no_manager_warning     BOOLEAN;
   l_other_manager_warning          BOOLEAN;
   l_no_managers_warning            BOOLEAN;
   l_spp_delete_warning             BOOLEAN;
   l_entries_changed_warning        VARCHAR2 (200);
   l_tax_district_changed_warning   BOOLEAN;
   l_concatenated_segments          VARCHAR2 (200);
   l_gsp_post_process_warning       VARCHAR2 (200);
   l_job_id                         VARCHAR2 (30);
   l_position_id                    VARCHAR2 (30);
   l_grade_id                       VARCHAR2 (30);
   l_org_id                         VARCHAR2 (30);
   l_loc_id                         VARCHAR2 (30);
   l_assg_cat                       VARCHAR2 (100);
   l_assg_start_date                DATE;
   l_pf_flag                        CHAR (1);
   l_segment1                       VARCHAR2 (100);
   l_segment2                       VARCHAR2 (100);
   l_segment3                       VARCHAR2 (100);
   l_person_id                      NUMBER;
   --
   v_emp_num                        VARCHAR2 (50);
   l_assign_date                    DATE;
   l_sup_hire_date                  DATE;
   l_emp_hire_date                  DATE;
   l_payroll_id                     NUMBER;
   l_paybasis_id                    NUMBER;
   l_comment_id                     NUMBER;
   l_count                          NUMBER := 0;
   l_error                          NUMBER;
   l_error_msg                      VARCHAR2 (4000);

   CURSOR c1
   IS
/* Formatted on 13-Mar-18 8:41:02 PM (QP5 v5.114.809.3010) */
SELECT   EMPLOYEE_ID,
         HIRE_DATE,
         (SELECT   DISTINCT PERSON_ID
            FROM   PER_ALL_PEOPLE_F
           WHERE   EMPLOYEE_NUMBER = t.EMPLOYEE_ID AND BUSINESS_GROUP_ID = 82)
            PERSON_ID,
         (SELECT   paf.EFFECTIVE_START_DATE
            FROM   PER_ALL_PEOPLE_F paf
           WHERE   paf.employee_number = t.EMPLOYEE_ID
                   AND BUSINESS_GROUP_ID = 82
                   AND SYSDATE BETWEEN paf.effective_start_date
                                   AND  paf.effective_end_date)
            effective_date,
         ORGANIZATION,
         (SELECT   organization_id
            FROM   hr_all_organization_units
           WHERE   UPPER (NAME) LIKE UPPER (ORGANIZATION)
                   AND business_group_id = 82)
            org_id,
         JOB,
         (SELECT   pj.job_id
            FROM   per_jobs pj, per_job_definitions pjd
           WHERE       pj.job_definition_id = pjd.job_definition_id
                   AND BUSINESS_GROUP_ID = 82
                   AND pj.NAME = JOB)
            job_id,
         POSITION,
         (SELECT   LOOKUP_CODE
            FROM   FND_LOOKUP_VALUES
           WHERE       LOOKUP_TYPE = 'HR_POSITION_NAME'
                   AND language = 'US'
                   AND MEANING = POSITION)
            POSITION_CODE,
         GRADE,
         SALARY_BASIS,
         PAYROLL_NAME,
         (SELECT   payroll_id
            FROM   pay_all_payrolls_f
           WHERE   1 = 1 AND UPPER (payroll_name) LIKE UPPER (t.PAYROLL_NAME)
                   AND TRUNC (SYSDATE) BETWEEN effective_start_date
                                           AND  effective_end_date)
            payroll_id,
         PROBATION_PERIOD,
         TO_CHAR (TO_DATE (PROBATION_END_DATE, 'mm/dd/yyyy'), 'DD-MON-YYYY')
            PROBATION_END_DATE,
         SUPERVISOR_LINE_MANAGER_NAME,
         SUPERVISOR_EMPLOYEE_NUMBER,
         TAX_UNIT_ENTITY_NAME,
         ASS_PROCESS_FLAG,
         ASS_PROCESS_MESSAGE
  FROM   XXHRL_MY_ASSIGNMENTS t;
      -- WHERE   NVL (ASS_PROCESS_MESSAGE, 'N') = 'N';

BEGIN
   FOR i IN c1
   LOOP
      DBMS_OUTPUT.put_line ('In Loop');

      l_object_version_number := NULL;
      l_special_ceiling_step_id := NULL;
      l_people_group_id := NULL;
      l_soft_coding_keyflex_id := NULL;
      l_group_name := NULL;
      l_effective_start_date := NULL;
      l_effective_end_date := NULL;
      l_org_now_no_manager_warning := FALSE;
      l_other_manager_warning := FALSE;
      l_spp_delete_warning := FALSE;
      l_entries_changed_warning := NULL;
      l_tax_district_changed_warning := FALSE;
      l_concatenated_segments := NULL;
      l_gsp_post_process_warning := NULL;
      l_assg_cat := NULL;
      l_job_id := NULL;
      l_position_id := NULL;
      l_grade_id := NULL;
      l_org_id := NULL;
      l_assign_date := NULL;
      l_sup_hire_date := NULL;
      l_emp_hire_date := NULL;

      l_soft_coding_keyflex_id := 61;
  
      -- AssignmentID
      BEGIN
         SELECT   paf.assignment_id
           INTO   l_assg_id
           FROM   per_assignments_f paf
          WHERE   paf.assignment_number = i.employee_id
                  AND BUSINESS_GROUP_ID = 82
                  AND SYSDATE BETWEEN paf.effective_start_date
                                  AND  paf.effective_end_date;
      EXCEPTION
         WHEN OTHERS
         THEN
            l_assg_id                  := NULL;
            l_error_msg := 'Assignment error';
            l_error := 1;
      END;

      -- Employee Hire Date Effective Date
      BEGIN
         SELECT   paf.start_date
           INTO   l_emp_hire_date
           FROM   per_all_people_f paf
          WHERE   paf.employee_number = i.employee_id
                  AND BUSINESS_GROUP_ID = 82
                  AND SYSDATE BETWEEN paf.effective_start_date
                                  AND  paf.effective_end_date;

         SELECT   TO_DATE (TO_CHAR (l_assign_date, 'RRRR/MM/DD HH24:MI:SS'),
                           'RRRR/MM/DD HH24:MI:SS')
           INTO   l_assign_date
           FROM   DUAL;
      EXCEPTION
         WHEN OTHERS
         THEN
            l_error_msg := 'Employee hire error';
            l_error := 1;
      END;

      -- Position ID
      BEGIN
         SELECT   pap.position_id
           INTO   l_position_id
           FROM   HR_ALL_POSITIONS_F pap, per_position_definitions ppd
          WHERE       pap.position_definition_id = ppd.position_definition_id
                  AND BUSINESS_GROUP_ID = 82
                  AND ORGANIZATION_ID = i.org_id
                  AND JOB_ID = I.JOB_ID
                  AND SUBSTR (pap.NAME, 7, LENGTH (NAME)) = i.POSITION;
      EXCEPTION
         WHEN OTHERS
         THEN
            -- l_position_id              := NULL;
            l_error_msg := 'Position error';
            l_error := 1;
      END;

      -- Grade ID
      BEGIN
         SELECT   pg.grade_id
           INTO   l_grade_id
           FROM   per_grades pg
          WHERE   BUSINESS_GROUP_ID = 82 AND name = i.grade;
      EXCEPTION
         WHEN OTHERS
         THEN
            l_grade_id := NULL;
      END;

      -- Location ID
      BEGIN
         SELECT   location_id
           INTO   l_loc_id
           FROM   hr_locations_all
          WHERE   UPPER (location_code) LIKE UPPER ('XXX');
      --i.LOCATION);
      EXCEPTION
         WHEN OTHERS
         THEN
            l_error_msg := 'Location ID error';
            l_error := 1;
      END;

      -- Object Version Number
      BEGIN
         SELECT   paaf.object_version_number
           INTO   l_object_version_number
           FROM   per_all_assignments_f paaf
          WHERE   SYSDATE BETWEEN paaf.effective_start_date
                              AND  paaf.effective_end_date
                  AND paaf.assignment_id = l_assg_id;
      EXCEPTION
         WHEN OTHERS
         THEN
            l_error_msg := 'Object Version error';
            l_error := 1;
      END;



      BEGIN
         hr_assignment_api.update_emp_asg_criteria (
            p_validate                       => FALSE,
            p_effective_date                 => TO_DATE (i.effective_date, 'DD-MON-RRRR'),
            p_datetrack_update_mode          => 'CORRECTION',
            p_assignment_id                  => l_assg_id,
            p_position_id                    => l_position_id,
            p_job_id                         => i.job_id,
            p_payroll_id                     => i.payroll_id,
            p_grade_id                       => l_grade_id,
            p_location_id                    => l_loc_id,
            p_organization_id                => i.org_id,
            p_pay_basis_id                   => l_paybasis_id,
            --Out parameters
            p_people_group_id                => l_people_group_id,
            p_object_version_number          => l_object_version_number,
            p_special_ceiling_step_id        => l_special_ceiling_step_id,
            p_group_name                     => l_group_name,
            p_effective_start_date           => l_effective_start_date,
            p_effective_end_date             => l_effective_end_date,
            p_org_now_no_manager_warning     => l_org_now_no_manager_warning,
            p_other_manager_warning          => l_other_manager_warning,
            p_spp_delete_warning             => l_spp_delete_warning,
            p_entries_changed_warning        => l_entries_changed_warning,
            p_tax_district_changed_warning   => l_tax_district_changed_warning,
            p_soft_coding_keyflex_id         => l_soft_coding_keyflex_id,
            p_concatenated_segments          => l_concatenated_segments
         );


         -- l_count := l_count + 1;

         DBMS_OUTPUT.put_line ('l_count: ' || l_count);

      EXCEPTION
         WHEN OTHERS
         THEN
            l_error := 1;
            l_error_msg := 'Assignmen Exception ' || SQLERRM;

DBMS_OUTPUT.put_line (l_error_msg);
END;

      BEGIN
         -- Update Employee Assignment only for probation details
         hr_assignment_api.update_emp_asg (
            p_effective_date           => TO_DATE (i.effective_date, 'DD-MON-RRRR'),
            p_datetrack_update_mode    => 'CORRECTION',   --// 'UPDATE',
            p_assignment_id            => l_assg_id,
           p_change_reason            => NULL,
            p_manager_flag             => 'Y',
            --  Output parameters
            p_probation_period         => i.PROBATION_PERIOD,
            p_probation_unit           => 'M',
            p_date_probation_end       => TO_DATE (i.PROBATION_END_DATE, 'DD-MON-RRRR'),
            p_object_version_number    => l_object_version_number,
            p_soft_coding_keyflex_id   => l_soft_coding_keyflex_id,
            p_concatenated_segments    => l_concatenated_segments,
            p_comment_id               => l_comment_id,
            p_effective_start_date     => l_effective_start_date,
            p_effective_end_date       => l_effective_end_date,
            p_no_managers_warning      => l_no_managers_warning,
            p_other_manager_warning    => l_other_manager_warning
         );

         l_count := l_count + 1;

         DBMS_OUTPUT.put_line ('l_count: ' || l_count);

         UPDATE   XXHRL_MY_ASSIGNMENTS
            SET   ASS_PROCESS_FLAG = 'Y', ASS_PROCESS_MESSAGE = 'Loaded'
          WHERE   employee_id = i.employee_id;
      EXCEPTION
         WHEN OTHERS
         THEN
            l_error := 1;
            l_error_msg := 'Probation API ' || SQLERRM;
      DBMS_OUTPUT.put_line (SQLERRM);

END;

      IF l_error = 1
      THEN
         UPDATE   XXHRL_MY_ASSIGNMENTS
            SET   ASS_PROCESS_FLAG = 'N', ASS_PROCESS_MESSAGE = l_error_msg
          WHERE   employee_id = i.employee_id;
      END IF;

      l_error := 0;
      l_error_msg := NULL;
   END LOOP;
EXCEPTION
   WHEN OTHERS
   THEN
      DBMS_OUTPUT.put_line (SQLERRM);
END;
 

How to - Oracle HRMS API: Create Positions API



Oracle HRMS Employee Create API Script




DECLARE

   l_eff_start_date            date;
   l_eff_end_date              date;
   l_effective_date            date := SYSDATE;
   l_job_id                    per_positions.job_id%TYPE;
   l_pos_org_id                per_positions.position_id%TYPE;
   l_validate_mode             boolean := FALSE;
   l_pos_type                  fnd_lookup_values.lookup_code%TYPE;
   l_avail_id                  per_shared_types.shared_type_id%TYPE;
   l_fte                       number;
   l_max_persons               number;
   l_probation_period          number;
   l_probation_unit_desc       varchar2 (500);
   l_business_group_id         number := 82;
   l_segment1                  varchar2 (20);
   l_orcl_pos_title_code       fnd_lookup_values.lookup_code%TYPE;
   l_orcl_pos_title_code_num   number;
   l_attribute8                hr_all_positions_f.attribute8%TYPE;
   l_attribute9                hr_all_positions_f.attribute9%TYPE;
   l_grade_id                  hr_all_positions_f.entry_grade_id%TYPE;
   l_barg_unit_cd              hr_all_positions_f.bargaining_unit_cd%TYPE;
   l_attribute6                hr_all_positions_f.attribute6%TYPE;
   l_working_hours             hr_all_positions_f.working_hours%TYPE;
   l_frequency                 hr_all_positions_f.frequency%TYPE;
   l_position_id               per_positions.position_id%TYPE;
   l_object_version_number     hr_all_positions_f.object_version_number%TYPE;
   l_position_definition_id    number;
   l_pos_name                  per_positions.name%TYPE;
   l_location_id               number;
   l_count                     NUMBER := 0;
   l_error                     NUMBER;
   l_error_msg                 VARCHAR2 (4000);

   CURSOR c1
   IS
      SELECT   DISTINCT
               POSITION,
               (SELECT   LOOKUP_CODE
                  FROM   FND_LOOKUP_VALUES
                 WHERE       LOOKUP_TYPE = 'HR_POSITION_NAME'
                         AND LANGUAGE = 'US'
                         AND MEANING = POSITION)
                  POSITION_1,
               JOB,
               (SELECT   pj.job_id
                  FROM   per_jobs pj, per_job_definitions pjd
                 WHERE       pj.job_definition_id = pjd.job_definition_id
                         AND BUSINESS_GROUP_ID = 82
                         AND pj.NAME = JOB)
                  job_id,
               ORGANIZATION,
               (SELECT   organization_id
                  FROM   hr_all_organization_units
                 WHERE   UPPER (NAME) LIKE UPPER (ORGANIZATION)
                         AND business_group_id = 82)
                  org_id
        FROM   XXHRL_MY_ASSIGNMENTS
       WHERE   NVL (pos_process_flag, 'N') = 'N';
BEGIN
   l_orcl_pos_title_code_num := 10001;

   FOR i IN c1
   LOOP
      BEGIN
         DBMS_OUTPUT.put_line ('In Loop');

         l_error := 0;
         l_pos_type := 'NONE';
         l_avail_id := 1;
         l_position_id := NULL;
         l_object_version_number := NULL;
         l_eff_start_date := NULL;
         l_eff_end_date := NULL;
         l_position_definition_id := NULL;
         l_pos_name := NULL;
         l_location_id := 145;                          --Location_code = XXXX

         hr_position_api.create_position (
            p_validate                 => FALSE,
            p_position_id              => l_position_id,
            p_effective_start_date     => l_eff_start_date,
            p_effective_end_date       => l_eff_end_date,
            p_position_definition_id   => l_position_definition_id,
            p_name                     => l_pos_name,
            p_object_version_number    => l_object_version_number,
            p_job_id                   => i.JOB_ID,
            p_organization_id          => i.ORG_ID,
            p_effective_date           => '01-Jan-1992',
            p_date_effective           => '01-Jan-1992',
            p_language_code            => 'US',
            p_availability_status_id   => l_avail_id,
            p_business_group_id        => 82,
            p_location_id              => l_location_id,
            p_position_type            => 'NONE',
            p_segment1                 => TO_CHAR (l_orcl_pos_title_code_num),
            p_segment2                 => i.POSITION_1
         );


         DBMS_OUTPUT.put_line ('l_pos_name: ' || l_pos_name);

         UPDATE   XXHRL_MY_ASSIGNMENTS
            SET   POS_PROCESS_FLAG = 'Y', POS_PROCESS_MESSAGE = 'Loaded'
          -- POS_SEQ_NO = l_orcl_pos_title_code_num
          WHERE   POSITION = i.POSITION;

         l_orcl_pos_title_code_num := l_orcl_pos_title_code_num + 1;
         l_count := l_count + 1;
      EXCEPTION
         WHEN OTHERS
         THEN
            l_error := 1;
            l_error_msg := 'Exception ' || SQLERRM;
      DBMS_OUTPUT.put_line (SQLERRM);

 END;

      IF l_error = 1
      THEN
         UPDATE   XXHRL_MY_ASSIGNMENTS
            SET   POS_PROCESS_FLAG = 'N', POS_PROCESS_MESSAGE = l_error_msg
          WHERE   POSITION = i.POSITION;
      END IF;

      l_error := 0;
      l_error_msg := NULL;
   END LOOP;
EXCEPTION
   WHEN OTHERS
   THEN
      DBMS_OUTPUT.put_line (SQLERRM);
END;