#43 – Go-Live Passwords

This week Kyle and Dan talk about scripting Change Assistant, DPK Patching and how many PeopleSoft customers plan on staying with the platform. The podcast ends with Dan sharing his Oh No! story about Go-Live passwords.

We want to make this podcast part of the community discussion on PeopleSoft administration. If you have comments, feedback, or topics you’d like us to talk about, we want to hear from you! You can email us at podcast@psadmin.io, tweet us at @psa_io, or use the Twitter hashtag #psadminpodcast.

You can listen to the podcast here on psadmin.io or subscribe with your favorite podcast player using the URL below, or subscribe in iTunes.

Podcast RSS Feed

Show Notes

Simplify PeopleSoft Image Downloads

getMOSPatch is a great utility for downloading patches from Oracle Support. The utility will log into Oracle Support for you and download patches you supply. All you need is the patch number, and your MOS credentials. And, version 2 of getMOSPatch is written in Java, so you can use it on any platform.

getMOSPatch

Let’s walk through a quick demo of downloading a recent PeopleSoft Image using getMOSPatch. We’ll be downloading the Windows NativeOS DPK for HR 9.2 Image 18, which is patch 23263167.

  1. Grab the latest version of getMOSPatch.jar from GitHub.
  2. Open a command line and navigate to where you saved getMOSPatch.jar.
  3. Run java -jar getMOSPatch.jar patch=23263167 patch is a required parameter. You can specify multiple patches; make the patch values a comma separated list
  4. Enter your MOS credentials after running the command.
  5. Select the platform you want to download the patch for. 233P is the Windows 64-bit code, so I’m using that. The .getMOSPatch.cfg file will store the platform you last selected when running getMOSPatch.jar, so you won’t be prompted every time for the platform. To reset the stored code, add reset=yes to the command line.
  6. Next, getMOSPatch will present a list of files available to download for the patch. In our case, we are selecting a PeopleSoft Image patch, so there will be 10 or more files. Use a comma separated list to specifiy the files you want to download. If you want to download all the files in the patch, you can use download=all in the command line.
  7. getMOSPatch will download the patches into your current directory.

getMOSPatch Demo 1

Quick Download Example

Let’s clean up our first example so that we can easily download future PeopleSoft Images using only a patch number. If you haven’t run getMOSPatch yet, run it once to identify the platform code you will use.

Next, we’ll create our command for getMOSPatch to download all the PeopleSoft Image patch files for our platform. This example will download the Windows NativeOS DPK for HR 9.2 Image 18:

java -jar getMOSPatch.jar patch=23263167 platform=233P download=all MOSUser=<email>

When I run the command, we’ll only need to enter the password for your MOS account. getMOSPatch will download all the patch files we need for the PeopleSoft Image.

getMOSPatch Demo 2

#42 – Windows and PeopleSoft w/ Andy Dorfman

This week we interview Andy Dorfman. Andy runs PeopleSoft on Windows Core and is an expert with PowerShell for server administration. He was fun to talk to and we learned a lot about running Windows with PeopleSoft.

We want to make this podcast part of the community discussion on PeopleSoft administration. If you have comments, feedback, or topics you’d like us to talk about, we want to hear from you! You can email us at podcast@psadmin.io, tweet us at @psa_io, or use the Twitter hashtag #psadminpodcast.

You can listen to the podcast here on psadmin.io or subscribe with your favorite podcast player using the URL below, or subscribe in iTunes.

Podcast RSS Feed

Show Notes

  • Andy’s Background with PeopleSoft 8 @ 1:45
  • Running PeopleSoft on Windows Core @ 6:00
  • PowerShell vs. DPK @ 10:00
  • Learning PowerShell @ 13:00
  • PowerShell: Invoke-Command @ 14:30
  • Windows Minimal @ 19:30
  • DFS for PS_HOME and more @ 23:30
  • Windows Security @ 30:00
  • OFA and PeopleSoft 32:30
  • Nginx and Reverse Proxies 37:00
  • Docker and Docker Swarm @ 40:00
  • IPv6 and PeopleSoft @ 46:00

psadmin.io Stylesheets for 8.54 and 8.55

I’m happy to release a set of stylesheets for PeopleTools 8.55 for everyone to use. The stylesheets are based on the TANGERINE theme (8.53 look and feel), so they won’t work with Fluid pages. For people who are using the Classic look, these stylesheets are a great way to ensure your users know which environment they are using.

I’ve used stylesheets for pre-8.50 environments from Duncan Davies in the past and built custom stylesheets for 8.53. But with the Branding Framework in 8.54 and 8.55, using custom styles are even easier. Thanks to Sasank Vemana for his great posts on using the Branding Framework as well. I used his posts to build these stylesheets.

Colors

There are six styles in the project. The colors (except the purple theme) are based on the Bootstrap default theme.

