Introduction

Cloud HCM permet d'extraire des données de HCM à l'aide d'une plate-forme nouvelle génération avec une banque de données en lecture seule.

Objectifs

A la fin de ce tutoriel, vous saurez comment :

  • Interroger les vues d'extraction des salariés et leur hiérarchie d'objets
  • Soumettre et suivre de manière asynchrone les demandes de travail d'extraction pour l'extraction des données de la hiérarchie des salariés sélectionnée
  • Télécharger les fichiers de sortie d'extraction

Prérequis

Avant de commencer :

  1. Contactez Oracle CoE pour vous assurer que la banque de données en lecture seule est provisionnée dans votre pod et que vos données sont répliquées
  2. Effectuer la configuration de sécurité requise, notamment :
    • Configuration de la sécurité des données
    • OAuth configuration de l'application client

Cas d'emploi

Cette fonctionnalité vous permet de répondre aux cas d'utilisation suivants.

Extraction complète des données

L'extraction complète des données de salarié peut être une activité ponctuelle ou périodique.

Vous pouvez extraire toute la hiérarchie d'objets ou seulement un sous-ensemble de celle-ci.

L'extraction complète des données extrait tous les enregistrements qui correspondent aux critères de filtrage et les fichiers de sortie peuvent être très volumineux.

Les objets à date d'effet seront extraits à la date d'effet demandée, où la date d'extraction actuelle est la valeur par défaut.

Extraction incrémentielle des données

L'extraction incrémentielle des données du salarié est généralement une activité périodique planifiée.

Vous pouvez extraire toute la hiérarchie d'objets ou seulement un sous-ensemble de celle-ci.

Dans ce cas d'utilisation, vous souhaitez extraire uniquement les objets qui ont été modifiés depuis la précédente exécution d'extraction, où la première est la ligne de base. Pour ce faire, les filtres d'attribut timeUpdated doivent être appliqués à n'importe quel niveau soumis à la détection des modifications.

Une requête d'extraction de données incrémentielle peut appliquer des critères de filtrage supplémentaires. Les fichiers de sortie sont généralement plus petits par rapport à l'extraction complète, car ils contiennent uniquement des delta.

Seules les valeurs actuelles des attributs seront extraites.

Les objets à date d'effet seront extraits à la date d'effet demandée, où la date d'extraction actuelle est la valeur par défaut.

Attention :

Les enregistrements supprimés physiquement ne seront pas renvoyés à l'aide du filtrage par timeUpdated.

Tâche 1 : choisir une vue d'extraction

Choisissez la vue d'extraction à utiliser, en fonction des objets et des attributs requis. Les vues disponibles à partir de la version 26A sont répertoriées ci-dessous, ainsi que les objets et attributs pouvant être extraits, regroupés par module.

Pour les objets à date d'effet, vous trouverez généralement une vue standard qui renvoie les données en vigueur à la date indiquée et, en outre, une vue historique qui renvoie tous les enregistrements à date d'effet.

Plusieurs langues:

Les attributs traduisibles ne sont disponibles qu'en anglais à ce stade.

RH globales - Emploi

Nom de module oraHcmHrCoreEmployment
Chemin de contexte du module hcmHrCore/employment

