RepliConnect Actions

An action is a type of request you can make using RepliConnect. The twelve actions supported in RepliConnect are described below.


BeginSession

A BeginSession request is used to start an API interaction.

When you send a BeginSession request, include your login name and password via basic HTTP authentication.

The successful "BeginSession" call will create a new user session at the server and return the session id. The session id is returned in two forms: 1) a cookie, and 2) an API response. If the client preserves cookies correctly, all following requests will be authenticated without the HTTP basic authentication.

Alternatively, all subsequent requests can use the returned session id via basic HTTP authentication with the username as __SESSIONID__ and password as the session id value. The __SESSIONID__ is constructed as underscore+underscore+"SESSIONID"+underscore+underscore

Structure of a BeginSession action:

[
  {
    "Action": "BeginSession"
  }
]

Example of a BeginSession action and response

EndSession

An EndSession request logs the user out from an API interaction.

Structure of a EndSession action:

[
  {
    "Action": "EndSession"
  }
]

Example of a EndSession action and response

Query

A query is a request to get (not update) data.

Structure of a Query action:

[
  {
    "Action":"Query",                                              /* "Query" Action  */
    "QueryType":"UserByEmail",                        /* the name of the query */
    "DomainType":"Replicon.Domain.User",  /* The type of object for the query */
    "Args":["doug@yourcompany.com"],          /* the array of arguments for the query */
    "Load":[{                       /* optional - to load relationships on the object */
        "Relationship":"Activities"      /* the name of the relationship to load */
      }]
  }
]

Example of a Query action and response

IdentityOnly:

"IdentityOnly" option is always used along with a relationship. This option specifies that for every domain object in the relationship only "Identity" will be presented in the query response.

Example of a IdentityOnly

Relationship Count:

"CountOf" option specifies a relationship name to find the count of the number of instances of that relationship for a given domain object. This "CountOf" usage is applicable for relationships with quantities like "Zero or More", "One or More" and "Zero or One" only.

Example of a Query CountOf

Query Sorting:

Use the SortBy parameter to sort query results by providing property names in the order in the desired sort order. Or, enum values may be reordered to specify their sort order. You may also specify "Descending": true|false as well as "NullIsLow": true|false to affect the sort order of a given sorting parameter.

Example of a Query SortBy

Query Pagination:

An initial pagination request for a query must include the StartIndex and Count. StartIndex must be a non-negative integer and Count must be a positive integer. In addition to the regular query response, the response of an initial request will include an extra JSON object containing two members: "Type" (with "QueryHandle" as the value) and "Identity" (with a GUID as the value).

Any subsequent requests for the same query should contain Action, StartIndex, Count and "QueryHandle" parameters only. The value of "QueryHandle" should be the GUID value of the "Identity" member provided in the response of initial pagination request.

Example of a Query Pagination initial request

Example of a Query Pagination request with QueryHandle

Create

A Create is a request to create an object.

Structure of the Create action:

[{
    "Action":"Create",                             /* "Create" Action  */
    "SendEmailNotifications": false,     /* optional to disable email notifications for that request */
    "Type":"Replicon.Domain.User",   /* the type of object for the create  */
    "Operations":[{                                  /* the array of operations to perform  */
        "__operation":"SetProperties",  /* "__operation" defines the operation  */
        "FirstName":"Jimmy",                 /* the properties or relationships to operate on */
        "LastName":"Brown",
        "LoginName":"jbrown",
        "Password":"passw0rd",
        "PrimaryDepartment":{               /* eg of a relationship to another object */
          "__type":"Replicon.Domain.Department", 
                 /* "__type" to define the type of the relationship  */
          "Identity":"1" 
                 /* "Identity" string for the identity of the existing object for the relationship */
        }
      }
    ]
  }
]

Example of a Create action and response

Request

[{
    "Action":"Create",
    "Type":"Replicon.Domain.User",
    "Operations":[{
        "__operation":"SetProperties",
        "FirstName":"Jimmy",
        "LastName":"Brown",
        "LoginName":"jbrown",
        "Password":"passw0rd",
        "PrimaryDepartment":{
          "__type":"Replicon.Domain.Department",
          "Identity":"1"
        }
      }
    ]
  }
]

Response