Green

Green Header

Light Blue

Light Blue Header

Purple

Purple Header

Red

Red Header

Grey

Grey Stylesheet

Yellow

Yellow Header

Environments

Use the colors however you want, but the list below is how I’m using the colors:

  • DEV1 – Green
  • DEV2 – Light Blue
  • DEV3 – Purple
  • TST – Red
  • QA/UAT – Grey
  • SBX (Sandbox and Nightly Refresh) – Yellow

Load Stylesheets and Branding Data

You can apply the stylesheets three ways: manually load the project with App Designer and Data Mover, apply a change package with Change Assistant, or follow Sasank’s post and use the stylesheets from the GitHub repository.

App Designer

Download the change package, updIO_STYLES_855.zip, from the GitHub repository. Extract the updIO_STYLES_855.zip file to get the project and scripts. In App Designer, copy the project IO_STYLES_855 from the change package folder into the target database.

CopyProject

Import the ptbr_io_theme.dat file using Data Mover and the script ptbr_theme_io_imp.dms (under updIO_STYLES_855\updIO_STYLES_855_batch\filereferences\scripts).

DataMoverCopy

Run the updateSystemBranding.sql script to update the Branding System Options and insert the IO_LOGO and IO_HDR_BLUE stylesheets.

UpdateSystemBranding

Change Package

Download the change package, updIO_STYLES_855.zip, from the GitHub repository. Apply the change package against any environment where you want to use the stylesheets. (You’ll need to use the “Apply Updates” mode in newer Change Assistant versions). The change package will import the IO_STYLES_855 project, import the Branding Framework theme data, and update System Branding Options.

Refreshes

If you want to use the styles in your non-production environments, you can import the project and Branding Framework setup and theme data into your production database. Skip the SQL script to update the System Branding Options. Add the SQL commands from the Change Package script updateSystemBranding.sql into your refresh scripts.

8.55 Homepage

After you load the project and run the scripts, Classic pages will show up with the new stylesheest. If you are on 8.55 and want to use the Classic homepage, you’ll need to run the SQL below:

update psuseroptndefn set user_option_value = 'C' where optn_category_lvl = 'PPTL' and useroptn in ('HPPC', 'HPTABLET');

Header Color

To change the header colors, change the Additional Stylesheet on the “PeopleTools > Portal > Branding > Branding System Options” page.

Change Header Color

Logo

There are two ways you can replace the logo with your own:

  1. Replace the IO_LOGO file under “PeopleTools > Portal > Branding > Branding Objects > Images”
  2. Upload your logo as a new image and replace the IO_LOGO reference in the IO_LOGO css file.

Contribute

I have created a GitHub project with the styleets used in the project. If you want to add any changes or suggest improvments, please send them in or contribute to the GitHub repository.

#41 – Keeping Up with the Admin’s

This week on the podcast, Dan and Kyle talk about PeopleSoft Myths, PowerShell Profiles and more features in Beyond Compare. Then we discuss the “left behind feeling” when hearing what other PS Admin’s are doing.

We want to make this podcast part of the community discussion on PeopleSoft administration. If you have comments, feedback, or topics you’d like us to talk about, we want to hear from you! You can email us at podcast@psadmin.io, tweet us at @psa_io, or use the Twitter hashtag #psadminpodcast.

You can listen to the podcast here on psadmin.io or subscribe with your favorite podcast player using the URL below, or subscribe in iTunes.

Podcast RSS Feed

Show Notes

Multiple PS_CFG_HOMEs with the DPK

One of my biggest criticisms of the DPK is that it doesn’t support multiple PS_CFG_HOME’s for app server and process scheduler domains. This has been the biggest roadblock for me as I attempt to use the DPK to deploy an 8.55 infrasturcture. Currently (as of 8.55.08), all Tuxedo domains are created under a single folder.

Tuxedo expects the PS_CFG_HOME environment variables to be set to know where to create domains. If you don’t set PS_CFG_HOME, Tuxedo’s default setting will create the domains under %USER%\psft\pt\8.xx.

With the DPK, there are parameters to set PS_CFG_HOME environment variable at the app server, process scheduler, and web server sections in psft_customizations.yaml. Use the ps_config_home: value to populate the value for all domains. Or, you can set different values for each domain using the ps_cfg_home_dir: inside the appserver_domain_list, prcs_domain_list, and pia_domain_list section.

When the DPK runs, it takes these values and sets up environment variables. If you have more than one PS_CFG_HOME specified for Tuxedo domains, the current DPK will only set environment variables once. The last PS_CFG_HOME specified will be the environment variable value when Tuxedo domains are created.

This is why the DPK only uses 1 PS_CFG_HOME for all Tuxedo domains; it doesn’t manage environment variables properly.

Setting PS_CFG_HOME for Every Domain