Nom de vue Attributs
actionExtracts id
actionCode
startDate
endDate
timeCreated
timeUpdated
createdBy
updatedBy
actionName
description
assignmentStatusTypeExtracts ID
assignmentStatusCode
fromDate
toDate
activeFlag
defaultFlag
timeCreated
timeUpdated
createdBy
updatedBy
userStatus
emailExtracts ID
fromDate
toDate
emailAddress
timeUpdated
updatedBy
timeCreated
createdBy
primaryFlag
personDetail.id
personDetail.personNumber
personDetail.effectiveStartDate
personDetail.effectiveEndDate
type.lookupCode
type.lookupType
type.meaning
legislativeInformationExtracts id
effectiveStartDate
effectiveEndDate
sexe
maritalStatus
maritalStatusChangeDate
highestEducationLevel
timeUpdated
updatedBy
timeCreated
createdBy
personDetail.id
personDetail.personNumber
personDetail.effectiveStartDate
personDetail.effectiveEndDate
legislation.territoryCode
legislation.territoryShortName
legislativeInformationHistoryExtracts ID
effectiveStartDate
effectiveEndDate
sexe
maritalStatus
maritalStatusChangeDate
highestEducationLevel
timeUpdated
updatedBy
timeCreated
createdBy
personDetail.id
personDetail.personNumber
legislation.territoryCode
legislation.territoryShortName
managerHierarchyExtracts effectiveStartDate
effectiveEndDate
personId
assignmentId
managerType
managerLevel
managerId
managerAssignmentId
primaryAssignmentFlag
primaryManagerFlag
createdBy
timeCreated
updatedBy
timeUpdated
personAssignment.id
personAssignment.effectiveStartDate
personAssignment.effectiveEndDate
personAssignment.effectiveSequence
personAssignment.effectiveLatestChange
personAssignment.assignmentType
personAssignment.assignmentNumber
personAssignment.primaryFlag
personAssignment.businessTitle
personAssignment.workAtHomeFlag
personAssignment.officeBuilding
personAssignment.officeFloor
personAssignment.officeMailStop
personAssignment.officeNumber
personAssignment.primaryAssignmentFlag
personAssignment.primaryWorkRelationshipFlag
personAssignment.timeUpdated
personAssignment.updatedBy
personAssignment.timeCreated
personAssignment.createdBy
personAssignment.systemPersonType
personAssignment.labourUnionMemberFlag
personAssignment.managerFlag
personAssignment.probationEndDate
personAssignment.probationPeriod
personAssignment.probationPeriodUnit
personAssignment.normalHours
personAssignment.frequency
personAssignment.endTime
personAssignment.startTime
personAssignment.noticePeriod
personAssignment.noticePeriodUOM
personAssignment.workerCategory
personAssignment.assignmentCategory
personAssignment.hourlyPaidOrSalaried
personAssignment.projectedEndDate
personAssignment.projectedStartDate
personAssignment.assignmentStatusType
personAssignment.retirementAge
personAssignment.retirementDate
personAssignment.synchronizeFromPositionFlag
personAssignment.fullTimeOrPartTime
personAssignment.permanentAssignmentFlag
personAssignment.seniorityBasis
personAssignment.overtimePeriod
personAssignment.adjustedFullTimeEquivalent
personAssignment.annualWorkingDuration
personAssignment.annualWorkingDurationUnit
personAssignment.annualWorkingRatio
personAssignment.standardFrequency
personAssignment.standardWorkingHours
personAssignment.standardAnnualWorkingDuration
personAssignment.sequence
personAssignment.department.id
personAssignment.department.name
personAssignment.department.title
personAssignment.department.effectiveStartDate
personAssignment.department.effectiveEndDate
personAssignment.legalEmployer.id
personAssignment.legalEmployer.name
personAssignment.legalEmployer.effectiveStartDate
personAssignment.legalEmployer.effectiveEndDate
personAssignment.legislation.territoryCode
personAssignment.legislation.territoryShortName
personAssignment.position.id
personAssignment.position.effectiveStartDate
personAssignment.position.effectiveEndDate
personAssignment.position.name
personAssignment.position.code
personAssignment.grade.id
personAssignment.grade.effectiveStartDate
personAssignment.grade.effectiveEndDate
personAssignment.grade.name
personAssignment.grade.code
personAssignment.location.id
personAssignment.location.effectiveStartDate
personAssignment.location.effectiveEndDate
personAssignment.location.name
personAssignment.location.code
personAssignment.location.mainAddress.id
personAssignment.location.mainAddress.effectiveStartDate
personAssignment.location.mainAddress.effectiveEndDate
personAssignment.location.mainAddress.county
personAssignment.location.mainAddress.state
personAssignment.location.mainAddress.province
personAssignment.location.mainAddress.townOrCity
personAssignment.location.mainAddress.postalCode
personAssignment.location.mainAddress.longPostalCode
personAssignment.location.mainAddress.addressLine1
personAssignment.location.mainAddress.addressLine2
personAssignment.location.mainAddress.addressLine3
personAssignment.location.mainAddress.addressLine4
personAssignment.location.mainAddress.country.territoryCode
personAssignment.location.mainAddress.country.territoryShortName
personAssignment.job.id
personAssignment.job.effectiveStartDate
personAssignment.job.effectiveEndDate
personAssignment.job.name
personAssignment.job.code
personAssignment.job.jobFunctionCode
personAssignment.job.managerLevel
personAssignment.job.jobFamily.id
personAssignment.job.jobFamily.effectiveStartDate
personAssignment.job.jobFamily.effectiveEndDate
personAssignment.job.jobFamily.code
personAssignment.job.jobFamily.name
personAssignment.collectiveAgreement.id
personAssignment.collectiveAgreement.effectiveStartDate
personAssignment.collectiveAgreement.effectiveEndDate
personAssignment.collectiveAgreement.name
personAssignment.personType.id
personAssignment.personType.userPersonType
personAssignment.workerUnion.id
personAssignment.workerUnion.effectiveStartDate
personAssignment.workerUnion.effectiveEndDate
personAssignment.workerUnion.name
personAssignment.assignmentUserStatus.id
personAssignment.assignmentUserStatus.userStatus
personAssignment.businessUnit.id
personAssignment.businessUnit.effectiveStartDate
personAssignment.businessUnit.effectiveEndDate
personAssignment.businessUnit.name
personAssignment.account.codeCombinationId
personAssignment.account.concatenatedSegments
personAssignment.account.chartOfAccountsId
personAssignment.ledger.ledgerId
personAssignment.ledger.name
personAssignment.workRelationship.id
personAssignment.workRelationship.startDate
personAssignment.workRelationship.workerType
personAssignment.workRelationship.timeCreated
personAssignment.workRelationship.timeUpdated
personAssignment.localName.id
personAssignment.localName.effectiveStartDate
personAssignment.localName.effectiveEndDate
personAssignment.localName.lastName
personAssignment.localName.firstName
personAssignment.localName.displayName
personAssignment.localName.listName
personAssignment.localName.timeCreated
personAssignment.localName.timeUpdated
personAssignment.globalName.id
personAssignment.globalName.effectiveStartDate
personAssignment.globalName.effectiveEndDate
personAssignment.globalName.lastName
personAssignment.globalName.firstName
personAssignment.globalName.displayName
personAssignment.globalName.listName
personAssignment.globalName.timeCreated
personAssignment.globalName.timeUpdated
personAssignment.personDetail.id
personAssignment.personDetail.personNumber
personAssignment.personDetail.effectiveStartDate
personAssignment.personDetail.effectiveEndDate
personAssignment.personDetail.timeCreated
personAssignment.personDetail.timeUpdated
nameExtracts id
effectiveStartDate
effectiveEndDate
lastname
firstname
middlenames
title
prefix
suffix
knownAs
previousLastname
honors
militaryRank
displayname
fullname
listname
ordername
type
timeUpdated
updatedBy
timeCreated
createdBy
personDetail.id
personDetail.personNumber
personDetail.effectiveStartDate
personDetail.effectiveEndDate
legislation.territoryCode
legislation.territoryShortname
nationalIdentifierExtracts ID
createdBy
expirationDate
issueDate
identifierNumber
placeOfIssue
timeCreated
timeUpdated
updatedBy
personDetail.id
personDetail.personNumber
personDetail.effectiveStartDate
personDetail.effectiveEndDate
country.territoryCode
country.territoryShortName
type.lookupCode
type.lookupType
type.meaning
personAddressExtracts id
effectiveStartDate
effectiveEndDate
type
primaryFlag
timeCreated
timeUpdated
createdBy
updatedBy
building
floorNumber
townOrCity
postalCode
longPostalCode
addressLine1
addressLine2
addressLine3
addressLine4
county
state
province
country.territoryCode
country.territoryShortName
personDetail.id
personDetail.personNumber
personDetail.effectiveStartDate
personDetail.effectiveEndDate
personAddressHistoryExtracts id
effectiveStartDate
effectiveEndDate
type
primaryFlag
timeCreated
timeUpdated
createdBy
updatedBy
création
floorNumber
townOrCity
postalCode
longPostalCode
addressLine1
addressLine2
addressLine3
addressLine4
comté
état
province
country.territoryCode
country.territoryShortName
personTypeExtracts ID
systemPersonType
activeFlag
defaultFlag
timeCreated
timeUpdated
createdBy
updatedBy
userPersonType
phoneExtracts id
fromDate
toDate
phoneNumber
areaCode
countryCodeNumber
extension
validité
timeUpdated
updatedBy
timeCreated
createdBy
primaryFlag
personDetail.id
personDetail.personNumber
personDetail.effectiveStartDate
personDetail.effectiveEndDate
legislation.territoryCode
legislation.territoryShortName
type.lookupCode
type.lookupType
type.meaning
workerAssignmentExtracts id
effectiveStartDate
effectiveEndDate
effectiveSequence
effectiveLatestChange
assignmentType
assignmentNumber
primaryFlag
businessTitle
workAtHomeFlag
officeBuilding
officeFloor
officeMailStop
officeNumber
primaryAssignmentFlag
primaryWorkRelationshipFlag
timeUpdated
updatedBy
timeCreated
createdBy
systemPersonType
labourUnionMemberFlag
managerFlag
probationEndDate
probationPeriod
probationPeriodUnit
normalHours
frequency
endTime
startTime
noticePeriod
noticePeriodUOM
workerCategory
assignmentCategory
hourlyPaidOrSalaried
projectedEndDate
projectedStartDate
assignmentStatusType
expenseCheckSendToAddress
retirementAge
retirementDate
synchronizeFromPositionFlag
fullTimeOrPartTime
permanentAssignmentFlag
seniorityBasis
overtimePeriod
adjustedFullTimeEquivalent
annualWorkingDuration
annualWorkingDurationUnit
annualWorkingRatio
standardFrequency
standardWorkingHours
standardAnnualWorkingDuration
sequence
department.id
department.name
department.title
department.effectiveStartDate
department.effectiveEndDate
legalEmployer.id
legalEmployer.name
legalEmployer.effectiveStartDate
legalEmployer.effectiveEndDate
legislation.territoryCode
legislation.territoryShortName
position.id
position.ffectiveStartDate
position.effectiveEndDate
position.name
position.code
grade.id
grade.effectiveStartDate
grade.effectiveEndDate
grade.name
grade.code
location.id
location.effectiveStartDate
location.effectiveEndDate
location.name
location.code
location.mainAddress.id
location.mainAddress.effectiveStartDate
location.mainAddress.effectiveEndDate
location.mainAddress.county
location.mainAddress.state
location.mainAddress.province
location.mainAddress.townOrCity
location.mainAddress.postalCode
location.mainAddress.longPostalCode
location.mainAddress.addressLine1
location.mainAddress.addressLine2
location.mainAddress.addressLine3
location.mainAddress.addressLine4
location.mainAddress.country.territoryCode
location.mainAddress.country.territoryShortName
job.id
job.effectiveStartDate
job.effectiveEndDate
job.name
job.code
job.jobFunctionCode
job.managerLevel
job.jobFamily.id
job.jobFamily.effectiveStartDate
job.jobFamily.effectiveEndDate
job.jobFamily.code
job.jobFamily.name
collectiveAgreement.id
collectiveAgreement.effectiveStartDate
collectiveAgreement.effectiveEndDate
collectiveAgreement.name
personType.id
personType.userPersonType
workerUnion.id
workerUnion.effectiveStartDate
workerUnion.effectiveEndDate
workerUnion.name
assignmentUserStatus.id
assignmentUserStatus.userStatus
businessUnit.id
businessUnit.effectiveStartDate
businessUnit.effectiveEndDate
businessUnit.name
account.codeCombinationId
account.concatenatedSegments
account.chartOfAccountsId
ledger.ledgerId
ledger.name
workRelationship.id
workRelationship.startDate
workRelationship.workerType
workRelationship.timeCreated
workRelationship.timeUpdated
localName.id
localName.effectiveStartDate
localName.effectiveEndDate
localName.lastName
localName.firstName
localName.displayName
localName.listName
localName.timeCreated
localName.timeUpdated
globalName.id
globalName.effectiveStartDate
globalName.effectiveEndDate
globalName.lastName
globalName.firstName
globalName.displayName
globalName.listName
globalName.timeCreated
globalName.timeUpdated
personDetail.id
personDetail.personNumber
personDetail.effectiveStartDate
personDetail.effectiveEndDate
personDetail.timeCreated
personDetail.timeUpdated
workerAssignmentHistoryExtracts id
effectiveStartDate
effectiveEndDate
effectiveSequence
effectiveLatestChange
assignmentType
assignmentNumber
primaryFlag
businessTitle
workAtHomeFlag
officeBuilding
officeFloor
officeMailStop
officeNumber
primaryAssignmentFlag
primaryWorkRelationshipFlag
timeUpdated
updatedBy
timeCreated
createdBy
systemPersonType
labourUnionMemberFlag
managerFlag
probationEndDate
probationPeriod
probationPeriodUnit
normalHours
frequency
endTime
startTime
noticePeriod
noticePeriodUOM
workerCategory
assignmentCategory
hourlyPaidOrSalaried
projectedEndDate
projectedStartDate
assignmentStatusType
expenseCheckSendToAddress
retirementAge
retirementDate
synchronizeFromPositionFlag
fullTimeOrPartTime
permanentAssignmentFlag
seniorityBasis
overtimePeriod
adjustedFullTimeEquivalent
annualWorkingDuration
annualWorkingDurationUnit
annualWorkingRatio
standardFrequency
standardWorkingHours
standardAnnualWorkingDuration
sequence
department.id
legalEmployer.id
legislation.territoryCode
legislation.territoryShortName
position.id
grade.id
location.id
location.mainAddress.id
location.mainAddress.country.territoryCode
location.mainAddress.country.territoryShortName
job.id
job.jobFamily.id
collectiveAgreement.id
personType.id
personType.userPersonType
workerUnion.id
assignmentUserStatus.id
assignmentUserStatus.userStatus
businessUnit.id
account.codeCombinationId
account.concatenatedSegments
account.chartOfAccountsId
ledger.ledgerId
ledger.name
workRelationship.id
localName.id
globalName.id
personDetail.id
personDetail.personNumber
workRelationshipExtracts id
startDate
workerType
timeCreated
timeUpdated
workerNumber
primaryFlag
createdBy
updatedBy
readyToConvertFlag
enterpriseSeniorityDate
legalEmployerSeniorityDate
onMilitaryServiceFlag
lastWorkingDate
terminationDate
notificationDate
projectedTerminationDate
legalEmployer.id
legalEmployer.name
legalEmployer.effectiveStartDate
legalEmployer.effectiveEndDate
legislation.territoryCode
legislation.territoryShortName
personDetail.id
personDetail.personNumber
personDetail.effectiveStartDate
personDetail.effectiveEndDate

