Thursday, 28 March 2019

Sample Shell scripts



To Check Folder :


if [ -d "/path/to/dir" ] 
then
    echo "Directory /path/to/dir exists." 
else
    echo "Error: Directory /path/to/dir does not exists."
fi



To Check WSDL :

Status = `curl -Is http://localhost:port/sampleservice?wsdl | head -n 1 | cut -d ' ' -f 2`

It will provide HTTP response code. 



SAAS Web Services and Operations



  1. SAAS Home Page :  https://hostname:443/
  2. SAAS UCM : https://hostname:443/cs
  3. BIP URL  :  https://hostname:443/xmlpserver or analytics
  4. BIP Web Service  :  
    • https://<fusion app url>/xmlpserver/services/ExternalReportWSSService?wsdl
    • https://<fusion app url>/xmlpserver/services/PublicReportWSSService?wsdl
    • https://<fusion app url>/xmlpserver/services/ScheduleReportWSSService?wsdl
    •  Absolute Path :  Provide complete xdo path
    •  Example : /Custom/Financials/int/Reports/samplereport.xdo
  5. ERP Adapter :
    • Service Catalog :
      • https://<fusion app url>/fndAppCoreServices/ServiceCatalogService?wsdl
    • Erp Integration :
      • https://<fusion app url>/fscmService/ErpIntegrationService
    • Event Catalog :
      • https://<fusion app url>/soa-infra
    • Event Configuration 
      • https://<fusion app url>/soa-infra/PublicEvent/catalog
    • Event Subscriber Check:
      • https://<fusion app url>/soa-infra/PublicEvent/subscriptions
  6. Token Relay
    • https://<fusion app url>/fscmRestApi/tokenrelay


HCM Details:


  1. You encrypt files using the Oracle HCM Cloud public key.
  2. The data-loading process decrypts files using the Oracle HCM Cloud private key.
  3. Generate the PGP encryption key pair and download the Oracle HCM Cloud public key to Encrypt the file.  

  •  Submit HCM Data Load
    • Upload File to UCM using following UCM Service. 
      • https://hostname:443/idcws/GenericSoapPort?WSDL
        • Read the file as an attachment
        • Pass the opaque contents to UCM
        • Get the content Id from the response.
        • Service IdcService="CHECKIN_UNIVERSAL"
        • dDocTitle
        • dDocAccount
        • dDocType
        • dSecurityGroup
        • dDocAuthor 
    • Invoke HCM Webservice to Load and Import the data. 
      • https://hostname/hcmCommonDataLoader/HCMDataLoader?WSDL
      • Operation - importAndLoadData
        • Pass the content ID in the request message. 
        • Pass the additional Parameters.
    • Get the Status of HDL load and import job. 
      • Operation - getDataSetStatus
        • Pass the content id in the input parameter in the following format. 
          • "ContentId="$UCMContentID
          • Exmple : ContentId=12345
  • To Submit Extract and Get the Output from UCM
    • Submit Extract
      • URL - https://hostname:443/hcmService/FlowActionsService?WSDL
      • Operation 
        • SubmitFlow  - To Submit the job
          • Provide Extract Name 
          • Extract Run ID
        • getFlowTaskInstanceStatus  - To Get the  Status
          • Provide Extract Name
          • Provide Extract Run Id
        • getIntegrationContentId  - To Get the content ID
          • Provide Extract Name
          • Provide Extract Run Id
    • Get the Content from UCM.
      • URL - https://hostname:443/idcws/GenericSoapPort?WSDL
        • Service IdcService="GET_FILE"
        • dDocName = ContentId
      • Decode the Data and Write the file. 
UCM Details:
  • Web Service 
    • URL - https://hostname:443/idcws/GenericSoapPort?WSDL
BIP Webservices:
  • To get the list of Webservices 
    • URL - http://hostname/xmlpserver/services
  • To Schedule a BIP Job.
    • https://hostname/xmlpserver/services/v2/ScheduleService?wsdl
    • Operations
      • scheduleReport - To Submit the Job
      • getScheduledReportStatus - To get the Status of the Job.
      • getAllJobInstanceIDs  - To Get the Job Id's
      • getXMLData  - To Get the XML Data 

Sample Payload : 

HCM Extract : 