{
  "Status":"OK",
  "Value":[{
      "Type":"Replicon.Domain.User",
      "Identity":"11",
      "Properties":{
        "CurrentHoursPerDay":{
          "Type":"Timespan",
          "Hours":8,
          "Minutes":0,
          "Seconds":0,
          "Milliseconds":0
        },
        "Email":null,
        "ExternalEmail":null,
        "OfflineEmail":null,
        "StartDate":{
          "Type":"Date",
          "Year":2010,
          "Month":9,
          "Day":3
        },
        "EndDate":{
          "Type":"Date",
          "Future":true
        },
        "ExternalId":null,
        "IsSampleUser":false,
        "Id":11,
        "AccountExpiry":{
          "Type":"Date",
          "Future":true
        },
        "PasswordLastChanged":{
          "Type":"Date",
          "Year":2010,
          "Month":9,
          "Day":3
        },
        "ForcePasswordChange":true,
        "DisablePasswordChange":false,
        "LoginName":"jbrown",
        "Disabled":false,
        "Password":"passw0rd",
        "Domain":"REPLICON",
        "FirstName":"Jimmy",
        "LastName":"Brown",
        "DefaultBillingRate":null
      },
      "UserDefinedFields":{
        "QuickBooks Payroll Item":""
      }
    }
  ]
}

 

LoadIdentity

A LoadIdentity is a request to load identity values for an object. These identities can then be used in other requests.

Structure of the LoadIdentity action:

[{
    "Action":"LoadIdentity",                                   /* "LoadIdentity" Action */
    "DomainType":"Replicon.Domain.User",  /* The type of object for the LoadIdentity */
    "Identity":"3",                               /* "Identity" string for the identity of the existing object */ 
    "Load":[{                                      /* optional -to load relationships on the object */
        "Relationship":"PayrollRateHistory",      /* the name of the relationship to load */
        "CountOf":"Projects"      /* Optional - to find relationship count */
      }
    ]
  }
]

Example of a LoadIdentity action and response

Request

[{
    "Action":"LoadIdentity",
    "DomainType":"Replicon.Domain.User",
    "Identity":"3",
    "Load":[{
        "Relationship":"PayrollRateHistory"
      }
    ]
  }
]

Response

{
  "Status":"OK",
  "Value":[{
      "Type":"Replicon.Domain.User",
      "Identity":"3",
      "Properties":{
        "CurrentHoursPerDay":{
          "Type":"Timespan",
          "Hours":8,
          "Minutes":0,
          "Seconds":0,
          "Milliseconds":0
        },
        "Email":"sally@yourcompany.com",
        "ExternalEmail":"sally.green@yourcompany.com",
        "OfflineEmail":null,
        "StartDate":{
          "Type":"Date",
          "Year":2010,
          "Month":1,
          "Day":26
        },
        "EndDate":{
          "Type":"Date",
          "Future":true
        },
        "ExternalId":"101",
        "IsSampleUser":true,
        "Id":3,
        "AccountExpiry":{
          "Type":"Date",
          "Future":true
        },
        "PasswordLastChanged":null,
        "ForcePasswordChange":false,
        "DisablePasswordChange":false,
        "LoginName":"sally",
        "Disabled":false,
        "Password":null,
        "Domain":"",
        "FirstName":"Sally",
        "LastName":"Green",
        "DefaultBillingRate":null
      },
      "UserDefinedFields":{
        "QuickBooks Payroll Item":"Salary"
      },
      "Relationships":{
        "PayrollRateHistory":[{
            "Type":"Replicon.Domain.PayrollRateHistory",
            "Identity":"3",
            "Properties":{
              "EffectiveDate":{
                "Type":"Date",
                "Past":true
              },
              "EndDate":{
                "Type":"Date",
                "Future":true
              },
              "HourlyRate":50,
              "Id":3
            }
          }
        ],
        "AuthenticationType":{
          "Type":"Replicon.Domain.AuthenticationType",
          "Identity":"Internal",
          "Properties":{
            "Name":"Web TimeSheet Internal"
          }
        },
        "WorkWeek":{
          "Type":"Replicon.TimeOff.Domain.WorkWeek",
          "Identity":"Sunday",
          "Properties":{
            "Name":"Sunday to Saturday"
          }
        }
      }
    }
  ]
}

 

Exists

An Exists request inspects whether an object still exists in Replicon and has not been deleted or removed. It works by specifying one or more object identities, and performs an optimized operation where the existence of the object is checked without loading the object's data.