Global HR - Structures de travail

Nom de module oraHcmHrCoreWorkStructures
Chemin de contexte du module hcmHrCore/workStructures

Nom de vue Attributs
gradeExtracts id
createdBy
effectiveStartDate
effectiveEndDate
code
timeCreated
timeUpdated
updatedBy
statut
nom
gradeHistoryExtracts id
createdBy
effectiveStartDate
effectiveEndDate
code
timeCreated
timeUpdated
updatedBy
statut
nom
jobExtracts id
name
effectiveStartDate
effectiveEndDate
code
status
createdBy
timeCreated
updatedBy
timeUpdated
jobFamilyExtracts id
code
nom
effectiveStartDate
effectiveEndDate
statut
timeUpdated
updatedBy
timeCreated
createdBy
jobFamilyHistoryExtracts id
code
nom
effectiveStartDate
effectiveEndDate
statut
timeUpdated
updatedBy
timeCreated
createdBy
jobHistoryExtracts id
name
effectiveStartDate
effectiveEndDate
code
status
createdBy
timeCreated
updatedBy
timeUpdated
locationExtracts id
createdBy
effectiveStartDate
effectiveEndDate
code
timeCreated
timeUpdated
updatedBy
statut
countryCode
employeeLocationFlag
shipToSiteFlag
receivingSiteFlag
billToSiteFlag
officeSiteFlag
detailCreatedBy
detailTimeCreated
detailUpdatedBy
detailTimeUpdated
timezoneCode
description
name
locationHistoryExtracts id
createdBy
effectiveStartDate
effectiveEndDate
code
timeCreated
timeUpdated
updatedBy
statut
countryCode
employeeLocationFlag
shipToSiteFlag
receivingSiteFlag
billToSiteFlag
officeSiteFlag
detailCreatedBy
detailTimeCreated
detailUpdatedBy
detailTimeUpdated
timezoneCode
description
name
positionExtracts ID
effectiveStartDate
effectiveEndDate
code
statut
hiringStatus
createdBy
timeCreated
updatedBy
timeUpdated
nom
positionHistoryExtracts ID
effectiveStartDate
effectiveEndDate
code
statut
hiringStatus
createdBy
timeCreated
updatedBy
timeUpdated
nom

