Tuesday, September 15, 2020

HDL Post Conversion Processes


After a successful data migration or incremental updates using HDL, you must run set of processes to either creating supplemental data or optimizing indexes for better performance. It is critical to understand when and how to run these programs.

Post Conversion Processes



#ProgramDescription
1Synchronize Person RecordsNotifies consuming Oracle Cloud applications, such as Oracle Fusion Trading Community Model, of changes to person and assignment details since the last data load.
2Refresh Manager HierarchyFor performance reasons, the complete manager hierarchy for each person is extracted from active data tables. The hierarchy is stored in a separate manager hierarchy table, known as the de-normalized manager hierarchy (PER_MANAGER_HRCHY_DN).
3Update Person Search KeywordsSeveral attributes of person, employment, and profile records are used as person-search keywords. This process copies keyword values in all installed languages from the originating records to the PER_KEYWORDS table, where they’re indexed to improve search performance.
4Optimize Person Search Keywords IndexOptimizes the index of the PER_KEYWORDS table to improve search performance.
5Autoprovision Roles for All UsersGrant\remove roles based on current role-provisioning rules. It will evaluate ALL users in the system against role provisioning setup and hence resource intensive and may create lot of LDAP requests.
6Send Pending LDAP RequestsSends user-account requests to the LDAP directory. Run this process only when you want user accounts to be either created or updated.
7Send Personal Data for Multiple Users to LDAPEnsures that personal data held in your LDAP directory matches that held by Oracle HCM Cloud, post bulk updates.  Fields to be synchronized are – first Name, last name, email and manager.
8*Synchronize Person Assignments from PositionIf using position management and PositionOverrideFlag is set to Y in worker.dat for assignment records. You may want to run this process before running refresh manager hierarchy process if line manager is also synchronized.(Full HCM implementations only and not for coexistence)
9Calculate Seniority DatesYou can not create V3 seniority records using HDL, only updates are allowed. After loading worker object via HDL, you must run this process to create default seniority records for workers based on configured seniority date rules.

Auto-trigger Processes

For worker object, by default, these two processes run automatically when HDL completes:.
  • Refresh Manager Hierarchy
  • Update Person Search Keywords
You can prevent either or both of these processes from running automatically using a SET instruction in the Worker.dat file. This can be useful especially in cases where you have many batches for employee data conversion and by disabling the process run post every single batch can allow you to run these programs only once after completing all the batches. 

When to run these post conversion programs? 

Here is one of the best ways to plan your post conversion schedule. 


ProgramOne-time ConversionIncremental/ Ongoing updatesComments
Synchronize Person RecordsYes -Run after loading person dataYes – If there are changes to person records on a daily basis.
Refresh Manager HierarchyYes (HDL will auto trigger)Yes (HDL will auto trigger)Run the program manually if HDL auto trigger is disabled.
Update Person Search KeywordsYes (HDL will auto trigger)Yes (HDL will auto trigger)Run the program manually if HDL auto trigger is disabled.
Optimize Person Search Keywords IndexYesYes
Autoprovision Roles for All UsersNoNoAuto Role Provisioning Rules should be configured BEFORE running HDL Worker loads. This would let user accounts to be created along with requests to provision roles automatically. Please do not schedule this process, instead run it manually when role provisioning rules are modified. 
Send Pending LDAP RequestsYesYesYou should run this job after bulk loading workers via HDL.It is also a best practice to schedule this job on a daily basis to take care of ongoing user access requests as well as processing future dated ldap requests.
Personal Data for Multiple Users to LDAPYesDependsRequired only if personal data (name, email, manager) is updated in bulk via HDL or Spreadsheet loaders, etc) Best to run the process once after one-time conversion so you don’t need to worry about data loading dependencies such as initial load for basic information and separate batch for line manager updates. 
Synchronize Person Assignments from PositionDependsDependsDepends? If you are using position management and full HR (not coexistence)Given that changes can happen regularly within a position, you’ll want to this process to run on a regular basis. If you are synchronizing the line manager, then it’s recommended to run this process daily as well.
Calculate Seniority DatesYesYesYou will run this job after initial conversion as well as ongoing worker load via HDL. Please review the section below to set appropriate value for batch size to avoid performance issues. 

How to run these post conversion programs?

Synchronize Person Records

The job is resource intensive as it publishes events in SOA for consuming applications so please run this process after hours and using proper input parameters. Also note, this job will only process effective dated transactions i.e. it will pick up future dated hires only when that hire date becomes effective. 
There are 3 input parameters for this ESS job. 
  1. From Date:  
  2. To Date: 
  3. After Batch Load:  <Yes or No or Blank>. Set this parameter to Yes when you are running the process post HDL conversion. 