Structure of the Exists action:

 [{
    "Action": "Exists",
    "Type": "Replicon.Domain.User",           /* The type of the object */
    "Identities": ["3", "4", "5"]             /* "Identity" values of objects being checked */
  }
]

Example of an Exists action and response

Request

[
  {
    "Action": "Exists",
    "Type": "Replicon.Domain.User",
    "Identities": ["3", "4", "5"]
  }
]

Response

{
  "Status": "OK",
  "Value": [
    {
      "3": true,
      "4": false,
      "5": true
    }
  ]
}
ExistsForApproval

An ExistsForApproval request inspects whether an approvable object still is waiting to be approved by the currently  logged in user.It works by specifying one or more object identities and performs an optimized operation where the approval state is checked with out loading the object's data. Please note that this action is valid only for the approvable types "Replicon.TimeSheet.Domain.Timesheet", "Replicon.TimeOff.Domain.TimeOffBooking", "Replicon.Expense.Domain.Expense".

Structure of the ExistsForApproval action:

 [{
    "Action": "ExistsForApproval",
    "Type": "Replicon.TimeSheet.Domain.Timesheet",          
    "Identities": ["3", "4", "5"]            
  }
]
Example of an ExistsForApproval action and response  

Request

[
  {
    "Action": "ExistsForApproval",
    "Type": "Replicon.TimeSheet.Domain.Timesheet",
    "Identities": ["3", "4", "5"]
  }
]

Response

{
  "Status": "OK",
  "Value": [
    {
      "3": true,
      "4": false,
      "5": true
    }
  ]
}

Edit

An Edit request modifies an object.

Structure of the Edit action:

[{
    "Action":"Edit",                                  /* "Edit" Action */
    "SendEmailNotifications": false,     /* optional to disable email notifications for that request */
    "Type":"Replicon.Domain.User",  /* The type of object for the Edit */
    "Identity":"2",                                     /* "Identity" string for the identity of the existing object */ 
    "Operations":[{                                 /* the array of operations to perfrom  */
        "__operation":"SetProperties", /* "__operation" - defines the operation  */
        "FirstName":"John",                    /* the property or relationship to operate on */
        "HolidayCalendar":{                    /* eg of a relationship to another object */
          "__type":"Replicon.Domain.Calendar", 
                                                               /* "__type" to define the type of the relationship  */
          "Identity":"3"  /* "Identity" string for the identity of the existing object for the relationship */
        } 
      }
    ]
  }
]

Example of an Edit action and response

Request

[{
    "Action":"Edit",
    "Type":"Replicon.Domain.User",
    "Identity":"2",
    "Operations":[{
        "__operation":"SetProperties",
        "FirstName":"John",
        "HolidayCalendar":{
          "__type":"Replicon.Domain.Calendar",
          "Identity":"3"
        }
      }
    ]
  }
]

Response

{
  "Status":"OK",
  "Value":[{
      "Type":"Replicon.Domain.User",
      "Identity":"2",
      "Properties":{
        "CurrentHoursPerDay":{
          "Type":"Timespan",
          "Hours":8,
          "Minutes":0,
          "Seconds":0,
          "Milliseconds":0
        },
        "Email":"doug@yourcompany.com",
        "ExternalEmail":"doug.brown@yourcompany.com",
        "OfflineEmail":null,
        "StartDate":{
          "Type":"Date",
          "Year":2010,
          "Month":7,
          "Day":14
        },
        "EndDate":{
          "Type":"Date",
          "Future":true
        },
        "ExternalId":"100",
        "IsSampleUser":false,
        "Id":2,
        "AccountExpiry":{
          "Type":"Date",
          "Future":true
        },
        "PasswordLastChanged":null,
        "ForcePasswordChange":false,
        "DisablePasswordChange":false,
        "LoginName":"admin",
        "Disabled":false,
        "Password":null,
        "Domain":"",
        "FirstName":"John",
        "LastName":"Brown",
        "DefaultBillingRate":90
      },
      "UserDefinedFields":{
        "QuickBooks Payroll Item":null
      }
    }
  ]
}

 

CreateBasedUpon

A CreateBasedUpon request creates a duplicate of an existing object, and allows it to be modified before being saved. It is similar to a "Create" action, except that it requires that the source object be specified. CreateBasedUpon is only supported for these objects types: Replicon.Domain.User, and Replicon.Project.Domain.Project.

Structure of the CreateBasedUpon action:

[
  {
    "Action": "CreateBasedUpon",
    "Type": "Replicon.Domain.User",            /*  The type of the object */
    "SourceIdentity": "312",                  /*  Identity to copy/duplicate into the new object */
    "Operations": [
      {
        "__operation": "SetProperties",          /*  Edit operations to perform on the new object */
        "LoginName": "newuser2",
        "Password": "passw0rd123"
      }
    ]
  }
]

Delete

A Delete is a request to delete an object.

Structure of the Delete action:

[{
    "Action":"Delete",                     /* "Delete" Action  */
    "Type":"Replicon.Domain.User",         /* the type of object for the delete  */
    "Identity":"1" 
  }
]

Example of a Delete action and response

Request

[{
    "Action":"Delete",                             /* "Delete" Action  */
    "Type":"Replicon.Domain.User",   /* the type of object for the delete  */
    "Identity":"1" 
  }
]

Response

{
  "Status":"OK",
  "Value":[]
}

 

 

GetUserPreferences

A GetUserPreferences is a request to fetch some of the user preferences for the currently logged in user.

Structure of the GetUserPreferences action:

[{
    "Action":"GetUserPreferences"         /* "GetUserPreferences" Action */
 }
]

Example of GetUserPreferences action and response

Request

[{
    "Action":"GetUserPreferences"                                  /* "GetUserPreferences" Action */
 }
]

Response

{
  "Status":"OK",
  "Value":[{
        "Timesheet.DateFormat":"%b %#d, %Y",
        "Timesheet.TimeFormat":"%#I:%M %P",
        "Timesheet.HourFormat":{
          "Type":"Replicon.Domain.HourFormat",
          "Identity":"Decimal",
        },
        "TimesheetToDisplay":{
          "Type":"Replicon.TimeSheet.Domain.TimesheetToDisplay",
          "Identity":"EarliestUnSubmittedPeriod",
        },
        "Timesheet.Format":{
          "Type":"Replicon.TimeSheet.Domain.TimesheetFormat",
          "Identity":"Classic",
        },
        "DefaultTimeOffCode":{
          "Type":"Replicon.TimeOff.Domain.TimeOffCode",
          "Identity":"1",
        },
        "ExpenseDisplayClientName":"true",
        "ExpenseDisplayClientCode":"true",
        "ExpenseDisplayTaskRootName":"true",
        "ExpenseDisplayTaskRootCode":"true"
      }
    }
  ]
}

 

Currently supported user preferences

GetSystemPreferences

A GetSystemPreferences is a request to fetch some of the system preferences.

Structure of the GetSystemPreferences action:

[{
    "Action":"GetSystemPreferences"       /* "GetSystemPreferences" Action */
 }
]

Example of GetSystemPreferences action and response

Request