HCM Common - Evénements

Nom de module oraHcmHrCoreEvents
Chemin de contexte du module hcmHrCore/events
Nom de vue Attributs
objectChangeExtracts id
sourceObjectName
groupSequence
operationType
dateEffectiveMode
effectiveDate
keyAttribute1Name
keyAttribute1DataType
keyAttribute1StringValue
keyAttribute1NumberValue
keyAttribute1DateValue
keyAttribute2Name
keyAttribute2DataType
keyAttribute2StringValue
keyAttribute2NumberValue
keyAttribute2DateValue
keyAttribute3Name
keyAttribute3DataType
keyAttribute3StringValue
keyAttribute3NumberValue
keyAttribute3DateValue
purgeDate
createdBy
timeCreated
updatedBy
timeUpdated
changeComponents.id
changeComponents.physicalType
changeComponents.logicalType
changeComponents.oldEffectiveStartDate
changeComponents.newEffectiveStartDate
changeComponents.oldEffectiveEndDate
changeComponents.newEffectiveEndDate
changeComponents.oldEffectiveSequence
changeComponents.newEffectiveSequence
changeComponents.createdBy
changeComponents.timeCreated
changeComponents.updatedBy
changeComponents.timeUpdated
changeComponents.changedAttributes.changedAttributesXml

Tâche 2 : préparer et tester une requête d'extraction

Chaque vue d'extraction dispose d'une API de requête qui permet de créer et de tester des requêtes d'extraction.

URL /api/boss/data/objects/ora/{{moduleContextPath}}/v1/{{viewName}}/$query
Méthode HTTP POST
Modèle de demande
{
    "collection": {
        "limit": {{limit}},
        "offset": {{offset}},
        "sortBy": [ {{sortAttributes}} ],
        "filter": "{{topLevelFilter}}"
    },
    "fields": [ {{topLevelAttributes}} ],
    "accessors": {
        "{{childObject}}": {
            "collection": {
                "filter": "{{childLevelFilter}}"
            },
            "fields": [ {{childLevelAttributes}} ],
            "accessors": {
                {{nestedChildAccessors}}               
            }
        },
        ...
    }
}
Modèle de réponse
200 OK

{
	"items": [
		{{items}}
	],
	"hasMore": {{hasMore}}
}

Objets et attributs

Définissez les données à extraire, c'est-à-dire les objets et attributs à inclure. L'inclusion d'objets enfant nécessite l'ajout de méthodes d'accès, tandis que l'inclusion de champs spécifiques nécessite leur énumération dans le tableau fields. Reportez-vous à l'exemple complet.

Filtrage

Définir le mode de filtrage des données. Vous pouvez utiliser les expressions suivantes pour créer des filtres pour votre requête.

Description Expression Exemple
Test d'égalité field = value ename = 'KING'
Test d'inégalité field != value activeFlag != true
Test supérieur à
Test inférieur à
field > value
field < value
sal > 1999.99
hireDate < '2000-01-01'
timeUpdated> '1900-01-01T13:51:54Z'
Test supérieur à ou égal à
Test inférieur à ou égal à
field >= value
field <= value< code>
sal >= 1999.99
hireDate <= '2000-01-01'
timeUpdated >= '1900-01-01T13:51:54Z'
Correspondance de modèle field LIKE 'pattern' job LIKE 'SALES%'
Test d'adhésion field IN (value1, ..., valueN) deptno IN (10, 20, 40)
Comparaison d'insensibilité à la casse field ~= value
field ~!= value
field ~> value
field ~< value
field ~>= value
field ~<= value
field ~LIKE 'pattern'
field ~IN (value1, ..., valueN)
ename ~= 'king'
Test d'existence (pour les relations de un à plusieurs) child[expression] assignments[startDate = null]
Conjonction logique expression AND expression  
Disjonction logique expression OR expression  
Négation logique !(expression)  

Filtrage par objet enfant dans une relation un-à-un :

Dans le cas de relations un à un, vous pouvez faire référence aux objets enfant et à leurs attributs dans la clause de filtre tout comme aux attributs d'autres objets parent, par exemple legalEmployer.id in (1001, 1002).

Filtrage des objets enfant dans une relation de un à plusieurs :

Dans de rares cas de relations un à plusieurs indiquées par le nom de la méthode d'accès pluriel, le test d'existence dans le tableau ci-dessus filtre les parents qui ont au moins un enfant répondant aux critères. Toutefois, cela ne signifie pas que les enregistrements enfant, s'ils sont extraits, seront filtrés automatiquement. Si vous voulez vous assurer que seuls les enregistrements enfant répondent aux critères, vous devez également répéter le filtre au niveau enfant.

Par exemple, si vous voulez extraire uniquement les composants de modification de type physique UPDATE, vous devez appliquer les filtres suivants dans la requête de modification d'objet :