The Job can be run in 2 ways.
Daily
Pass the system date in both the date parameters and “After Batch Load” parameter set to “No”.
For a specific Period
Pass the date range in the parameters. Example: From Date 12-Aug-2019; To Date 18-Aug-2019;
Note: The max. date range between from date, to date parameters should be 7 days.  For the very first time, the date range will be accepted for more than 7 days. All subsequent runs with date range more than 7 days, the job will end up in Warning state. It doesn’t raise events at all.

Refresh Manager Hierarchy

A person’s manager hierarchy could be derived from active data tables, but the impact of that approach on performance is unpredictable. Therefore, the complete manager hierarchy for each person is extracted from data tables and stored in a separate manager hierarchy table. This table is known as the denormalized manager hierarchy. Whenever a change is made to a person’s manager hierarchy through the application pages, the change is reflected automatically in the denormalized manager hierarchy table. You use the Refresh Manager Hierarchy process to populate the denormalized manager hierarchy table when person records are updated using data loaders (e.g. HDL). 
There is 1 input parameter for this ESS job. 
1. Updated Within the Last N Days – e.g. 1 day if the job is scheduled on daily basis, and you can leave it blank for the initial run or reconciliation for the full refresh.

Update Person Search Keywords

There are 3 input parameters for this ESS job. 
1. Batch Id:  <Number Value or blank>. To execute the job for a particular HDL batch, enter only the Batch Id and leave all the other parameters as a blank. It will create/recreate the person keywords for all the people who are successfully loaded via that HDL batch load.
2. Name:   <Person Name LOV or blank>. To execute the job for a specific person, pass only the person name and leave other fields blank.
3. After Batch Load:  <Yes or No or Blank>. To execute the job in Delta\Incremental mode option, then pass only ‘After Batch Load’ parameter as ‘Yes’. It will create/recreate person keywords for all the modified or new people in the system. This option will work only when the delta (change) size is less than 20K. For delta >20k, run the job with All People option (i.e. do not pass any parameters) 

Optimize Person Search Keywords Index

Run this job only when there is minimum load in the system. Generally it is better to run daily once during maintenance time.  And if they have ‘Update Person Search Keywords’ ess job also scheduled to be run daily during maintenance time then it is recommended to schedule this job right after.
There are 2 input parameters for this ESS job
1. Maximum Optimization Time: < # of days or Blank>, default is 180 days
2. Optimization Level: <Full Optimization or Rebuild the Index or Blank>, default is Full Optimization . If you are rebuilding the index then optimization time is ignored. 
Note- Recommendations will vary based on the employee population, system usage by the users, db usages , data loaders used , index fragmentation,’Update Person Search Keywords’ ess job runs/schedules etc. 

Autoprovision Roles for All Users

Please do not schedule this process for a daily or regular run, instead do the manual run as necessary. You need to run this process only if there are changes in the auto provisioning rules setup. You need to run Send Pending LDAP ESS to actually process all the LDAP requests generated by this job.
There is 1 input parameter for this ESS job
1. Process Generated Role Requests: <Yes or No>. Set the Process Generated Role Requests parameter to No to defer the processing, deferring the processing is better for performance, especially when thousands of role requests may be generated.  

Send Pending LDAP Requests

Most of the changes to users & roles are shared automatically by Oracle HCM Cloud to Oracle Identity Management, but you may need to run this ESS after mass updates (such as HDL worker load or Auto provisioning changes). Best to schedule this process on daily basis, so it can send the pending requests as well as future dated requests which are now current to Oracle Identity Management. 
There are 2 input parameters for this ESS job. 
1. User Type <All, Party, Person> default is All
2. Batch Size <A> A- Auto calculate the batch size. For e.g if you have 1000 requests to be processed in 10 batches then batch size is 100. 

Synchronize Person Assignments from Position

You must schedule this process to run on a regular basis. If you are synchronizing the manager, then it’s recommended to run this process daily.There are 3 input parameters for this ESS job. 1. Past Period to Be Considered in Days – Number of days in the past to be considered for updating the attribute in the assignments. The default value is 30 days. For example, if you set this parameter to 60 days, then any assignment records with start dates during the previous 60 days are synchronized from positions.   2. Run at Enterprise Level <Yes, No> – Select Yes to run the process for the enterprise, or No to run it for a specific legal entity.3. Legal Employer <Legal employer name LOV> – Legal entity for which you want to run the process. 

Calculate Seniority Dates