To fix this, we need to set the PS_CFG_HOME environment variable each time a Tuxedo domain is created (or booted). Puppet Providers handle the comamnd line calls to Tuxedo and setup programs. So a code change in the provider for Tuxedo domains where we need to make our change.

The Puppet Providers for Tuxedo are located under puppet\etc\modules\pt_config\lib\puppet\provider\. In the providers, when a command line command is built, a function execute_command() is used to handle the OS-level command line calls. Unfortunately, only the app server provider uses this function, because execute_command() takes two parameters: command and env. The env parameter lets us set environment variables for the command’s environment. Instead, we’ll use the Ruby syntaxt ENV[] set an environment variable before the command is executed.

App Servers

There are two base files for app server domains: psftdomain.rb and psftdomainboot.rb. They are parents objects to the pt_app_domain\app_domain.rb provider. The changes for application server domains can be made in the two parent files.

We’ll insert this code block before each command line call:

# PS_CFG_HOME Fix Begin 
if Facter.value(:osfamily) == 'windows' 
    ps_cfg_home_dir_norm = resource[:ps_cfg_home_dir].gsub('/', '\\') 
else 
    ps_cfg_home_dir_norm = resource[:ps_cfg_home_dir] 
end

ENV['PS_CFG_HOME'] = ps_cfg_home_dir_norm
Puppet.notice("     PS_CFG_HOME=#{ps_cfg_home_dir_norm}")
# PS_CFG_HOME Fix End

In psftdomain.rb, we’ll insert the code in the create() method before the begin code block:

def create pre_create()

  domain_name = resource[:domain_name]
  domain_type = get_domain_type()
  template_type = get_template_type()

  Puppet.debug("Creating domain: #{domain_name}")
  Puppet.debug("     with attributes #{resource.to_hash.inspect}")

  # PS_CFG_HOME Fix Begin
  if Facter.value(:osfamily) == 'windows'
    ps_cfg_home_dir_norm = resource[:ps_cfg_home_dir].gsub('/', '\\')
  else
    ps_cfg_home_dir_norm = resource[:ps_cfg_home_dir]
  end

  ENV['PS_CFG_HOME'] = ps_cfg_home_dir_norm
  Puppet.notice("     PS_CFG_HOME=#{ps_cfg_home_dir_norm}")
  # PS_CFG_HOME Fix End

  begin
    psadmin_cmd = File.join(resource[:ps_home_dir], 'appserv', 'psadmin')
    if Facter.value(:osfamily) == 'windows'

      command = "#{psadmin_cmd} #{domain_type} create -d #{domain_name} #{template_type} #{get_startup_settings} #{get_env_settings}"
      execute_command(command)
    else 
      domain_cmd('-m', '-s', '/bin/bash', '-l',  resource[:os_user], '-c',
                 "#{psadmin_cmd} #{domain_type} create -d #{domain_name} " +
                 "#{template_type} #{get_startup_settings} #{get_env_settings}")
    end

  rescue Puppet::ExecutionFailure => e
    raise Puppet::Error,
        "Unable to create domain #{domain_name}: #{e.message}"
  end

  post_create()
  @property_hash[:ensure] = :present

end

In psftdomainboot.rb, we’ll insert the code block in the execute_psadmin_action() method before the begin code block:

def execute_psadmin_action(action) 
  domain_name = resource[:domain_name] domain_type = get_domain_type()

  Puppet.debug("Performing action #{action} on domain #{domain_name}")

  # PS_CFG_HOME Fix Begin
  if Facter.value(:osfamily) == 'windows'
    ps_cfg_home_dir_norm = resource[:ps_cfg_home_dir].gsub('/', '\\')
  else
    ps_cfg_home_dir_norm = resource[:ps_cfg_home_dir]
  end

  ENV['PS_CFG_HOME'] = ps_cfg_home_dir_norm
  Puppet.notice("     PS_CFG_HOME=#{ps_cfg_home_dir_norm}")
  # PS_CFG_HOME Fix End

  begin
    psadmin_cmd = File.join(resource[:ps_home_dir], 'appserv', 'psadmin')
    if Facter.value(:osfamily) == 'windows'

      db_type = get_db_type()
      if db_type == 'ORACLE'
        set_user_env()
      end
      command = "#{psadmin_cmd} #{domain_type} #{action} -d #{domain_name}"
      command_output = execute_command(command)

    else
      os_user = resource[:os_user]
      if os_user_exists?(os_user) == false
        command_output="ERROR: os user #{os_user} does not exists"
      else
        command_output = domain_cmd('-m', '-s', '/bin/bash', '-',  os_user, '-c',
          "#{psadmin_cmd} #{domain_type} #{action} " + "-d #{domain_name}")
      end
    end
    return command_output

  rescue Puppet::ExecutionFailure => e
    raise Puppet::ExecutionFailure, "Unable to perform action #{action}: #{e.message}"
  end