<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:typ="http://xmlns.oracle.com/apps/hcm/processFlows/core/flowActionsService/types/" xmlns:flow="http://xmlns.oracle.com/apps/hcm/processFlows/core/flowControllerService/">

   <soapenv:Header/>

   <soapenv:Body>

      <typ:submitFlow>

         <typ:flowName>SAMPLE_EXTRACT_REPORT</typ:flowName>
         <!--Zero or more repetitions:-->
         <typ:parameterValues>
            <flow:ParameterName>Effective Date</flow:ParameterName>
            <flow:ParameterValue>2019-10-17</flow:ParameterValue>
         </typ:parameterValues>
         <typ:parameterValues>
            <flow:ParameterName>LookbackDate</flow:ParameterName>
            <flow:ParameterValue>2019-10-02</flow:ParameterValue>
         </typ:parameterValues>
         <typ:parameterValues>
            <flow:ParameterName>RunDate</flow:ParameterName>
            <flow:ParameterValue>2019-10-17</flow:ParameterValue>
         </typ:parameterValues>    <typ:flowInstanceName>SAMPLE_EXTRACT_REPORT191017084530</typ:flowInstanceName>
         <typ:legislativeDataGroupName>US Legislative Data Group</typ:legislativeDataGroupName>
         <typ:recurringFlag>false</typ:recurringFlag>
      </typ:submitFlow>
   </soapenv:Body>
</soapenv:Envelope>


HCM Get Extract Status :

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:typ="http://xmlns.oracle.com/apps/hcm/processFlows/core/flowActionsService/types/">
   <soapenv:Header/>
   <soapenv:Body>
      <typ:getFlowTaskInstanceStatus>         <typ:flowInstanceName>SAMPLE_EXTRACT_REPORT191017084530</typ:flowInstanceName>         <typ:flowTaskInstanceName>SAMPLE_EXTRACT_REPORT</typ:flowTaskInstanceName>
         <typ:legislativeDataGroupName>US Legislative Data Group</typ:legislativeDataGroupName>
      </typ:getFlowTaskInstanceStatus>
   </soapenv:Body>
</soapenv:Envelope>


HCM Get Content ID of an Extract :


<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:typ="http://xmlns.oracle.com/apps/hcm/processFlows/core/flowActionsService/types/">
   <soapenv:Header/>
   <soapenv:Body>
      <typ:getIntegrationContentId>         <typ:flowInstanceName>SAMPLE_EXTRACT_REPORT191017084530</typ:flowInstanceName>         <typ:flowTaskInstanceName>SAMPLE_EXTRACT_REPORT</typ:flowTaskInstanceName>
         <typ:legislativeDataGroupName>US Legislative Data Group</typ:legislativeDataGroupName>         <typ:integrationName>IntegrationIdDefinedinExtractDeliveryType</typ:integrationName>
      </typ:getIntegrationContentId>
   </soapenv:Body>
</soapenv:Envelope>


Sample HDL File Load :

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:typ="http://xmlns.oracle.com/apps/hcm/common/dataLoader/core/dataLoaderIntegrationService/types/">
   <soapenv:Header/>
   <soapenv:Body>
      <typ:importAndLoadData>
         <typ:ContentId>12345</typ:ContentId>         <typ:Parameters>ImportMaximumErrors=100,LoadMaximumErrors=100,LoadConcurrentThreads=4,FileEncryption=PGPSIGNED,DeleteSourceFile=N</typ:Parameters>
      </typ:importAndLoadData>
   </soapenv:Body>

</soapenv:Envelope>


<GenericRequest xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" webKey="cs">
<tns:Service IdcService="GET_FILE">
<tns:User/>
<tns:Document>
<tns:Field name="dDocName">Doc_Id233088</tns:Field>
<tns:Field name="RevisionSelectionMethod">Latest</tns:Field>
<tns:Field name="Rendition">Web</tns:Field>
</tns:Document>
</tns:Service>

</GenericRequest>

PGP Commands


Public key (to lock/encrypt the message) and a Private key (to unlock/decrypt the message).

You need to send the public key to all your users so that they can encrypt sensitive messages that they want to send it to you.

 Once you receive an encrypted message, you need to use your private key to decrypt it.


  • Command to generate the key pair. 
             pgp --gen-key "Vijaya User" --key-type RSA --bits 2048 --passphrase "Pass Phrase"
             
            script -q -c "gpg --gen-key" /dev/null
  • Command to list keys. 
            pgp --list-keys
  • export the key using following command.
           pgp --export  $input
           
          input = User Key = "Vijaya User" (from above pgp  generation key)
          input  = Key ID  = This will get generated while creating the key.
  • import pgp key
          pgp  -- import " file_name.asc"

          Reference :  https://linuxaria.com/howto/how-to-easily-encrypt-a-file-with-gpg-on-linux
  • Sample gpg command to decrypt a file :
           gpg --batch --output OUT_PUT_FILE_NAME  --passphrase-fd 0        ENCRYPTED_FILE_NAME.pgp  < pwd.txt

         pwd.txt will have the passphrase.
     
         GPG allows you to bypass prompts with the --batch flag, so we can add that in to our command

        --passphrase-fd 0 tells GnuPG to retrieve the passphrase from input into the current shel

Sample Script to Decrypt:

cat $PassPhrase | gpg --output $OutputFileName --batch --yes --passphrase-fd 0 $SourceFilePath


Sample Script to Enecrypt:

gpg --batch --yes --trust-model always -r $PublicKeyUser -o $OutFilePath -e $SourceFilePath