[{
    "Action":"GetSystemPreferences }
]

Response

{
  "Status":"OK",
  "Value":[{
        "ActivitiesEnabled":false,
        "RequireTimeOffStartEndTime":true,
        "UseBillingInformation":true,
        "ClientOnRightOfProjectTaskColumnsOnTimesheet":true,
        "SplitProjectTaskIntoTwoColumnsOnTimesheet":true,
        "MinimumTimeoffSize":{
          "Type":"Replicon.TimeOff.Domain.RequestResolution",
          "Identity":"QuarterDay",
        },
        "ExpenseColumnVisible":{
          "Amount":true,
          "BillClient":true,
          "Date":true,
          "Description":true,
          "ExchangeRate":true,
          "NetAmount":true,
          "PaymentMethod":true,
          "Quantity":true,
          "Rate":true,
          "Receipts":true,
          "Reimburse":true,
          "ReimbursementAmount":true,
          "TaxCodes":true,
          "Type":true,
        },
    }
  ]
}

 

Currently supported system preferences

CheckUserPermissions

CheckUserPermissions is a request to verify the current user's or defined user's permissions.

Structure of the CheckUserPermissions action:

[{
  "Action": "CheckUserPermissions",     /* "CheckUserPermissions" Action */
  "User": {                             /* Optional to check for a specific user. If this is omitted it will check the current user */
    "Type": "Replicon.Domain.User",     /* The type of the user object */
    "Identity": "2"                     /* "Identity" string for the indetity of the user */
  },
  "Permissions": [                      /* The array of permissions to check */
    "UseTimesheet",                     /* Some example permissions */
    "LockedInOutTimesheet",
    "TimeoffTimesheet",
    "UnsubmitTimesheet",
    "ProjectExpense",
    "NonProjectExpense"
  ]
}]

Example of a CheckUserPermissions action and response

Request

[
    {
      "Action": "CheckUserPermissions",
      "User": {
        "Type": "Replicon.Domain.User",
        "Identity": "2"
      },
      "Permissions": [
        "UseTimesheet",
        "LockedInOutTimesheet",
        "TimeoffTimesheet",
        "UnsubmitTimesheet",
        "ProjectExpense",
        "NonProjectExpense"
      ]
    }
]

Response

{
  "Status": "OK",
  "Value": [
    {
      "UseTimesheet": true,
      "LockedInOutTimesheet": false,
      "TimeoffTimesheet": true,
      "UnsubmitTimesheet": true,
      "ProjectExpense": true,
      "NonProjectExpense": true
    }
  ]
}

 

Currently supported permissions


User Preferences, System Preferences, and Permissions

Currently Supported User Preferences

Use these preferences with the GetUserPreferences action.

User Preference

Name as displayed in the Replicon user interface

Timesheet.DateFormatDate format
Timesheet.TimeFormatClock format
Timesheet.HourFormatHours format
TimesheetToDisplayDefault timesheet to display
Timesheet.FormatTimesheet format
DefaultTimeOffCodeDefault Time Off Type for Time Off Bookings
ExpenseDisplayClientNameExpense Entry Name Display > Choose for Client Name Display > Client Name
ExpenseDisplayClientCodeExpense Entry Name Display > Choose for Client Name Display > Client Code
ExpenseDisplayTaskRootNameExpense Entry Name Display > Choose for Project Name Display > Project Name
ExpenseDisplayTaskRootCodeExpense Entry Name Display > Choose for Project Name Display > Project Code

Currently Supported System Preferences

Use these preferences with the GetSystemPreferences action.

System Preference

Name as displayed in the Replicon user interface

ActivitiesEnabledEnable Activities
UseBillingInformationUse billing information
RequireTimeOffStartEndTimeRequire start/end times for partial day bookings
ClientOnRightOfProjectTaskColumnsOnTimesheetSpecify location for client column on timesheet
SplitProjectTaskIntoTwoColumnsOnTimesheetSplit project/task into two columns on timesheet
MinimumTimeoffSizeMinimum amount of time off required in bookings
TimeOffDisplayedInHoursTime Off display format
ExpenseColumnVisible Preferences:
AmountAmount
BillClientBill Client
DateDate
DescriptionDescription
ExchangeRateExchange Rate
NetAmountNet Amount
PaymentMethodPayment Method
QuantityQuantity
RateRate
ReceiptsExpense Receipts
ReimburseReimburse
ReimbursementAmountReimbursement Amount
TaxCodesTax Codes
TypeExpense Type

Currently Supported Permissions

Use these permissions with the CheckUserPermissions action.

Permission

Name as displayed in the Replicon user interface

UseTimesheetTimesheet > Use Timesheet

Allows the user to enter time using their assigned timesheet format. Requires a TimeAttend, TimeCost, or TimeBill license.
UnsubmitTimesheetTimesheet > Use Timesheet > Unsubmit timesheet

Allows users to use the Unsubmit button to retrieve submitted timesheets before they are approved.  Requires a TimeAttend, TimeCost, or TimeBill license.
TimeoffTimesheetTimesheet > Use Timesheet > Enter time against time off types not requiring booking

Allows the user to add time off rows to the timesheet and enter time against time off types not requiring booking.  Requires a TimeAttend license OR a TimeCost or TimeBill AND TimeOff license.
ProjectExpenseExpenses > Enter Expenses > Project Specific

Allows users to enter expenses incurred against projects. Requires a TimeBill or TimeCost license AND a WebExpense license.
NonProjectExpenseExpenses > Enter Expenses > Not Project Specific

Allows users to enter incurred expenses that are not associated with a project. Requires a WebExpense license AND a TimeCost or TimeBill license.

*You can assign both ProjectExpense and NonProjectExpense to allow users to enter both project and non-proejct expenses.
UnsubmitExpenseExpenses > Enter Expenses > Unsubmit expense sheet

Lets users use the Unsubmit button to retrieve a submitted expense sheet before it is approved. Requires a WebExpense license.
OverrideExchangeRateExpenses > Enter Expenses > Override exchange rates

Allows users to override the system-level default exchange rates used to calculate expenses in base currency in their expense sheets. Requires a WebExpense license.
OverrideRatedExpenseAmountExpenses > Enter Expenses > Override amount for rated expenses

Lets users override the calculated amount for expenses based on a rate (e.g., mileage). Rate-based expenses are automatically calculated based on a formula defined at the system-level for each type of expense. Requires a WebExpense license.
TimeOffBookingUserTime Off > Submit time off bookings

Allows the user to submit time off bookings. Requires a TimeAttend or TimeOff license.
EditFutureTimeOffBookingUserTime Off > Submit time off bookings > Edit/delete future time off bookings

Allows the user to edit and delete time off bookings that haven't begun yet (i.e. are scheduled for tomorrow or later). Requires a TimeAttend or TimeOff license.

*To be assigned this permission, users must have TimeOffBookingUser permission.
Timesheet format permissions: 
(*Assign both ClassicTimesheet and InOutTimesheet permission to allow users to choose either the In-Out or "classic" Standard format. All of these permissions require either a TimeAttend, TimeCost, or TimeBill license.)
InOutTimesheet
Timesheet > Use Timesheet > In-Out

Lets users use an In-Out timesheet, in which they enter a task's start time and either its end time or duration.
LockedInOutTimesheetTimesheet > Use Timesheet > Locked In-Out

Requires users to use a Locked In-Out timesheet, that they punch into and out of to set the time they start and end work. The user cannot edit their work times.
NewTimesheetTimesheet > Use Timesheet > Standard

Allows users use the Smart Interface timesheet format.

*To access the Smart Interface timesheet, users must also be assigned ClassicTimesheet permission.
ClassicTimesheet
Timesheet > Use Timesheet > Standard
Timesheet field permissions: 
(*All of these permissions require either a TimeAttend, TimeCost, or TimeBill license.)
ProjectTimesheetTimesheet > Use Timesheet > Allow time to be entered > Against projects

Allows the user to enter time spent working against projects in the timesheet. Requires a TimeBill or TimeCost license.

*You can assign both ProjectTimesheet and NonProjectTimesheet to allow users to enter both project and non-proejct expenses.
NonProjectTimesheetTimesheet > Use Timesheet > Allow time to be entered > Without requiring a project to be selected

Allows the user to enter time spent performing work that is not related to projects in the timesheet. Requires a TimeCost or TimeBill license.
BillingTimesheetTimesheet > Use Timesheet > View/select billing options for projects/tasks

Allows users to view the Billing column in their timesheet and select from the list of available billing options. Requires a TimeBill license.
AllowBlankTimesheetCommentsTimesheet > Use Timesheet > Allow blank timesheet comments

Allows users to submit their timesheets without entering comments for each time cell. To make timesheet comments mandatory, make sure this permission is not assigned.
AllowBlankResubmitCommentTimesheet > Use Timesheet > Allow blank resubmission comments

Lets users resubmit their timesheets (after the timesheet has been unsubmitted, rejected, or re-opened) without entering a reason for the resubmission. To make resubmission comments mandatory, make sure this permission is not assigned.
Timesheet User Defined Field permissions:
TimesheetEntryUDF1
...
TimesheetEntryUDF5
Timesheet > Use Timesheet > Timesheet Hours User Defined Field #1-5

Allows the user to access the Timesheet (Hour Level) user defined field of the number indicated. Field numbers are determined by the order of fields on the User Defined Fields page. Requires a TimeAttend, TimeCost, or TimeBill license.
TaskTimesheetUDF1
...
TaskTimesheetUDF5
Timesheet > Use Timesheet > Timesheet Row User Defined Field #1-5

Lets the user access the Timesheet (Row Level) user defined field of the number indicated. Field numbers are determined by the order of fields on the User Defined Fields page. Requires a TimeAttend, TimeCost, or TimeBill license.
ReportPeriodUDF1
...
ReportPeriodUDF5
Timesheet > Use Timesheet > Timesheet User Defined Field #1-5

Allows users to access the Entire Timesheet user defined field of the number indicated. Field numbers are determined by the order of fields on the User Defined Fields page. Requires a TimeAttend, TimeCost, or TimeBill license.
TimeOffUDF1
...
TimeOffUDF5
Time Off > Time Off User Defined Field #1-5

Allows the user to access the Time Off user defined field of the number indicated. Field numbers are determined by the order of fields on the User Defined Fields page. Requires a TimeAttend or TimeOff license.