end

Process Schedulers

For process scheduler domains, we need to modify the pt_prcs_domain\prcs_domain.rb provider file. We’ll insert the code block in the pre_create() method.

def pre_create 
  super()

  domain_name = resource[:domain_name]
  cfg_home_dir = resource[:ps_cfg_home_dir]

  # PS_CFG_HOME Fix Begin
  if Facter.value(:osfamily) == 'windows'
    ps_cfg_home_dir_norm = resource[:ps_cfg_home_dir].gsub('/', '\\')
  else
    ps_cfg_home_dir_norm = resource[:ps_cfg_home_dir]
  end

  ENV['PS_CFG_HOME'] = ps_cfg_home_dir_norm
  Puppet.notice("     PS_CFG_HOME=#{ps_cfg_home_dir_norm}")
  # PS_CFG_HOME Fix End

  domain_dir = File.join(cfg_home_dir, 'appserv', 'prcs', domain_name)
  if File.exist?(domain_dir)
    Puppet.debug("Removing Process Scheduler domain directory: #{domain_dir}")
    FileUtils.rm_rf(domain_dir)
  end

end

Closing Thoughts

Fixing the limitation of one PS_CFG_HOME with the DPK was the last hurdle for me to start using the DPK for all of my environment builds. With the DPK, and some custom Puppet code to extend the DPK, we are working on automating our environment builds. I posted the code changes on GitHub if you want to get the fix from there.

I have an SR open for this issue, but I also have an Idea on the Oracle Community site. If you would like to see this change incorporated into the delivered DPK, go vote for the idea.

Automate PeopleTools Database Patches

With PeopleTools 8.55, applying database PeopleTools patches with Change Assistant is easy to automate. In 8.54, Change Assistant gained the ability to apply patches from the command line. But with 8.55 and the PeopleTools Client DPK, the process is even better.

There are three main steps to getting your PeopleTools 8.55 database patched:

  1. Install the new PeopleTools Client (and Change Assistant version)
  2. Configure your target environment
  3. Run the PeopleTools patch command

Let’s look at each step.

PeopleTools Client and Patch Files

The first step is to install the updated PeopleTools client using the Client DPK (PeopleTools Patch Client Install section). When you install the client, make sure you select “PeopleTools Patch” or “Full PeopleTools Upgrade”. Both of those options will create a PTP folder under the client home. The PTP folder will contain the PeopleTools Patch (PTP) .zip files and Change Assistant expects those files in the PTP folder. Make sure you install the new Change Assistant version too. With 8.55, you can install more than one version of Change Assistant; I used the convention C:\Program Files\PeopleSoft\Change Assistant-8.55.xx for the install path.

1-ptclient.gif

Change Assistant Configuration

In the updated version of Change Assistant, you need to create an environment definition for the target database. If the environment existed in an older version of Change Assistant, use the new Import feature under “Tools > Export/Import Change Assistant Settings”. If you don’t have an environment defined, to to “File > New Database” to create it. For your target database, change the PS_HOME directory to the new PeopleTools Client folder. Verify and Save the environment definition.

2-caenv

Automate

Open a command prompt and navigate to C:\Program Files\PeopleSoft\Change Assistant. We’ll kick off the PeopleTools Patch using the changeassistant.bat file. There are 4 parameters we specify:

  • -MODE: The Change Assistant mode to run (UM for Update Manager mode)
  • -ACTION: The change action to run (PTPAPPLY for a patch or PTUAPPLY for an upgrade)
  • -TGTENV: The target environment name
  • -UPD: PeopleTools Patch ID (PTP855xx)

3-ptpapply

Check the softwareupdatePTP855XX{-DBNAME}IP output folder (defined under Tools > Options > Output Directory in Change Assistant) for the logs. Change Assistant will create the usual logs, but you will also find a job.log file. job.log is the same output that you normally see in the left-pane inside Change Assistant.

I applied PeopleTools 8.55.08 (to an 8.55.05) database and the patch job took less than 10 minutes.

#40 – UI Development w/ Sasank Vemana

This week, Kyle interviews Sasank Vemana about User Interface development in PeopleSoft. Sasank presented at Reconnect and shared some great projects he’s done to improve the UI in PeopleSoft. Dan and Kyle also discuss uploading Customer Data into the PUM and how we arrange our monitors.

We want to make this podcast part of the community discussion on PeopleSoft administration. If you have comments, feedback, or topics you’d like us to talk about, we want to hear from you! You can email us at podcast@psadmin.io, tweet us at @psa_io, or use the Twitter hashtag #psadminpodcast.

You can listen to the podcast here on psadmin.io or subscribe with your favorite podcast player using the URL below, or subscribe in iTunes.

Podcast RSS Feed

Show Notes