{
    "collection": {
        "filter": "changeComponents[physicalType = 'UPDATE']"
    },
    "accessors": {
        "changeComponents": {
            "collection": {
                "filter": "physicalType = 'UPDATE'"
            },
...
                

Filtrage par date d'effet :

Dans le cas d'objets à date d'effet, les données entrent en vigueur à la date du jour par défaut. Pour extraire les données en vigueur à une date spécifique, utilisez le paramètre de requête HTTP $effectiveDate.

Par exemple, si vous voulez extraire les données effectives à partir de 2023-01-01, utilisez l'URL suivante pour votre requête :

/api/boss/data/objects/ora/hcmHrCore/employment/v1/{{viewPath}}/$query?$effectiveDate=2023-01-01

Tri

Définir le mode de tri des données. Le tri est exprimé par un tableau d'attributs de tri, y compris le sens de tri (asc ou desc). Exemple :

"sortBy": [
    {
        "totalAmount": "desc"
    },
    {
        "paidAmount": "asc"
    }
]

Pagination

Définir le mode de pagination des données. Le client peut contrôler la pagination en fournissant des paramètres de limite et de décalage. Exemple :

"limit": 200,
"offset": 400

La limite par défaut est 25 et la limite maximale est 1000.

Le décalage par défaut est 0 et indique le début des résultats.

L'attribut de niveau supérieur hasMore dans la réponse indique si d'autres résultats doivent être extraits.

La pagination ne doit pas être utilisée comme alternative pour extraire des données. Lors de l'interrogation de cette API, il n'y a aucune garantie que les données ne changent pas entre les demandes. Utilisez l'API asynchrone pour l'extraction des données.

Exemple

L'exemple de requête d'extraction ci-dessous est conçu pour extraire les informations sur les affectations, ainsi que les détails sur la société juridique et le service, qui :

  • Sont des affectations principales
  • Sont de type Employé
  • N'appartient pas aux sociétés juridiques avec les ID 10001 et 10002
  • sont en vigueur à la date d'extraction
  • Mis à jour (ou créé) depuis l'exécution précédente

Exemple de demande

Observez le paramètre limit et la condition d'attribut timeUpdated avec l'horodatage de l'exécution d'extraction précédente.

POST /api/boss/data/objects/ora/hcmHrCore/employment/v1/workerAssignmentExtracts/$query
 
{
    "collection": {
        "limit": 10,
        "filter": "primaryFlag = true and timeUpdated > '2025-05-01T00:00:00Z' and assignmentType = 'E' and !(legalEmployer.id in (10001, 10002))"
    },
    "fields": [ "id", "assignmentType", "assignmentStatusType", "effectiveStartDate", "effectiveEndDate", "businessTitle", "workAtHomeFlag", "assignmentNumber", "timeUpdated" ],
    "accessors": {
        "personDetail": {
            "fields": [ "personNumber" ]
        },
        "globalName": {
            "fields": [ "firstName", "lastName" ]
        },
        "department": {
            "fields": [ "id", "name", "title" ]
        },
        "legalEmployer": {
            "fields": [ "id", "name" ]
        },
        "workRelationship": {
            "fields": [ "id" ]
        }
    }
}
				

Exemple de réponse

200 OK
 
{
    "items": [
        {
            "id": "300000795682243",
            "assignmentType": "E",
            "assignmentStatusType": "ACTIVE",
            "effectiveStartDate": "2018-06-14",
            "effectiveEndDate": "4712-12-31",
            "businessTitle": "Aeronautical Engineer Level-9352",
            "workAtHomeFlag": false,
            "assignmentNumber": "EHDLWorker_190903_1637",
            "timeUpdated": "2025-05-06T11:42:17.821Z",
            "$id": "300000795682243",
            "$context": {
                "etag": "89"
            },
            "personDetail": {
                "personNumber": "HDLWorker_190903_1637",
                "$id": "100000329366771",
                "$context": {
                    "etag": ""
                }
            },
            "globalName": {
                "firstName": "Raymond-Olivier",
                "lastName": "Beer-Tröst",
                "$id": "300000795668871",
                "$context": {
                    "etag": ""
                }
            },
            "department": {
                "id": "300000044556980",
                "name": "South - Venaria DC-GROUP/SFIELESOIT74155",
                "title": null,
                "$id": "300000044556980",
                "$context": {
                    "etag": "13",
                    "links": {
                        "$self": {
                            "href": "https://example.com/api/boss/data/objects/ora/hcmHrCore/workStructures/v1/departments/300000044556980?$effectiveDate=2025-05-13"
                        }
                    }
                }
            },
            "legalEmployer": {
                "id": "300000046740247",
                "name": "PSR_US_LE_1",
                "$id": "300000046740247",
                "$context": {
                    "etag": "15",
                    "links": {
                        "$self": {
                            "href": "https://example.com/api/boss/data/objects/ora/hcmHrCore/workStructures/v1/legalEmployers/300000046740247?$effectiveDate=2025-05-13"
                        }
                    }
                }
            },
            "workRelationship": {
                "id": "100000329414679",
                "$id": "100000329414679",
                "$context": {
                    "etag": "1"
                }
            }
        },
        {
            "id": "300000795670049",
            "assignmentType": "E",
            "assignmentStatusType": "ACTIVE",
            "effectiveStartDate": "2018-05-28",
            "effectiveEndDate": "4712-12-31",
            "businessTitle": "Civil Engineer-6864",
            "workAtHomeFlag": false,
            "assignmentNumber": "EHDLWorker_190903_11128",
            "timeUpdated": "2025-05-06T11:42:25.787Z",
            "$id": "300000795670049",
            "$context": {
                "etag": "89"
            },
            "personDetail": {
                "personNumber": "HDLWorker_190903_11128",
                "$id": "100000329383875",
                "$context": {
                    "etag": ""
                }
            },
            "globalName": {
                "firstName": "Charlotte-Pénélope",
                "lastName": "Beer-Tröst",
                "$id": "300000795669677",
                "$context": {
                    "etag": ""
                }
            },
            "department": {
                "id": "300000044582197",
                "name": "Human Resources-GROUP/AT081000101",
                "title": null,
                "$id": "300000044582197",
                "$context": {
                    "etag": "13",
                    "links": {
                        "$self": {
                            "href": "https://example.com/api/boss/data/objects/ora/hcmHrCore/workStructures/v1/departments/300000044582197?$effectiveDate=2025-05-13"
                        }
                    }
                }
            },
            "legalEmployer": {
                "id": "300000046740247",
                "name": "PSR_US_LE_1",
                "$id": "300000046740247",
                "$context": {
                    "etag": "15",
                    "links": {
                        "$self": {
                            "href": "https://example.com/api/boss/data/objects/ora/hcmHrCore/workStructures/v1/legalEmployers/300000046740247?$effectiveDate=2025-05-13"
                        }
                    }
                }
            },
            "workRelationship": {
                "id": "100000329453488",
                "$id": "100000329453488",
                "$context": {
                    "etag": "1"
                }
            }
        },
        ...
    ],
    "hasMore": true
}

Tâche 3 : Soumettre une demande de travail d'extraction

Une fois la requête définie, une demande de travail d'extraction peut être soumise à l'aide de l'API du planificateur de travaux.

URL /api/saas-batch/jobscheduler/v1/jobRequests
Méthode HTTP POST
Modèle de demande
{
    "jobDefinitionName": "AsyncDataExtraction",
    "serviceName": "boss",
    "requestParameters": {
        "boss.module": "{{moduleName}}",
        "boss.resource.name": "{{viewName}}",
        "boss.resource.version": "v1",
        "boss.outputFormat": "json",
        "boss.request.system.param.effectiveDate": "{{effectiveDate}}",
        "boss.advancedQuery": "{{query}}"
    }
}

boss.request.system.param.effectiveDate est un paramètre facultatif qui doit être fourni uniquement si vous voulez extraire les données en vigueur à la date du jour différente de la date du jour.

Modèle de réponse

Une fois la soumission réussie, le code de réponse 202 est renvoyé, ainsi que l'en-tête Location avec l'URL pointant vers l'instance de demande de travail spécifique.

202 Accepted
 
Location: {{jobRequestUrl}}

Pagination lors de l'extraction des données :

Bien que vous ayez peut-être utilisé des contrôles de pagination, c'est-à-dire des paramètres limit et offset, lors de la création et du test de la requête, vous ne voulez pas que les résultats d'extraction soient limités par ces paramètres. Enlevez toute utilisation des paramètres limit et offset lors de la soumission d'une requête.

Transmission de la requête :

La requête transmise lors de la soumission de la demande de travail d'extraction doit être au format d'une chaîne JSON standard. Effectuez la préparation et le test de la requête à l'aide de l'adresse d'API $query et effectuez les opérations suivantes :
  • Évitez toutes les guillemets ("→ \")
  • Supprimer les caractères de nouvelle ligne (\n)
  • Réduire potentiellement les autres espaces blancs (par exemple, les indentations)

Dans l'ensemble, vous voulez aller, par exemple, de :

{
    "collection": {
        "limit": 100,
        "filter": "totalAmount > 10000"
    },
    "fields": [ "id", "totalAmount" ]
}

Pour :

{\"collection\": {\"filter\": \"totalAmount > 10000\"},\"fields\": [ \"id\", \"totalAmount\" ]}

Exemple

Exemple de demande

POST /api/saas-batch/jobscheduler/v1/jobRequests
 
{
    "jobDefinitionName": "AsyncDataExtraction",
    "serviceName": "boss",
    "requestParameters": {
        "boss.module": "oraHcmHrCoreEmployment",
        "boss.resource.name": "workerAssignmentExtracts",
        "boss.resource.version": "v1",
        "boss.outputFormat": "json",
        "boss.advancedQuery": "{\"collection\": {\"filter\": \"primaryFlag = true and timeUpdated > '2025-05-01T00:00:00Z' and assignmentType = 'E' and !(legalEmployer.id in (10001, 10002))\"},\"fields\": [ \"id\", \"assignmentType\", \"assignmentStatusType\", \"effectiveStartDate\", \"effectiveEndDate\", \"businessTitle\", \"workAtHomeFlag\", \"assignmentNumber\", \"timeUpdated\" ],\"accessors\": {\"personDetail\": {\"fields\": [ \"personNumber\" ]},\"globalName\": {\"fields\": [ \"firstName\", \"lastName\" ]},\"department\": {\"fields\": [ \"id\", \"name\", \"title\" ]},\"legalEmployer\": {\"fields\": [ \"id\", \"name\" ]},\"workRelationship\": {\"fields\": [ \"id\" ]}}}"
    }
}

Exemple de réponse

202 Accepted
 
Location: https://example.com/api/saas-batch/jobscheduler/v1/jobRequests/42075

Tâche 4 : vérification de la fin du travail

La vérification de la fin implique l'utilisation de l'API du planificateur de travaux pour interroger périodiquement les détails de la demande de travail, jusqu'à ce qu'elle aboutisse ou échoue.

URL /api/saas-batch/jobscheduler/v1/jobRequests/{{jobRequestId}}
Méthode HTTP GET

Terminé avec succès :

Une demande de travail est considérée comme terminée avec succès lorsque les conditions suivantes sont remplies :
Attribution Valeur attendue
jobDetails.jobProgress.completed true
jobDetails.jobProgress.status SUCCEEDED

Echec de l'exécution :

Une demande de travail est considérée comme ayant échoué lorsque la condition suivante est remplie. Dans ce cas, l'attribut jobDetails.jobProgress.message contiendra le message d'erreur.
Attribution Valeur attendue
jobDetails.jobProgress.status FAILED

Exemple

Exemple de demande

GET /api/saas-batch/jobscheduler/v1/jobRequests/42075

Exemples de réponses

Les réponses ci-dessous présentent les différentes étapes d'un travail soumis. Reportez-vous en particulier aux attributs jobProgress.status et jobProgress.completed.

Accepté/mis en file d'attente
200 OK
 
{
    "jobDetails": {
        "jobRequestId": 42075,
        "jobRequest": {
            "jobDefinitionName": "AsyncDataExtraction",
            "serviceName": "boss",
            "systemDerivedVersion": "90",
            "jobSubmitter": "TM-MFITZIMMONS",
            "requestParameters": {
                "boss.module": "oraHcmHrCoreEmployment",
                "boss.resource.name": "workerAssignmentExtracts",
                "boss.resource.version": "v1",
                "boss.outputFormat": "json",
                "boss.advancedQuery": "{\"collection\": {\"filter\": \"primaryFlag = true and timeUpdated > '2025-05-01T00:00:00Z' and assignmentType = 'E' and !(legalEmployer.id in (10001, 10002))\"},\"fields\": [ \"id\", \"assignmentType\", \"assignmentStatusType\", \"effectiveStartDate\", \"effectiveEndDate\", \"businessTitle\", \"workAtHomeFlag\", \"assignmentNumber\", \"timeUpdated\" ],\"accessors\": {\"personDetail\": {\"fields\": [ \"personNumber\" ]},\"globalName\": {\"fields\": [ \"firstName\", \"lastName\" ]},\"department\": {\"fields\": [ \"id\", \"name\", \"title\" ]},\"legalEmployer\": {\"fields\": [ \"id\", \"name\" ]},\"workRelationship\": {\"fields\": [ \"id\" ]}}}"
            },
            "jobRetryNumber": 0,
            "timeoutThreshold": 14400
        },
        "jobStatus": "ENQUEUED",
        "jobProgress": {
            "status": "ACCEPTED",
            "message": "Job is submitted",
            "startTime": "2025-05-25T13:39:01Z",
            "endTime": "2025-05-25T13:39:15Z",
            "completedPercentage": "0",
            "completed": false
        }
    },
    "$context": {
        "links": {
            "$self": {
                "href": "https://example.com/api/saas-batch/jobscheduler/v1/jobRequests/42075"
            }
        }
    }
}
En cours d'exécution
200 OK
 
{
    "jobDetails": {
        "jobRequestId": 42075,
        "jobRequest": {
            "jobDefinitionName": "AsyncDataExtraction",
            "serviceName": "boss",
            "systemDerivedVersion": "90",
            "jobSubmitter": "TM-MFITZIMMONS",
            "requestParameters": {
                "boss.module": "oraHcmHrCoreEmployment",
                "boss.resource.name": "workerAssignmentExtracts",
                "boss.resource.version": "v1",
                "boss.outputFormat": "json",
                "boss.advancedQuery": "{\"collection\": {\"filter\": \"primaryFlag = true and timeUpdated > '2025-05-01T00:00:00Z' and assignmentType = 'E' and !(legalEmployer.id in (10001, 10002))\"},\"fields\": [ \"id\", \"assignmentType\", \"assignmentStatusType\", \"effectiveStartDate\", \"effectiveEndDate\", \"businessTitle\", \"workAtHomeFlag\", \"assignmentNumber\", \"timeUpdated\" ],\"accessors\": {\"personDetail\": {\"fields\": [ \"personNumber\" ]},\"globalName\": {\"fields\": [ \"firstName\", \"lastName\" ]},\"department\": {\"fields\": [ \"id\", \"name\", \"title\" ]},\"legalEmployer\": {\"fields\": [ \"id\", \"name\" ]},\"workRelationship\": {\"fields\": [ \"id\" ]}}}"
            },
            "jobRetryNumber": 0,
            "timeoutThreshold": 14400
        },
        "jobStatus": "RUNNING",
        "jobProgress": {
            "jobRequestId": 42075,
            "status": "RUNNING",
            "message": "Job status is changed to RUNNING",
            "startTime": "2025-05-25T13:39:27Z",
            "endTime": "2025-05-25T13:40:25Z",
            "completedPercentage": "50",
            "completed": false
        }
    },
    "$context": {
        "links": {
            "$self": {
                "href": "https://example.com/api/saas-batch/jobscheduler/v1/jobRequests/42075"
            }
        }
    }
}
200 OK
 
{
    "jobDetails": {
        "jobRequestId": 42075,
        "jobRequest": {
            "jobDefinitionName": "AsyncDataExtraction",
            "serviceName": "boss",
            "systemDerivedVersion": "90",
            "jobSubmitter": "TM-MFITZIMMONS",
            "requestParameters": {
                "boss.module": "oraHcmHrCoreEmployment",
                "boss.resource.name": "workerAssignmentExtracts",
                "boss.resource.version": "v1",
                "boss.outputFormat": "json",
                "boss.advancedQuery": "{\"collection\": {\"filter\": \"primaryFlag = true and timeUpdated > '2025-05-01T00:00:00Z' and assignmentType = 'E' and !(legalEmployer.id in (10001, 10002))\"},\"fields\": [ \"id\", \"assignmentType\", \"assignmentStatusType\", \"effectiveStartDate\", \"effectiveEndDate\", \"businessTitle\", \"workAtHomeFlag\", \"assignmentNumber\", \"timeUpdated\" ],\"accessors\": {\"personDetail\": {\"fields\": [ \"personNumber\" ]},\"globalName\": {\"fields\": [ \"firstName\", \"lastName\" ]},\"department\": {\"fields\": [ \"id\", \"name\", \"title\" ]},\"legalEmployer\": {\"fields\": [ \"id\", \"name\" ]},\"workRelationship\": {\"fields\": [ \"id\" ]}}}"
            },
            "jobRetryNumber": 0,
            "timeoutThreshold": 14400
        },
        "jobStatus": "RUNNING",
        "jobProgress": {
            "jobRequestId": 42075,
            "status": "RUNNING",
            "message": "Publishing BOSS job progress: JobProgress(jobRequestId=42075, resourcePath=oraHcmHrCoreEmployment/v1/workers, dataDocName=null, deploymentId=null, jobStatus=RUNNING, startTime=2025-05-25T13:40:18Z, endTime=2025-05-25T13:40:38Z, completedPercentage=30, completed=false, error=null)",
            "startTime": "2025-05-25T13:40:40Z",
            "endTime": "2025-05-25T13:40:40Z",
            "completedPercentage": "30",
            "completed": false
        }
    },
    "$context": {
        "links": {
            "$self": {
                "href": "https://example.com/api/saas-batch/jobscheduler/v1/jobRequests/42075"
            }
        }
    }
}
Terminé avec succès
200 OK
 
{
    "jobDetails": {
        "jobRequestId": 42075,
        "jobRequest": {
            "jobDefinitionName": "AsyncDataExtraction",
            "serviceName": "boss",
            "systemDerivedVersion": "90",
            "jobSubmitter": "TM-MFITZIMMONS",
            "requestParameters": {
                "boss.module": "oraHcmHrCoreEmployment",
                "boss.resource.name": "workerAssignmentExtracts",
                "boss.resource.version": "v1",
                "boss.outputFormat": "json",
                "boss.advancedQuery": "{\"collection\": {\"filter\": \"primaryFlag = true and timeUpdated > '2025-05-01T00:00:00Z' and assignmentType = 'E' and !(legalEmployer.id in (10001, 10002))\"},\"fields\": [ \"id\", \"assignmentType\", \"assignmentStatusType\", \"effectiveStartDate\", \"effectiveEndDate\", \"businessTitle\", \"workAtHomeFlag\", \"assignmentNumber\", \"timeUpdated\" ],\"accessors\": {\"personDetail\": {\"fields\": [ \"personNumber\" ]},\"globalName\": {\"fields\": [ \"firstName\", \"lastName\" ]},\"department\": {\"fields\": [ \"id\", \"name\", \"title\" ]},\"legalEmployer\": {\"fields\": [ \"id\", \"name\" ]},\"workRelationship\": {\"fields\": [ \"id\" ]}}}"
            },
            "jobRetryNumber": 0,
            "timeoutThreshold": 14400
        },
        "jobStatus": "SUCCEEDED",
        "jobProgress": {
            "jobRequestId": 42075,
            "status": "SUCCEEDED",
            "message": "Job status is changed to SUCCEEDED",
            "startTime": "2025-05-25T13:39:27Z",
            "endTime": "2025-05-25T13:41:26Z",
            "completedPercentage": "100",
            "completed": true
        }
    },
    "$context": {
        "links": {
            "$self": {
                "href": "https://example.com/api/saas-batch/jobscheduler/v1/jobRequests/42075"
            }
        }
    }
}

Tâche 5 : extraire les détails de sortie de l'extraction

Une fois le travail terminé, les informations de fichier de sortie correspondantes peuvent être extraites. Cela implique d'utiliser l'API du gestionnaire de fichiers de travail pour l'instance de demande de travail d'extraction particulière.

La sortie est stockée dans des blocs compressés.

URL /api/saas-batch/jobfilemanager/v1/jobRequests/{{jobRequestId}}/outputFiles
Méthode HTTP GET

Taille du fichier:

La taille du fichier est renvoyée dans l'attribut de réponse items.fileSize et exprimée en octets.

Lien vers le tiroir de disques :

L'URL vers le contenu réel du fichier est renvoyée dans l'attribut de réponse items.$context.links.enclosure.

Exemple

Exemple de demande

GET /api/saas-batch/jobfilemanager/v1/jobRequests/42075/outputFiles

Exemple de réponse

Dans l'exemple ci-dessous, la sortie complète est stockée dans deux fichiers compressés.

200 OK
 
{
    "items": [
        {
            "fileName": "result_1_json.zip",
            "fileSize": 9390419,
            "timeCreated": "2025-04-22T22:04:22.667Z",
            "$context": {
                "links": {
                    "enclosure": {
                        "href": "https://example.com/api/saas-batch/jobfilemanager/v1/jobRequests/40071/outputFiles/result_1_json.zip/content"
                    },
                    "$self": {
                        "href": "https://example.com/api/saas-batch/jobfilemanager/v1/jobRequests/40071/outputFiles/result_1_json.zip"
                    }
                }
            }
        },
        {
            "fileName": "result_2_json.zip",
            "fileSize": 4462724,
            "timeCreated": "2025-04-22T22:04:36.565Z",
            "$context": {
                "links": {
                    "enclosure": {
                        "href": "https://example.com/api/saas-batch/jobfilemanager/v1/jobRequests/40071/outputFiles/result_2_json.zip/content"
                    },
                    "$self": {
                        "href": "https://example.com/api/saas-batch/jobfilemanager/v1/jobRequests/40071/outputFiles/result_2_json.zip"
                    }
                }
            }
        }
    ],
    "totalItems": 2,
    "$context": {
        "links": {
            "$self": {
                "href": "https://example.com/api/saas-batch/jobfilemanager/v1/jobRequests/40071/outputFiles"
            }
        }
    }
}

Tâche 6 : télécharger la sortie de l'extraction

Enfin, les fichiers de sortie d'extraction peuvent être téléchargés à l'aide de l'API du gestionnaire de fichiers de travail pour l'instance de demande de travail d'extraction et le fichier de sortie spécifiques.

URL /api/saas-batch/jobfilemanager/v1/jobRequests/{{jobRequestId}}/outputFiles/{{fileName}}/content
Méthode HTTP GET

Conseil :

Si nécessaire, vous pouvez télécharger des fichiers volumineux plus efficacement en implémentant le téléchargement multithread à l'aide de l'en-tête HTTP Range comme ci-dessous.

Range: {{startByte}}-{{endByte}}/{{fileSize}}

Exemple

Exemple de demande

GET /api/saas-batch/jobfilemanager/v1/jobRequests/42075/outputFiles/result_42075.json/content

Exemples de réponses

La réponse réelle est le contenu du fichier compressé binaire. Une fois décompressé, il est complet ou partiel (en cas d'utilisation de l'en-tête Range), charge utile JSON non formatée, avec des résultats complets ou partiels (en cas de bloc de fichier) de la requête d'extraction.

Exemple de résultats non compressés complets
{"items": [
    {"id":"300008335145001","assignmentType":"E","assignmentStatusType":"ACTIVE","effectiveStartDate":"2025-05-02","effectiveEndDate":"4712-12-31","businessTitle":"E7356262523","workAtHomeFlag":false,"assignmentNumber":"E7356262523","timeUpdated":"2025-05-01T07:53:15.722Z","$id":"300008335145001","$context":{"etag":"1"},"personDetail":{"personNumber":"7356262523","$id":"300008335144985","$context":{"etag":""}},"globalName":{"firstName":null,"lastName":"oracle","$id":"300008335144986","$context":{"etag":""}},"department":null,"legalEmployer":{"id":"300001939234024","name":"AORT Oracle United States","$id":"300001939234024","$context":{"etag":"6","links":{"$self":{"href":"/ora/hcmHrCore/workStructures/v1/$en-US/legalEmployers/300001939234024?$effectiveDate=2025-05-13"}}}},"workRelationship":{"id":"300008335144995","$id":"300008335144995","$context":{"etag":"1"}}},
    {"id":"300000310085281","assignmentType":"E","assignmentStatusType":"ACTIVE","effectiveStartDate":"2018-03-04","effectiveEndDate":"4712-12-31","businessTitle":"Medical Technologist Corporate Level-35321","workAtHomeFlag":false,"assignmentNumber":"EHDLWorker_190409_467490","timeUpdated":"2025-05-07T15:29:46.59Z","$id":"300000310085281","$context":{"etag":"90"},"personDetail":{"personNumber":"HDLWorker_190409_467490","$id":"100000127293313","$context":{"etag":""}},"globalName":{"firstName":"Martin-David","lastName":"Oestrovsky-Krein","$id":"300000310075057","$context":{"etag":""}},"department":{"id":"300000041568062","name":"GFIN Global Controlling-GROUP/GFINGC74155","title":null,"$id":"300000041568062","$context":{"etag":"13","links":{"$self":{"href":"/ora/hcmHrCore/workStructures/v1/$en-US/departments/300000041568062?$effectiveDate=2025-05-13"}}}},"legalEmployer":{"id":"300000046740247","name":"PSR_US_LE_1","$id":"300000046740247","$context":{"etag":"15","links":{"$self":{"href":"/ora/hcmHrCore/workStructures/v1/$en-US/legalEmployers/300000046740247?$effectiveDate=2025-05-13"}}}},"workRelationship":{"id":"100000127362395","$id":"100000127362395","$context":{"etag":"1"}}}
]}

Ressources de formation supplémentaires

Explorez d'autres ateliers sur le site docs.oracle.com/learn ou accédez à d'autres contenus d'apprentissage gratuits sur le canal Oracle Learning YouTube. En outre, visitez le site education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.

Pour obtenir de la documentation sur le produit, consultez Oracle Help Center.