OTL Timecard Upload
OTL Timecard Upload creates, updates, submits for approval and deletes Oracle Time and Labor (OTL) timecards from Excel – Projects lines (project / task / expenditure type) and Payroll lines (element) – deposited through the standard OTL TimeStore API, as an alternative to self-service time entry.
When to use it
- Bulk-enter timecards for many employees at once instead of one-by-one self-service entry.
- Load both Projects time and Payroll time in a single sheet.
- Save large batches of timecards in Working status for later review, then submit them in a controlled wave.
- Correct or re-submit existing timecards by downloading, editing and re-uploading.
- Delete erroneous timecard lines, or whole timecards, in bulk.
- Load time that originates outside EBS (an external time system or a spreadsheet).
Before you start
- Blitz Report is installed and you are signed in to a responsibility with access to the relevant employees.
- Each employee is eligible for OTL time entry and has an OTL recurring-period preference.
- For Projects lines, run the upload under a responsibility whose operating-unit context matches the projects being charged (the same context self-service time entry uses).
Step 1 – Choose a mode, set the parameters and download
In Blitz Report, open OTL Timecard Upload, choose an Upload Mode (Create, Update – the default – downloads existing timecards to edit; Create gives an empty template), and set the parameters:
| Parameter | Purpose |
|---|---|
| Upload Mode | Create or Create, Update. Default is Create, Update. |
| Employee | Optionally download one employee’s timecards. |
| Period Start Date From / To | Restrict the download by timecard period. |
| Approval Status | Restrict the download to timecards in a chosen status. |
Run the upload to download and open the Excel file. Rows for the same employee and period are deposited together as one timecard, automatically created or updated.
Step 2 – Enter the time
On each line enter the Employee, the Date and the Hours. For a Projects line, fill the Project, Task and Expenditure Type; for a Payroll line, fill the Hours Type (the element). Add a Line Comment if needed. Enter either the three Projects columns or the Hours Type on a line, not both.
Step 3 – Submit or delete (optional)
Set Submit to Yes on any row of a timecard to submit it for approval; leave it blank to save in Working status. To remove a downloaded line, set Delete Line to Yes; deleting all lines removes the whole timecard.
Step 4 – Validate and Save
Click Validate and Save. This checks for missing required values and runs the upload’s validation, then saves the file. Correct anything it flags before continuing.
Step 5 – Upload and view the result
Back in Blitz Report, click Upload and select your saved file. This submits the Blitz Upload request, which deposits each timecard (saved or submitted for approval). When it finishes, a result report opens showing each row as success or error.
What’s produced
- Created, updated, submitted or deleted OTL timecards.
- A result report listing every row with a status (success or error) and a message.
Common questions
Does the upload create the same data as self-service time entry?
Yes – it uses the same TimeStore deposit engine, so it derives the same application set, approval style and security context from the employee’s OTL preferences.
How do I save without submitting for approval?
Leave the Submit column blank – the timecard is saved in Working status. Set Submit = Yes on any one of its rows to submit the whole timecard.
Why did my update re-trigger approval?
Updating a timecard that is already Submitted or Approved automatically re-submits it through the approval workflow.
Why can’t I edit a particular timecard?
If it has already been transferred to Projects, Payroll or Purchasing, the upload will not modify it.
How do I delete a whole timecard?
Set Delete Line = Yes on every downloaded line of that timecard; when all lines are deleted, the timecard itself is removed.
Two employees have the same name – how does it pick the right one?
Fill the Employee Number column to identify the person uniquely.
Troubleshooting
| Message | Cause | What to do |
|---|---|---|
| Employee is ambiguous – populate the Employee Number column | Two or more active employees share the same full name. | Enter the Employee Number for that row. |
| Employee has no OTL application set preference and timecards cannot be deposited | The employee is not set up for OTL time entry. | Set up the employee’s OTL eligibility, then re-upload. |
| Enter either Project, Task and Expenditure Type or an Hours Type on a line, not both | The line mixes Projects and Payroll classification, or a Projects line is missing one of the three columns. | Use only one classification per line; for a Projects line fill all of Project, Task and Expenditure Type. |
| This timecard has already been transferred and cannot be modified | The timecard was already retrieved by Projects, Payroll or Purchasing. | Handle the correction in the recipient application; don’t modify it via the upload. |
| Projects validation error (e.g. expenditure organization not valid) | The upload ran under a responsibility whose operating unit doesn’t match the projects charged. | Re-run under the OTL/Projects responsibility whose operating unit matches the projects. |
select null action_, null status_, null message_, null modified_columns_, row_number() over (order by x.employee, x.period_starting, x.date_worked, x.detail_bb_id) upload_row, x.employee, x.employee_number, x.approval_status, x.transferred, x.period_starting, x.date_worked, x.project, x.task, x.expenditure_type, x.hours_type, x.hours, x.line_comment, x.submit_timecard, x.delete_line, x.timecard_bb_id, x.detail_bb_id from ( select papf.full_name employee, papf.employee_number, xxen_util.meaning(hts.approval_status,'HXC_APPROVAL_STATUS',3) approval_status, xxen_util.yes(case when exists (select null from hxc_transaction_details htd, hxc_transactions ht where htd.time_building_block_id=htbb_det.time_building_block_id and htd.time_building_block_ovn=htbb_det.object_version_number and htd.status='SUCCESS' and htd.transaction_id=ht.transaction_id and ht.type='RETRIEVAL' and ht.status='SUCCESS') then 'Y' end) transferred, trunc(hts.start_time) period_starting, trunc(htbb_day.start_time) date_worked, ppa.segment1 project, pt.task_number task, decode(hta.attribute_category,'PROJECTS',hta.attribute3) expenditure_type, petf.element_name hours_type, htbb_det.measure hours, htbb_det.comment_text line_comment, null submit_timecard, null delete_line, hts.timecard_id timecard_bb_id, htbb_det.time_building_block_id detail_bb_id from hxc_timecard_summary hts, hxc_time_building_blocks htbb_day, hxc_time_building_blocks htbb_det, hxc_time_attribute_usages htau, hxc_time_attributes hta, per_all_people_f papf, pa_projects_all ppa, pa_tasks pt, pay_element_types_f petf where :p_upload_mode like '%'||xxen_upload.action_update and hts.resource_id=papf.person_id and hts.start_time between papf.effective_start_date and papf.effective_end_date and htbb_day.parent_building_block_id=hts.timecard_id and htbb_day.parent_building_block_ovn=hts.timecard_ovn and htbb_day.scope='DAY' and htbb_day.date_to=to_date('4712-12-31','YYYY-MM-DD') and htbb_det.parent_building_block_id=htbb_day.time_building_block_id and htbb_det.parent_building_block_ovn=htbb_day.object_version_number and htbb_det.scope='DETAIL' and htbb_det.date_to=to_date('4712-12-31','YYYY-MM-DD') and htau.time_building_block_id=htbb_det.time_building_block_id and htau.time_building_block_ovn=htbb_det.object_version_number and htau.time_attribute_id=hta.time_attribute_id and (hta.attribute_category='PROJECTS' or hta.attribute_category like 'ELEMENT - %') and ppa.project_id(+)=decode(hta.attribute_category,'PROJECTS',to_number(hta.attribute1)) and pt.task_id(+)=decode(hta.attribute_category,'PROJECTS',to_number(hta.attribute2)) and petf.element_type_id(+)=case when hta.attribute_category like 'ELEMENT - %' then to_number(substr(hta.attribute_category,11)) end and htbb_day.start_time between petf.effective_start_date(+) and petf.effective_end_date(+) ) x where 1=1 |
| Parameter Name | SQL text | Validation | |
|---|---|---|---|
| Upload Mode |
| LOV | |
| Employee |
| LOV | |
| Period Start Date From |
| Date | |
| Period Start Date To |
| Date | |
| Approval Status |
| LOV |