There are 6 input parameters for this ESS job.
1. Person Number: Comma separated list of person numbers you want the ESS job to run for, or leave it blank to run it for all employees.
2. Past Period in Days: default is 1 day. It determines how many changes are getting picked up by the process.
3. Include Terminated Work Relationships: It determines whether seniority Data of terminated workers will be generated or not. 
4. Legal Employer: <Legal employer name LOV> – Legal entity for which you want to run the process.
5. Union: <Union LOV> – Union name for which you want to run the process.
6. Selected Seniority Date Rules: List of rules you want to populate for the workers.
Note – Past Period in days parameter will impact how many records are getting picked up for deriving Seniority Dates. If some records are not all modified for a longer time, then we need to run the ESS once, with a bigger number as the period. However when we run with a big number as the past period, it will impact performance of the ESS job. Multi threading is one option to improve the performance of the ESS job, and it is done by setting up batch size\chunk size using profiles option. The PER_EMP_SD_MAX_PROCESS_REC profile option is used to set the number of records processed per thread and subsequently that will control the number of threads used depending on the total records. Customer needs to create a new profile option through following steps.
  • Navigate to the task “Manage Profile Options”
  • Create a profile option with following details.
    • Profile Option Code : PER_EMP_SD_MAX_PROCESS_REC
    • Profile Option Display Name : PER_EMP_SD_MAX_PROCESS_REC
    • Application : Global Human Resources
    • Module : Employment
    • Start Date : 01/01/1951
  • Once profile option is created make the profile option Enabled and Updatable at Site Level
  • Now navigate to task ‘Manage Administrator Profile Values’
    • Search for newly created profile option (PER_EMP_SD_MAX_PROCESS_REC)
    • At the site level, set a desired value e.g. 10000 or 2000 etc. This is the chuck size which will eventually determine number of threads. (This value is to be decided by customer as per their requirement.)

Measuring packet drop rate in Mininet (SDN)



In order to measure the packet drop rate for TCP packets on mininet we don’t find such APIs to get these statistics. For example, if we sent more packets than the link’s bandwidth or the switch buffer size, some of the packets would be dropped, but we don’t get the statistics since the TCP is a reliable protocol and it will re-transmit the packet if it detects some packet has been dropped. Hence we don’t get the packet loss rate on the application view (iperf). 
To take it back to the application view, i.e. iperf, it makes more sense to talk about the “re-transmission rate” for TCP, while I searched through the link  https://www.reddit.com/r/networking/comments/3w2t8d/trying_to_understand_iperf3_logs/  i found that it suggested that IPERF3 will tell you the number of retransmitted packets (per interval, and total), but it does not show the total number of packets transmitted and received, but only bytes. Since, Iperf3 gets the re transmission information from the kernel via the function getsockopt so when the third parameter is “TCP_INFO”, kernel will return some metadata of the specific TCP connection which include the re transmission. SO we night use the TCP_INFO field to get the statistics.The code as follows:
#include <stdio.h>
#include <stdlib.h>
#include <sys/param.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <string.h>
#include <netinet/in.h>
#include <errno.h>

#include "iperf.h"
#include "iperf_api.h"
#include "iperf_locale.h"

/*************************************************************/
int
has_tcpinfo(void)
{
#if (defined(linux) || defined(__FreeBSD__) || defined(__NetBSD__)) \
 && defined(TCP_INFO)
    return 1;
#else
    return 0;
#endif
}

/*************************************************************/
int
has_tcpinfo_retransmits(void)
{
#if defined(linux) && defined(TCP_MD5SIG)
    /* TCP_MD5SIG doesn't actually have anything to do with TCP
    ** retransmits, it just showed up in the same rev of the header
    ** file.  If it's present then struct tcp_info has the 
    ** tcpi_total_retrans field that we need; if not, not.
    */
    return 1;
#else
#if defined(__FreeBSD__) && __FreeBSD_version >= 600000
    return 1; /* Should work now */
#elif defined(__NetBSD__) && defined(TCP_INFO)
    return 1;
#else
    return 0;
#endif
#endif
}

/*************************************************************/
void
save_tcpinfo(struct iperf_stream *sp, struct iperf_interval_results *irp)
{
#if (defined(linux) || defined(__FreeBSD__) || defined(__NetBSD__)) && \
 defined(TCP_INFO)
    socklen_t tcp_info_length = sizeof(struct tcp_info);

    if (getsockopt(sp->socket, IPPROTO_TCP, TCP_INFO, (void *)&irp->tcpInfo, &tcp_info_length) < 0)
 iperf_err(sp->test, "getsockopt - %s", strerror(errno));

    if (sp->test->debug) {
 printf("tcpi_snd_cwnd %u tcpi_snd_mss %u tcpi_rtt %u\n",
        irp->tcpInfo.tcpi_snd_cwnd, irp->tcpInfo.tcpi_snd_mss,
        irp->tcpInfo.tcpi_rtt);
    }

#endif
}

/*************************************************************/
long
get_total_retransmits(struct iperf_interval_results *irp)
{
#if defined(linux) && defined(TCP_MD5SIG)
    return irp->tcpInfo.tcpi_total_retrans;
#elif defined(__FreeBSD__) && __FreeBSD_version >= 600000
    return irp->tcpInfo.tcpi_snd_rexmitpack;
#elif defined(__NetBSD__) && defined(TCP_INFO)
    return irp->tcpInfo.tcpi_snd_rexmitpack;
#else
    return -1;
#endif
}

/*************************************************************/
/*
 * Return snd_cwnd in octets.
 */
long
get_snd_cwnd(struct iperf_interval_results *irp)
{
#if defined(linux) && defined(TCP_MD5SIG)
    return irp->tcpInfo.tcpi_snd_cwnd * irp->tcpInfo.tcpi_snd_mss;
#elif defined(__FreeBSD__) && __FreeBSD_version >= 600000
    return irp->tcpInfo.tcpi_snd_cwnd;
#elif defined(__NetBSD__) && defined(TCP_INFO)
    return irp->tcpInfo.tcpi_snd_cwnd * irp->tcpInfo.tcpi_snd_mss;
#else
    return -1;
#endif
}

/*************************************************************/
/*
 * Return rtt in usec.
 */
long
get_rtt(struct iperf_interval_results *irp)
{
#if defined(linux) && defined(TCP_MD5SIG)
    return irp->tcpInfo.tcpi_rtt;
#elif defined(__FreeBSD__) && __FreeBSD_version >= 600000
    return irp->tcpInfo.tcpi_rtt;
#elif defined(__NetBSD__) && defined(TCP_INFO)
    return irp->tcpInfo.tcpi_rtt;
#else
    return -1;
#endif
}

/*************************************************************/
/*
 * Return rttvar in usec.
 */
long
get_rttvar(struct iperf_interval_results *irp)
{
#if defined(linux) && defined(TCP_MD5SIG)
    return irp->tcpInfo.tcpi_rttvar;
#elif defined(__FreeBSD__) && __FreeBSD_version >= 600000
    return irp->tcpInfo.tcpi_rttvar;
#elif defined(__NetBSD__) && defined(TCP_INFO)
    return irp->tcpInfo.tcpi_rttvar;
#else
    return -1;
#endif
}

/*************************************************************/
/*
 * Return PMTU in bytes.
 */
long
get_pmtu(struct iperf_interval_results *irp)
{
#if defined(linux) && defined(TCP_MD5SIG)

Contextual Analysis in Talent Management


The use of contextual information which takes into account the holistic view of a worker is essential to foster a more engaged workforce and management team for the Company. Users expect the underlying data to give insight into the individual’s contributions and the overall impact to the company’s bottom line.
Application context passing to embedded reports for the application and the module to be specific is a unified approach for better information sharing within the Fusion Applications promoting equality of opportunity in the workplace. Contextual analysis provides immediately accessible and relevant contextualized reporting that can transform performance reviews across Organization. Organizations need to enable greater connectivity between the information in real-time reporting with other corporate information.
Questions employees care about most:
  • What and how should I develop to be more successful?
  • How am I doing? How do I fit into the bigger picture?
  • What is next step for me? What opportunities are available to re affirm strengths and align individual goals with purpose and direction.
Key result areas managers concern most:
  • Am I bringing the best of my direct reports?
  • Is my team engaged? Are we working towards vital priorities?
  • Ability to give feedback in the moment and surmount the limits to growth.
Problems organizational leaders face:
  • Adaptive challenges in talent development as well as culture change.
  • The gender imperative.
  • How work gets done and how performance is measured/rewarded.

Use of the simplest and most cost effective analytics will lead to a solid career conversation driving top performance.

  • Individual Potential to Improve and Grow
  • Long-term Goals Rating History
  • Sales Performance Goals
  • Pay for Performance Metric
  • Personal Qualities and Attributes

Analytics Maturity Framework to review the current state capabilities






  • Use the analytics maturity framework to drive interview questions
  • Identify the gaps in each of these areas and developed capabilities that will required for the future state
  • Use a simple evaluation scale to determine the current maturity level