All Downloads are FREE. Search and download functionalities are using the official Maven repository.

edu.utexas.tacc.tapis.shared.i18n.TapisMessages.properties Maven / Gradle / Ivy

# This file contains all log messages written by tapis.  Here are guidelines
# on how to create new messages:
#
#   1. Use unique and descriptive key names.
#       The key names are used in log statements as in the following example:
#           log.info(MessageUtils.getLocalMsg("TAPIS_INITIALIZING_SERVICE", "db.migration.db.migration.jobs"));
#       This usage standardizes messages, allows all uses of a message key to be 
#       easily discovered, and leaves the door open for national language support. 
#           
#   2. Repeat the key name as the first text in the message.
#       This guideline allows log records to be more easily correlated with source code.  
#
#   3. Use and document substitution variables to be assigned runtime values. 
#       Substitution variables allow meaningful and precise messages to be logged to
#       improve debugging and servicability in general.  Unless incredibly obvious,
#       the semantics of each variable should be documented in a comment immediately
#       preceding the message.
#
#   4. Organize message into groups that make it easier for humans to take in.
#
#   5. Start all keys should start with a descriptive prefix like TAPIS_, JOBS_, etc.

##########################################################################################
# General Section
##########################################################################################
    # 0 = service name
TAPIS_INITIALIZING_SERVICE=TAPIS_INITIALIZING_SERVICE: {0}.
    # 0 = filter name
TAPIS_INITIALIZING_SERVLET_FILTER=TAPIS_INITIALIZING_SERVLET_FILTER Servlet filter {0} initializing.
    # 0 = program name
TAPIS_TERMINATE_NO_CHANGES=TAPIS_TERMINATE_NO_CHANGES {0} terminating -- no changes made. 

    # 0 = service name, 1 = error message
TAPIS_SERVICE_INITIALIZATION_FAILED=TAPIS_SERVICE_INITIALIZATION_FAILED {0}: {1}
    # 0 = service name, 1 = parameter name, 2 = error message
TAPIS_SERVICE_PARM_INITIALIZATION_FAILED=TAPIS_SERVICE_PARM_INITIALIZATION_FAILED Unable to initialize parameter "{1}" in service {0}: {2}
    # 0 = service name, 1 = parameter name
TAPIS_SERVICE_PARM_MISSING=TAPIS_SERVICE_PARM_MISSING Required input parameter "{1}" not provided for service {0}.
    # 0 = service name
TAPIS_SERVICE_PROPERTIES_FILE_NOT_FOUND=TAPIS_SERVICE_PROPERTIES_FILE_NOT_FOUND Unable to find {0} input parameter file.
    # 0 = service name
TAPIS_SERVICE_PROPERTIES_FILE_LOAD_ERROR=TAPIS_SERVICE_PROPERTIES_FILE_LOAD_ERROR Unable to load {0} input parameter file.
    # 0 = resource pathname
TAPIS_RESOURCE_FILE_NOT_FOUND=TAPIS_RESOURCE_FILE_NOT_FOUND Resource file not found: {0}.
    # 0 = file pathname
TAPIS_FILE_NOT_FOUND=TAPIS_FILE_NOT_FOUND File not found: {0}.
    # 0 = file pathname
TAPIS_PATH_NOT_DIRECTORY=TAPIS_PATH_NOT_DIRECTORY Path is not a directory: {0}.
    # 0 = exception message
TAPIS_IO_ERROR=TAPIS_IO_ERROR An IO error occurred: {0}
    # 0 = environment variable key, 1 = source
TAPIS_ENVONLY_INVALID_SOURCE=TAPIS_ENVONLY_INVALID_SOURCE Environment only parameter {0} cannot be assigned from a {1}. It's value will be ignored. 
    # 0 = component name, 1 = tenant id, 2 = millisecond wait time
TAPIS_WAIT=TAPIS_WAIT {0} in tenant {1} beginning {2} millisecond wait.
    # 0 = validation method name
TAPIS_INVALID_THREADLOCAL_VALUE=TAPIS_INVALID_THREADLOCAL_VALUE Invalid threadlocal value detected by {0} function.

    # 0 = method name, 1 = parameter name
TAPIS_NULL_PARAMETER=TAPIS_NULL_PARAMETER Null or empty parameter received by method {0}: {1}
    # 0 = method name, 1 = parameter name, 2 = value received
TAPIS_INVALID_PARAMETER=TAPIS_INVALID_PARAMETER Invalid parameter received by method {0}: {1} = {2}
    # 0 = method name, 1 = parameter name, 2 = min length, 3 = max length
TAPIS_INVALID_PARAMETER_LEN=TAPIS_INVALID_PARAMETER_LEN Parameter of invalid length received by method {0}: "{1}" must be between {2} and {3} characters long.

    # This message is intended for use in utility programs where context is readily apparent.
    # 0 = filepath, 1 = error message
TAPIS_FILE_WRITE_ERROR=TAPIS_FILE_WRITE_ERROR Unable to write file {0}: {1}

    # 0 = http request method
TAPIS_SECURITY_MISSING_JWT_INFO=TAPIS_SECURITY_MISSING_JWT_INFO HTTP {0} request rejected due to missing JSON Web Token information. 
    # 0 = exception message
TAPIS_SECURITY_NO_KEYSTORE=TAPIS_SECURITY_NO_KEYSTORE Unable to access the keystore: {0} 
TAPIS_SECURITY_NO_KEYSTORE_PASSWORD=TAPIS_SECURITY_NO_KEYSTORE_PASSWORD Missing environment variable "tapis.envonly.keystore.password". Set the Tapis keystore password in this environment variable.      
    # 0 = exception message
TAPIS_SECURITY_KEYSTORE_LOAD_ERROR=TAPIS_SECURITY_KEYSTORE_LOAD_ERROR Unable to load the Tapis keystore using the password set in environment variable "tapis.envonly.keystore.password": {0}
    # 0 = http request method, 1 = exception message
TAPIS_SECURITY_SIGNATURE_ERROR=TAPIS_SECURITY_SIGNATURE_ERROR Error during signature validation on an HTTP {0} request: {1}
    # 0 = key alias, 1 = error message
TAPIS_SECURITY_GET_CERTIFICATE=TAPIS_SECURITY_GET_CERTIFICATE Unable to retrieve certificate for "{0}": {1}
    # 0 = key alias, 1 = error message
TAPIS_SECURITY_CERTIFICATE_VERIFY=TAPIS_SECURITY_CERTIFICATE_VERIFY The certificate containing the public key for "{0}" failed verification: {1}
    # 0 = error message
TAPIS_SECURITY_JWT_PARSE_ERROR=TAPIS_SECURITY_JWT_PARSE_ERROR Unable to parse JWT: {1}
    # 0 = encoded jwt, 1 = error message
TAPIS_SECURITY_JWT_DECODE_ERROR=TAPIS_SECURITY_JWT_DECODE_ERROR Unable to parse encoded JWT: [{0}]: {1}
    # 0 = key alias, 1 = error message
TAPIS_SECURITY_GET_PRIVATE_KEY=TAPIS_SECURITY_GET_PRIVATE_KEY Unable to retrieve private key named {0} from the keystore: {1}
    # 0 = store type
TAPIS_SECURITY_INSTANCE_FAILURE=TAPIS_SECURITY_INSTANCE_FAILURE Unable to create a keystore instance of type {0}.
    # 0 = url
TAPIS_SECURITY_NO_AUTH_REQUEST=TAPIS_SECURITY_NO_AUTH_REQUEST Received no authentication request on URL {0}.    
    # 0 = key alias, 1 = key store path   
TAPIS_SECURITY_CERTIFICATE_NOT_FOUND=TAPIS_SECURITY_CERTIFICATE_NOT_FOUND Unable to retrieve certificate "{0}" from keystore at {1}.     
    
    # 0 = resource type, 1 = instance name/id
TAPIS_FOUND=TAPIS_FOUND {0} found: {1}
    # 0 = resource type, 1 = resource identifier
TAPIS_NOT_FOUND=TAPIS_NOT_FOUND {0} not found: {1}
    # 0 = byte array in hex
TAPIS_BYTE_ARRAY_DECODE=TAPIS_BYTE_ARRAY_DECODE Unable to decode byte array into a UTF-8 encoded string. Here's the hex: {0} 
    
    # 0 = resource type, 1 = instance name/id
TAPIS_CREATED=TAPIS_CREATED {0} created: {1}
    # 0 = resource type, 1 = instance name/id
TAPIS_DELETED=TAPIS_DELETED {0} deleted: {1}
    # 0 = resource type, 1 = instance name/id
TAPIS_UPDATED=TAPIS_UPDATED {0} updated: {1}
    # 0 = resource type, 1 = instance name/id
TAPIS_AUTHORIZED=TAPIS_AUTHORIZED {0} authorized: {1}
    
    # 0 = class name, 1 = reflection method, 2 = error message
TAPIS_REFLECTION_ERROR=TAPIS_REFLECTION_ERROR Unable to process the {1} reflective method on class {0}: {2} 
    # 0 = class name, 1 = error message
TAPIS_INTROSPECTION_ERROR=TAPIS_INTROSPECTION_ERROR Unable to introspect object of class {0}: {1}

    # 0 = java type, 1 = variable name
TAPIS_ENV_CONVERSION_FAILED=TAPIS_ENV_CONVERSION_FAILED {0} conversion failed for " {1} ".
TAPIS_UUID_NULL_TYPE=TAPIS_UUID_NULL_TYPE Cannot construct an TapisUUID with a null type.
    # 0 = uuid string
TAPIS_UUID_DECOMPOSE_ERROR=TAPIS_UUID_DECOMPOSE_ERROR Unable to decompose into constituent parts uuid: {0}

    # 0 = resource file name
TAPIS_RESOURCE_NOT_FOUND=TAPIS_RESOURCE_NOT_FOUND Unable to locate and open resource {0}.
    # 0 = tapis version resource file name
TAPIS_VERSION_FILE_ERROR=TAPIS_VERSION_FILE_ERROR Unable to read Tapis version from resource file {0}.
 
    # 0 = class name, 1 = method name, 2 = request details  
TAPIS_TRACE_REQUEST=TAPIS_TRACE_REQUEST Request received by {0}.{1}:\n{2}

    # 0 = schema file name, 1 = load error message
TAPIS_JSON_SCHEMA_LOAD_ERROR=TAPIS_JSON_SCHEMA_LOAD_ERROR Unable to load JSON schema file {0}: {1}
    # 0 = validation error text
TAPIS_JSON_VALIDATION_ERROR=TAPIS_JSON_VALIDATION_ERROR JSON validation error: {0}
    # 0 = validation error text, 1 = multi-line error details
TAPIS_JSON_VALIDATION_FAILURE=TAPIS_JSON_VALIDATION_FAILURE JSON validation error: {0} {1}
    # 0 = component name, 1 = json text (length limited), 2 = validation error text
TAPIS_JSON_PARSE_ERROR=TAPIS_JSON_PARSE_ERROR {0} failed to parse {1}: {2}
    # 0 = object class name, 1 = error message
TAPIS_JSON_SERIALIZATION_ERROR=TAPIS_JSON_SERIALIZATION_ERROR Unable to serialize object of type {0}: {1}

TAPIS_TENANTS_QUERY_ERROR=TAPIS_TENANTS_QUERY_ERROR Unable to query tenants.
    # 0 = tenant id
TAPIS_TENANT_NOT_FOUND=TAPIS_TENANT_NOT_FOUND Tenant {0} not found.
    # 0 = tenant id
TAPIS_TENANT_URL_FORMAT=TAPIS_TENANT_URL_FORMAT The tenant base url does not end with a forward slash: {0}

    # 0 = component name, 1 = exception text
TAPIS_THREAD_UNCAUGHT_EXCEPTION=TAPIS_THREAD_UNCAUGHT_EXCEPTION Uncaught thread exception in {0}: {1}
    # 0 = old thread name, 1 = old thread id, 2 = component name, 3 = component uuid, 4 = exception simple name, 5 = new thread name 
TAPIS_THREAD_RESTART=TAPIS_THREAD_RESTART Thread {0}:{1} in component {2} ({3}) died unexpectedly with exception {4}. Starting new thread {5}.
    # 0 = old thread name, 1 = old thread id, 2 = thread restart limit, 3 = thread restart interval in seconds
TAPIS_TOO_MANY_RESTARTS_TERMINATION=TAPIS_TOO_MANY_RESTARTS_TERMINATION Unable to restart thread {0}:{1} because the limit of {2} thread restarts in {3} seconds was exceeded. Shutting down JVM.
    # 0 = old thread name, 1 = old thread, 2 = exception simple name
TAPIS_THREAD_DIED=TAPIS_THREAD_DIED Thread {0}:{1} of unknown type threw an uncaught {2} exception. Unable to restart thread.
    # 0 = old thread name, 1 = old thread id, 2 = component name, 3 = component uuid, 4 = exception simple name, 5 = old thread type 
TAPIS_THREAD_UNKNOWN_RESTART_TYPE=TAPIS_THREAD_UNKNOWN_RESTART_TYPE Thread {0}:{1} in component {2} ({3}) died unexpectedly with exception {4}. Don't know how to restart thread of type {5}.
    # 0 = inaccessible field or method name, 1 = error message
TAPIS_THREADLOCAL_ACCESS_ERROR=TAPIS_THREADLOCAL_ACCESS_ERROR Unable to access threadlocal data "{0}": {1}.
    
    # 0 = program name, 1 = OS result code
TAPIS_EXTERNAL_PROCESS_FAILURE=TAPIS_EXTERNAL_PROCESS_FAILURE The external program {0} failed with result code {1}.
    # 0 = default host name
TAPIS_LOCAL_HOSTNAME_ERROR=TAPIS_LOCAL_HOSTNAME_ERROR Unable to query local hostname, defaulting to {0}.
TAPIS_GET_LOCAL_IP_ADDR=TAPIS_GET_LOCAL_IP_ADDR Unable to resolve local ip address from network interface. Passive connections may fail.

    # 0 = error message
TAPIS_RUNTIME_EXCEPTION=TAPIS_RUNTIME_EXCEPTION Unexpected runtime error: {0}
    # 0 = url
TAPIS_NONCONFORMING_URL=TAPIS_NONCONFORMING_URL URI does conform to the API URL structure: {0}

    # 0 = email client type
TAPIS_MAIL_UNKNOWN_CLIENT=TAPIS_MAIL_UNKNOWN_CLIENT Received request for an unknown email client type: {0}
    # 0 = transport type, 1 = email server host, 2 = email server port, 3 = authentication setting, 4 = error message
TAPIS_MAIL_TRANSPORT_ERROR=TAPIS_MAIL_TRANSPORT_ERROR Unable to access an {0} email client for server {1}:{2} with authentication set to {3}: {4}
    # 0 = transport type, 1 = email server host, 2 = email server port, 3 = recipient name, 4 = recipent address, 5 = error message
TAPIS_MAIL_MESSAGE_CREATE=TAPIS_MAIL_MESSAGE_CREATE Unable to assemble message on {0} email client for server {1}:{2} with recipient {3}@{4}: {5}
    # 0 = transport type, 1 = email server host, 2 = email server port, 3 = recipient name, 4 = recipent address, 5 = error message
TAPIS_MAIL_CONNECT=TAPIS_MAIL_CONNECT Unable to connect using {0} email client to server {1}:{2} with recipient {3}@{4}: {5}
    # 0 = transport type, 1 = email server host, 2 = email server port, 3 = recipient name, 4 = recipent address, 5 = error message
TAPIS_MAIL_SEND=TAPIS_MAIL_SEND Unable to send message using {0} email client to server {1}:{2} with recipient {3}@{4}: {5}
    # 0 = transport type, 1 = email server host, 2 = email server port, 3 = recipient name, 4 = recipent address, 5 = error message
TAPIS_MAIL_CLOSE=TAPIS_MAIL_CLOSE Unable to close {0} email client after sending message to server {1}:{2} with recipient {3}@{4}: {5}

##########################################################################################
# Network Section 
##########################################################################################
    # 0 = agave request name, 1 = exception message
NET_POST_PAYLOAD_ACCESS=NET_POST_PAYLOAD_ACCESS Unable to access payload in {0} POST request: {1}
    # 0 = agave request name, 1 = exception message
NET_INVALID_JSON_INPUT=NET_INVALID_JSON_INPUT JSON validation error on {0} request: {1}
    # 0 = operation name, 1 = error message
NET_REQUEST_PAYLOAD_ERROR=NET_REQUEST_PAYLOAD_ERROR Error accessing payload for {0} request: {1}
    # 0 = list of query parameters
NET_INCOMPLETE_QUERY_PARMS=NET_INCOMPLETE_QUERY_PARMS If any of the following query parameters are set, all must be set: {0}

##########################################################################################
# Database Section 
##########################################################################################
DB_FAILED_CONNECTION=DB_FAILED_CONNECTION Unable to acquire a connection from the connection pool.
DB_FAILED_CONNECTION_CLOSE=DB_FAILED_CONNECTION_CLOSE Unable to close connection.
DB_FAILED_DATASOURCE=DB_FAILED_DATASOURCE Unable to access a datasource.
DB_FAILED_ROLLBACK=DB_FAILED_ROLLBACK Rollback failed.
    # 0 = pool name, 1 = pool size, 2 = user, 3 = jdbc url
DB_FAILED_DATASOURCE_CREATE=DB_FAILED_DATASOURCE_CREATE Unable to create a datasource {0} of size {1} for user {2} using URL {3}.

DB_NULL_DB_NAME=DB_NULL_DB_NAME Null DBMS name not allowed.
DB_NULL_DB_DRIVER_NAME=DB_NULL_DB_DRIVER_NAME Null DBMS driver name not allowed.
    
    # 0 = type of object (plural)
DB_DAO_ERROR=DB_DAO_ERROR Unable to acquire database access object for {0}.

    # 0 = SQL error message
DB_TYPE_CAST_ERROR=DB_TYPE_CAST_ERROR Unable to convert SQL type to Java type: {0}
    # 0 = SQL error message
DB_RESULT_ACCESS_ERROR=DB_RESULT_ACCESS_ERROR Failure accessing SQL result set: {0}
    # 0 = SQL table, 1 = SQL error message
DB_QUERY_ERROR=DB_QUERY_ERROR SQL query of table {0} failed: {1}

    # 0 = SQL table, 1 = actual rows returned, 2 = expected rows returned
DB_INSERT_UNEXPECTED_ROWS=DB_INSERT_UNEXPECTED_ROWS Insert into table {0} resulted in {1} rows changed, expected {2}.
    # 0 = SQL table, 1 = jobid
DB_INSERT_JOB_FAILURE=DB_INSERT_JOB_FAILURE Insert into table {0} failed for jobid {1}. 
    # 0 = SQL table
DB_INSERT_FAILURE=DB_INSERT_FAILURE Insert into table {0} failed. 
    # 0 = SQL table
DB_DELETE_FAILURE=DB_INSERT_FAILURE Delete from table {0} failed. 
    # 0 = SQL table, 1 = actual rows returned, 2 = expected rows returned
DB_DELETE_UNEXPECTED_ROWS=DB_INSERT_UNEXPECTED_ROWS Delete from table {0} resulted in {1} rows changed, expected {2}.
    # 0 = expected rows updated, 1 = actual rows updated, 2 = update stmt, 3 = update parameters
DB_UPDATE_UNEXPECTED_ROWS=DB_INSERT_UNEXPECTED_ROWS Expected {0} updates, actual updates were {1} for "{2}" with parameters: {3}.
    # 0 = expected rows updated, 1 = actual rows updated, 2 = select stmt, 3 = select parameters
DB_SELECT_UNEXPECTED_ROWS=DB_SELECT_UNEXPECTED_ROWS Expected {0} rows returned, actual rows were {1} for "{2}" with parameters: {3}.    
    # 0 = query text, 1 = query parameters
DB_SELECT_EMPTY_RESULT=DB_SELECT_EMPTY_RESULT No rows returned by query "{0}" with parameters: {1}.
    # 0 = object type, 1 = uuid, 2 = sql message
DB_SELECT_UUID_ERROR=DB_SELECT_UUID_ERROR Unable to select {0} with uuid {1}: {2}
    # 0 = object type, 1 = sql message
DB_SELECT_ALL_ERROR=DB_SELECT_ALL_ERROR Unable to select {0}: {1}
    # 0 = object type, 1 = uuid, 2 = sql message
DB_SELECT_ID_ERROR=DB_SELECT_ID_ERROR Unable to select {0} {1}: {2}
    # 0 = error message
DB_UNWRAP_DATASOURCE_ERROR=DB_UNWRAP_DATASOURCE_ERROR Unable to retrieve real datasource from wrapper: {0}


##########################################################################################
# Message Service Section 
##########################################################################################
QMGR_UNINITIALIZED_ERROR=QMGR_UNINITIALIZED_ERROR The QueueManager must be initialized before being used.
    # 0 = queues or topics, 1 = tenantId
QMGR_INIT_ERROR=QMGR_INIT_ERROR Error initializing tenant {0} for one or more tenants.
    # 0 = connection name, 1 = error message 
QMGR_CHANNEL_CREATE_ERROR=QMGR_CHANNEL_CREATE_ERROR Unable to create channel on connection {0}: {1}
    # 0 = tenantId
QMGR_CHANNEL_TENANT_ERROR=QMGR_CHANNEL_TENANT_ERROR Unable to create channel for tenant {0}.
    # 0 = tenant id, 1 = exchange name, 2 = routing key
QMGR_POST=QMGR_POST Posting message for tenant {0} on exchange {1} using routing key {2}.
    # 0 = exchange name, 1 = connection name, 2 = channel id, 3 = error message
QMGR_PUBLISH_ERROR=QMGR_PUBLISH_ERROR Unable to publish to exchange {0} on connection {1}/{2}: {3}
    # 0 = channel id, 1 = error message
QMGR_CHANNEL_CLOSE_ERROR=QMGR_CHANNEL_CLOSE_ERROR Unable to close channel {0}: {1}
    # 0 = channel number, 1 = consumer tag, 2 = topic name, 3 = error message
QMGR_CANCEL_TOPIC_CONSUMER=QMGR_CANCEL_TOPIC_CONSUMER Failed to cancel reading topic {2} on channel {0} with consumer tag {1}: {3}
    # 0 = connection name, 1 = error message
QMGR_CLOSE_CONN_ERROR=QMGR_CLOSE_CONN_ERROR Error closing {0} connection: {1}
    # 0 = error message
QMGR_CONNECTION_CREATE_ERROR=QMGR_CONNECTION_CREATE_ERROR Unable to create new connection to queuing subsystem: {0}
    # 0 = error message
QMGR_CONNECTION_TIMEOUT_ERROR=QMGR_CONNECTION_TIMEOUT_ERROR Timeout while creating new connection to queuing subsystem: {0}
    # 0 = tenantId, 1 = connection name, 2 = channel id, 3 = error message
QMGR_XCHG_TENANT_ERROR=QMGR_XCHG_TENANT_ERROR Unable to create exchange for tenant {0} on connection {1}/{2}: {3}
    # 0 = queue or topic, 1 = queue name, 2 = connection name, 3 = channel id, 4 = error message
QMGR_Q_DECLARE_ERROR=QMGR_Q_DECLARE_ERROR Unable to declare {0} {1} on connection {2}/{3}: {4}.
    # 0 = queue or topic, 1 = queue name, 2 = binding key, 3 = connection name, 4 = channel id, 5 = error message
QMGR_Q_BIND_ERROR=QMGR_Q_BIND_ERROR Unable to bind {0} {1} with binding key {2} on connection {3}/{4}: {5}.
    # 0 = queue or topic, 1 = queue name, 2 = binding key, 3 = exchange name, 4 = error message
QMGR_Q_UNBIND_ERROR=QMGR_Q_UNBIND_ERROR Unable to unbind {0} {1} with binding key {2} from exchange {3}: {4}.


##########################################################################################
# Jobs Section 
##########################################################################################
# ---------------- Job General
JOBS_ACCEPTED=JOBS_ACCEPTED Job accepted for processing.
JOBS_CUSTOM_EVENT_CREATED=JOBS_CUSTOM_EVENT_CREATED Job custom event created.

JOBS_NO_TENANT_ID=JOBS_NO_TENANT_ID Unable to retrieve current tenant id.
JOBS_NO_USER=JOBS_NO_USER Unable to retrieve current user.

    # 0 = error message
JOBS_INITIALIZATION_ERROR=JOBS_INITIALIZATION_ERROR Job service failed to initialize correctly: {0}
    # 0 = job uuid, 1 = error message
JOBS_INVALID_JOB=JOBS_INVALID_JOB Job {0} cannot be run do to missing or invalid information: {1}
    # 0 = job uuid, 1 = job status
JOBS_INACTIVE_JOB_REMOVED=JOBS_INACTIVE_JOB_REMOVED Inactive job {0} with status {1} was removed from the work queue.
    # 0 = job uuid, 1 = missing information
JOBS_ABORT_MISSING_INFO=JOBS_ABORT_MISSING_INFO Abort job {0} missing {1} information.
    # 0 = job phase, 1 = job state (status)
JOBS_STATE_PROCESSING=JOBS_STATE_PROCESSING Beginning phase {0} processing for status {1} for job {2}. 
    # 0 = job uuid, 1 = new work path, 2 = error message
JOBS_WORKPATH_CHANGE_ERROR=JOBS_WORKPATH_CHANGE_ERROR Unable to update the work path to "{1}" for job {0}: {1}
    # 0 = source file or dir, 1 = target file or dir, 2 = job uuid, 3 = error message
JOBS_COPY_ERROR=JOBS_COPY_ERROR Unable to copy {0} to {1} while processing job {2}: {3}
    # 0 = source file or dir, 1 = target file or dir, 2 = job uuid, 3 = error message
JOBS_MOVE_ERROR=JOBS_MOVE_ERROR Unable to move {0} to {1} while processing job {2}: {3}
    # 0 = job uuid, 1 = file path, 2 = attempted operation, 3 = error message
JOBS_FILE_ACCESS_ERROR=JOBS_FILE_ACCESS_ERROR Unable to access file {1} for {2} while processing job {0}: {3}
    # 0 = job uuid, 1 = tenant id, 2 = owner, 3 = error message
JOBS_JOB_REJECTED_BY_DB=JOBS_JOB_REJECTED_BY_DB Error inserting job {0} in tenant {1} for user {2} into database. There will be no record of this job: {3}

# ---------------- Job Status Messages
    # 0 = job uuid
JOBS_INITIAL_INPUT_VALIDATION_COMPLETE=JOBS_INITIAL_INPUT_VALIDATION_COMPLETE Initial input validation complete for job {0}.
    # 0 = job uuid, 1 = job owner, 2 = tenant id, 3 = execution system name
JOBS_QUEUED_ON_REMOTE_SYSTEM=JOBS_QUEUED_ON_REMOTE_SYSTEM Job {0} for user {1} in tenant {2} is queued on system {3}.
    # 0 = job uuid
JOBS_JOB_NOT_IN_TERMINAL_STATE=JOBS_JOB_NOT_IN_TERMINAL_STATE Job {0} is not in a Terminal state and visibility can't be changed.
    # 0 = job uuid
JOBS_JOB_IN_TERMINAL_STATE=JOBS_JOB_IN_TERMINAL_STATE Job {0} is in a Terminal state and can't be canceled.
    # 0 = job uuid, 1 = visibility
JOBS_JOB_CHANGED_VISBILITY=JOBS_JOB_CHANGED_VISBILITY Job {0} has been changed to {1}.
    # 0 = job uuid, 1 = visibility
JOBS_JOB_VISBILITY=JOBS_JOB_VISBILITY Job {0} is already {1}.

    # 0 = job uuid, 1 = arg key, 2 = value type (inputs or parameters)
JOBS_MISSING_ARG_VALUE=JOBS_MISSING_ARG_VALUE Job {0} is missing an {2} key named "{1}".
    # 0 = job uuid, 1 = application name, 2 = arg key, 3 = value type (inputs or parameters)
JOBS_PROHIBITED_ARG_VALUE=JOBS_PROHIBITED_ARG_VALUE Job {0} cannot submit a value for {3} key "{2}" because this is a fixed value in application {1}.
    # 0 = job uuid, 1 = arg key, 2 = application name, 3 = value type (inputs or parameters)
JOBS_UNDEFINED_ARG_VALUE=JOBS_UNDEFINED_ARG_VALUE Job {0} specified an {3} key named "{1}" that is not defined in application {2}.
    # 0 = job uuid, 1 = arg key, 2 = value type (inputs or parameters)
JOBS_BAD_ARG_VALUE_ENTRY=JOBS_BAD_ARG_VALUE_ENTRY Job {0} specified an {2} key named "{1}" that is not a string or array of strings.
    # 0 = job uuid, 1 = arg key, 2 = key size, 3 = size limit, 4 = value type (inputs or parameters)
JOBS_ARG_VALUE_MIN_SIZE=JOBS_ARG_VALUE_MIN_SIZE Job {0} specified an {4} key named "{1}" with cardinality {2} that does not meet the application minimum of {3}.
    # 0 = job uuid, 1 = arg key, 2 = key size, 3 = size limit, 4 = value type (inputs or parameters)
JOBS_ARG_VALUE_MAX_SIZE=JOBS_ARG_VALUE_MAX_SIZE Job {0} specified an {4} key named "{1}" with cardinality {2} that exceeds the application maximum of {3}.
    # 0 = job uuid, 1 = arg key, 2 = input value, 3 = regex, , 4 = value type (inputs or parameters)
JOBS_ARG_VALUE_CONFORMANCE=JOBS_ARG_VALUE_CONFORMANCE Job {0} specified an {4} key named "{1}" with value {2} that does not conform to regex {3}.
    # 0 = job uuid, 1 = arg key, 2 = value type (inputs or parameters)
JOBS_UNEXPECTED_ARG_VALUE_ENTRY=JOBS_UNEXPECTED_ARG_VALUE_ENTRY Job {0} specified tried to process an unexpected {2} key named "{1}".
    # 0 = job uuid, 1 = input key, 2 = input value    
JOBS_INPUT_URI_PARSE_ERROR=JOBS_INPUT_URI_PARSE_ERROR Job {0} specified an input key named "{1}" with improper URI formatting: {2} 
    # 0 = job uuid, 1 = input key, 2 = input value
JOBS_INPUT_UNSUPPORTED_SCHEME=JOBS_INPUT_UNSUPPORTED_SCHEME Job {0} specified an input key named "{1}" with an unsupported scheme: {2} 
     # 0 = job uuid, 1 = parm key, 2 = parm type, 3 = error message
JOBS_INVALID_PARAMETER_TYPE=JOBS_INVALID_PARAMETER_TYPE Job {0} specified a parameter key named "{1}" with invalid type {2}: {3}
     # 0 = job uuid, 1 = parm key, 2 = parm type, 3 = actual type
JOBS_PARAMETER_TYPE_MISMATCH=JOBS_PARAMETER_TYPE_MISMATCH Job {0} specified a parameter key named "{1}" with expected type {2} and actual type {3}.
     # 0 = job uuid, 1 = parm key, 2 = parm type, 3 = actual value, 4 = error message
JOBS_INVALID_PARAMETER_VALUE=JOBS_INVALID_PARAMETER_VALUE Job {0} specified parameter "{1}" with type {2} and invalid value {3}: {4}
    # 0 = job uuid, 1 = parm key, 2 = app id, 3 = enum value
JOBS_PARAMETER_ENUM_NOT_FOUND=JOBS_PARAMETER_ENUM_NOT_FOUND Job {0} specified parameter "{1}" in application {2} with undefined enumeration value {3}.
    # 0 = job uuid, 1 = tenant id
JOBS_VALIDATED_ARGS_SAVE_ERROR=JOBS_VALIDATED_ARGS_SAVE_ERROR Unable to save validated arguments for job {0} in tenant {1}.
    # 0 = enum type, 1 = enum value, 2 = job uuid
JOBS_UNKNOWN_ENUM=JOBS_UNKNOWN_ENUM Unknown {0} value {1} while processing job {2}.
    # 0 = job uuid, 1 = startup script variable
JOBS_VAR_NOT_IMPLEMENTED=JOBS_VAR_NOT_IMPLEMENTED Job {0} attempted to use unsupported startup script variable "{0}".
    # 0 = job uuid, 1 = macro name, 2 = error message
JOBS_MACRO_NOT_RESOLVED=JOBS_MACRO_NOT_RESOLVED Job {0} could not resolve macro {1}: {2}

    # 0 = processorsPerNode parameter, 1 = nodeCount parameter
JOBS_INVALID_PROCESSORS_PER_NODE=JOBS_INVALID_PROCESSORS_PER_NODE The deprecated "processorsPerNode" parameter was \
set to {0} which does not evenly divide the "nodeCount" value of {1}. If used, the "processorsPerNode" should reflect \
the TOTAL number of processors across all nodes. This misnamed parameter is preserved for compatibility with legacy \
code, but should not be used in new code. Instead, the new "processorsOnEachNode" parameter should be used to specify the \
number of processors to use on each node. Using the new parameter, the total number of processors used by the job equals \
"processorsOnEachNode" times "nodeCount".  The "processorsPerNode" parameter is ignored if "processorsOnEachNode" is \
used.      

    # 0 = thread name
JOBS_THREADLOCAL_PUSH_ERROR=JOBS_THREADLOCAL_PUSH_ERROR Unable to push a new threadlocal context for thread {0}.
    # 0 = job name, 1 = application name, 2 = error message
JOBS_SUBMIT_ERROR=JOBS_SUBMIT_ERROR Error submitting job {0} for application {1}: {2}
    # 0 = job uuid, 1 = queue name, 2 = tenant id, 3 = job owner, 4 = error message
JOBS_RESUBMIT_ERROR=JOBS_RESUBMIT_ERROR Error resubmitting job {0} on queue {1} in tenant {2} for user {3}: {4}
    # 0 = job uuid
JOBS_JOBRESUBMIT_INSERT_ERROR=JOBS_JOBRESUBMIT_INSERT_ERROR Error inserting job {0}
    # 0 = current user"s tenant id, 2 = job tenant id
JOBS_MISMATCHED_TENANT=JOBS_MISMATCHED_TENANT The current tenant id ({0}) does not match the job tenant id ({1}).
    # 0 = current user, 2 = job's owner
JOBS_MISMATCHED_OWNER=JOBS_MISMATCHED_OWNER The current owner ({0}) does not match the job owner ({1}).
    # 0 = invalid application id
JOBS_INVALID_APPID=JOBS_INVALID_APPID Application ID "{0}" does not conform to the required format of a name and version separated by a hyphen. eg. example-1.0.

    # 0 = job uuid, 1 = parm name, 2 = parm value
JOBS_APPLIED_APP_DEFAULT=JOBS_APPLIED_APP_DEFAULT Job {0} assigned application default {1} = {2}.
    # 0 = queue name, 1 = exec system name, 2 = job uuid, 3 = node count, 4 = processor count, 5 = memory, 6 = hours 
JOBS_INVALID_REMOTE_QUEUE_ASSIGNMENT=JOBS_INVALID_REMOTE_QUEUE_ASSIGNMENT Queue {0} on execution system {1} cannot accept job {2} requiring {3} nodes, {4} processors, {5}GB memory and {6} hours of run time.
    # 0 = tenant id, 1 = error message
JOBS_NO_TENANT_FOR_NOTIFICAION_CHECK=JOBS_NO_TENANT_FOR_NOTIFICAION_CHECK Unable to retrieve tenant {0} during notification validation: {1}   

    # 0 = system id, 1 = job uuid, 2 = error message
JOBS_REMOTE_DATA_CLIENT_CREATE=JOBS_REMOTE_DATA_CLIENT_CREATE Unable to create remote data client for system "{0}" for job {1}: {2}
    # 0 = system id, 1 = job uuid, 2 = error message
JOBS_REMOTE_SUBMIT_CLIENT_CREATE=JOBS_REMOTE_SUBMIT_CLIENT_CREATE Unable to create remote submission client for system "{0}" for job {1}: {2}
    # 0 = job uuid, 1 = command, 2 = system id, 3 = error message
JOBS_REMOTE_CMD_FAILURE=JOBS_REMOTE_CMD_FAILURE Job {0} failed to execute command "{1}" on system {2}: {3}

    # 0 macro type, 1 = macro name, 2 = exec system id, 3 = job uuid, 4 = error message
JOBS_STARTUP_SCRIPT_MACRO_ERROR=JOBS_STARTUP_SCRIPT_MACRO_ERROR The {1} macro of type {0} could not be resolved for execution system {2} while processing job {3}: {4}
    # 0 = job uuid, 1 = storage system id, 2 = storage deployment path, 3 = temporary path
JOBS_FETCH_APP=JOBS_FETCH_APP Fetching application assets for job {0} from agave://{1}/{2} to temporary application directory {3}.
    # 0 = zip file name, 1 = job uuid
JOBS_APP_UNPACK_ERROR=JOBS_APP_UNPACK_ERROR Unable to unpack application bundle in file {0} for job {1}. 
    # 0 = zip file name, 1 = job uuid, 2 = error message
JOBS_UNZIP_ERROR=JOBS_UNZIP_ERROR Unable to unzip file {0} for job {1}: {2}
    # 0 = job uuid, 1 = directory path, 2 = error message
JOBS_TRANSFER_SIZE_ERROR=JOBS_TRANSFER_SIZE_ERROR Job {0} unable to calculate transfer size for {1}: {2}
    # 0 = job uuid, 1 = job owner, 2 = tenant id, 3 = local directory, 4 = remote directory, 5 = error message  
JOBS_SYNC_TO_REMOTE_ERROR=JOBS_SYNC_TO_REMOTE_ERROR Unable to copy directory "{3}" contents to "{4}" while processing job {0} for user {1} in tenant {2}: {5}
    # 0 = job uuid, 1 = job owner, 2 = tenant id, 3 = filepath, 4 = error message  
JOBS_SUBMIT_FILE_ERROR=JOBS_SUBMIT_FILE_ERROR Unable to write file {3} while submitting job {0} for user {1} in tenant {2}: {4}
    # 0 = job uuid, 1 = tenant id, 2 = execution system, 3 = error message
JOBS_ERROR_AFTER_SUBMIT=JOBS_ERROR_AFTER_SUBMIT An error was encountered after job {0} in tenant {1} was queued on {2}, but before the new job state could be saved. The job may be queued again, possibly leading to unpredicable results. Exception: {3}   
    # 0 = job uuid, 1 = tenant id, 2 = execution system, 3 = error message
JOBS_SOFTWARE_COPY_ERROR=JOBS_SOFTWARE_COPY_ERROR Unable to copy software for job {0} in tenant {1} to execution system {2}: {3}
    # 0 = job uuid, 1 = tenant id, 2 = execution system, 3 = error message
JOBS_CREATE_TEMP_FILES=JOBS_CREATE_TEMP_FILES Unable to create temporary files for job {0} in tenant {1} to execution system {2}: {3}
    # 0 = job uuid, 1 = application id
JOBS_PROCESSING_WRAPPER=JOBS_PROCESSING_WRAPPER Processing the wrapper template for job {0} using application {1}.

# ---------------- Job Queues
JOBS_QUEUE_NULL=JOBS_QUEUE_NULL Null job queue object received.
JOBS_QUEUE_MISSING_NAME=JOBS_QUEUE_MISSING_NAME No job queue name specified in job queue definition.
JOBS_QUEUE_MISSING_TENANT=JOBS_QUEUE_MISSING_TENANT No tenant id specified in job queue definition.
    
    # 0 = job name, 1 = tenant id, 2 = job owner, 3 = error message
JOBS_JOB_CREATE_ERROR=JOBS_JOB_CREATE_ERROR Unable to create job {0} in tenant {1} for user {2}: {3}
    # 0 = job name, 1 = tenant id, 2 = job owner, 3 = error message
JOBS_JOB_SELECT_UUID_ERROR=JOBS_JOB_SELECT_UUID_ERROR Unable to select job {0} in tenant {1} for user {2}: {3}
    # 0 = job name, 1 = tenant id, 2 = job owner, 3 = error message
JOBS_JOB_INSERT_ERROR=JOBS_JOB_INSERT_ERROR Table insertion failed for job {0} in tenant {1} for user {2}: {3}
    # 0 = job name/id, 1 = tenant id, 2 = job owner, 3 = error message
JOBS_JOB_UPDATE_ERROR=JOBS_JOB_UPDATE_ERROR Table update failed for job {0} in tenant {1} for user {2}: {3}
    # 0 = job name, 1 = tenant id, 2 = job owner, 3 = error message
JOBS_NOTIFICATION_INSERT_ERROR=JOBS_NOTIFICATION_INSERT_ERROR Table insertion failed for job {0} in tenant {1} for user {2}: {3}
    # 0 = job uuid, 1 = tenant id
JOBS_JOB_NOT_FOUND=JOBS_JOB_NOT_FOUND Job {0} not found for tenant {1}.
    # 0 = job uuid
JOBS_JOB_CANCEL_ACCEPTED=JOBS_JOB_CANCEL_ACCEPTED Request to cancel job {0} has been accepted. If the job is in a terminal state, \
the request will have no effect. If the job is transitioning between active and blocked states, another cancel request may need to be sent.
    # 0 = job uuid
JOBS_CMD_MSG_CANCELLED_BEFORE_RECOVERY=JOBS_CMD_MSG_CANCELLED_BEFORE_RECOVERY Job {0} cancelled.
 
    # 0 = job uuid, 1 = tenant id
JOBS_REFRESH_ERROR=JOBS_REFRESH_ERROR Unable to refresh job {0} for tenant {1} because query returned no data.
    # 0 = thread name, 1 = worker name, 2 = job uuid, 3 = tenant id, 4 = error message
JOBS_JOB_TOPIC_THREAD_CLEAN_UP=JOBS_JOB_TOPIC_THREAD_CLEAN_UP Error cleaning up job topic thread {0} in worker {1} while servicing job {2} in tenant {3}: {4}

    # 0 = truncated queue name
JOBS_QUEUE_LONG_NAME=JOBS_QUEUE_LONG_NAME The the maximum queue name length of 255 was exceeded: {0}
    # 0 = queue name
JOBS_QUEUE_INVALID_NAME=JOBS_QUEUE_INVALID_NAME Queue name can only contain letters, digits, hyphen, underscore, period, or colon: {0}
    # 0 = queue name, 1 = queue priority
JOBS_QUEUE_INVALID_DEFAULT_QUEUE_DEF=JOBS_QUEUE_INVALID_DEFAULT_QUEUE_DEF The tenant default queue {0} must be assigned priority {1}.
    # 0 = queue name, 1 = queue priority
JOBS_QUEUE_INVALID_NON_DEFAULT_QUEUE_DEF=JOBS_QUEUE_INVALID_NON_DEFAULT_QUEUE_DEF The tenant non-default queue {0} cannot be assigned priority {1}.
    # 0 = prefix
JOBS_QUEUE_INVALID_NAME_PREFIX=JOBS_QUEUE_INVALID_NAME_PREFIX Job queue names must begin with "tapis.jobq..submit.", such as: " + {0}
    # 0 = tenant id, 1 = queue name 
JOBS_QUEUE_NAME_NO_SUFFIX=JOBS_QUEUE_NAME_NO_SUFFIX Expected a suffix after tenant id "{0}" in queue name {0}. 
    # 0 = tenant id, 1 = queue name 
JOBS_QUEUE_INVALID_NAME_SUFFIX=JOBS_QUEUE_INVALID_NAME_SUFFIX The last segment of a queue name following tenant id "{0}" cannot contain a period: {1}
    # 0 = prefix
JOBS_QUEUE_RESERVED_NAME_PREFIX=JOBS_QUEUE_RESERVED_NAME_PREFIX Job submission queue names for the current tenant must begin with the following prefix: {0}
JOBS_QUEUE_INVALID_PRIORITY=JOBS_QUEUE_INVALID_PRIORITY A priority of at least 1 must be specified in job queue definition.
    # 0 = queue name, 1 = current user's tenant id, 2 = queue tenant id
JOBS_QUEUE_MISMATCHED_TENANT=JOBS_QUEUE_MISMATCHED_TENANT Unable to create job queue {0} because the current tenant id ({1}) does not match the job queue's tenant id ({2}).
    # 0 = priority, 1 = queue name, 2 = tenant id
JOBS_QUEUE_DUP_PRIORITY=JOBS_QUEUE_DUP_PRIORITY A priority of value {0} cannot be re-assigned to queue {1} in tenant {2}. Please choose unique priorities for queues in the same tenant."

JOBS_QUEUE_FILTER_EMPTY=JOBS_QUEUE_FILTER_EMPTY Empty job queue filter received.
    # 0 = parse error details
JOBS_QUEUE_FILTER_PARSE_ERROR=JOBS_QUEUE_FILTER_PARSE_ERROR Filter parse failure: {0}
    # 0 = error details
JOBS_QUEUE_FILTER_VALUE_ERROR=JOBS_QUEUE_FILTER_VALUE_ERROR Invalid property assignment. {0}
    # 0 = error details
JOBS_QUEUE_FILTER_EVAL_ERROR=JOBS_QUEUE_FILTER_EVAL_ERROR Filter evaluation failure. {0}
    # 0 = tenand id, 1 = job name, 2 = default queue name
JOBS_QUEUE_FILTER_NONE=JOBS_QUEUE_FILTER_NONE No queue filter evaluated to true for tenant {0} and job {1}. Using default tenant queue {2}.

    # 0 = sql message, 1 = job queue object as string                         
JOBS_QUEUE_FAILED_CREATE=JOBS_QUEUE_FAILED_CREATE Unable to create new job queue: {0} \n {1}
    # 0 = selector column, 1 = selector value, 2 = tenant id, 3 = sql message
JOBS_QUEUE_FAILED_QUERY=JOBS_QUEUE_FAILED_QUERY Unable to query queue with {0} = {1} for tenant {2}: {3}
    # 0 = tenant id, 1 = sql message
JOBS_QUEUE_FAILED_TENANT_QUERY=JOBS_QUEUE_FAILED_TENANT_QUERY Unable to query queues for tenant {0}: {1}
    # 0 = sql message
JOBS_QUEUE_FAILED_ALL_QUERY=JOBS_QUEUE_FAILED_ALL_QUERY Unable to query job queues: {0}
    # 0 = tenant id, 1 = sql message
JOBS_QUEUE_FAILED_TENANT_QUERY_SKIPPING=JOBS_QUEUE_FAILED_TENANT_QUERY_SKIPPING Unable to query queues for tenant {0}. Skipping refresh for tenant: {1}
    # 0 = selector column, 1 = selector value, 2 = tenant id, 3 = sql message
JOBS_QUEUE_FAILED_DELETE=JOBS_QUEUE_FAILED_DELETE Unable to delete queue with {0} = {1} for tenant {2}: {3}
    # 0 = queue name, 1 = tenant id, 2 = sql message
JOBS_QUEUE_FAILED_UPDATE=JOBS_QUEUE_FAILED_UPDATE Unable to update queue {0} for tenant {1}: {2}
    # 0 = file name
JOBS_QUEUE_MISSING_NAME=JOBS_QUEUE_MISSING_NAME Encountered unnamed queue definition in file {0}.
    # 0 = queue name
JOBS_QUEUE_MISSING_TENANT_ID=JOBS_QUEUE_MISSING_TENANT_ID No tenant ID configured in exchange definition {0}.
    # 0 = queue name, 1 = file name, 2 = file tenant id, 3 = expected tenant id
JOBS_QUEUE_WRONG_TENANT_ID=JOBS_QUEUE_WRONG_TENANT_ID Queue {0} is defined in file {1} with tenant id {2} instead of {3}. 
    # 0 = queue name
JOBS_QUEUE_FAILED_ADD=JOBS_QUEUE_FAILED_ADD Unable to add queue definition to database for queue {0}.
    # 0 = queue name, 1 = current tenant id, 2 = update tenant id
JOBS_QUEUE_UPDATE_MISMATCHED_TENANT=JOBS_QUEUE_UPDATE_MISMATCHED_TENANT Failed to update queue {0} because current tenant {1} does not match new tenant {2}.    
    # 0 = queue name
JOBS_QUEUE_UPDATE_FILTER_EMPTY=JOBS_QUEUE_UPDATE_FILTER_EMPTY Empty filter received for queue {0}.
    # 0 = queue name, 1 = sql error message
JOBS_QUEUE_UPDATE_FAILED=JOBS_QUEUE_UPDATE_FAILED Unable to update queue definition in database for queue {0}: {1}
    # 0 = tenant id
JOBS_QUEUE_DEFINITIONS_LOAD_ERROR=JOBS_QUEUE_DEFINITIONS_LOAD_ERROR Unable to load job queue definitions for tenant {0}. 
    # 0 = topic name, 1 = tenant id
JOBS_QUEUE_UNKNOWN_TOPIC=JOBS_QUEUE_UNKNOWN_TOPIC Encountered unknown topic {0} for tenant {1}.
    # 0 = cmd or event message type, 1 = topic name
JOBS_QUEUE_TOPIC_WRITE_ERROR=JOBS_QUEUE_TOPIC_WRITE_ERROR Unable to write message type {0} to topic {1}. 
    # 0 = Binding or Routing, 1 = prefix, 2 = invalid key
JOBS_QUEUE_INVALID_KEY_PREFIX=JOBS_JOBS_QUEUE_INVALID_KEY_PREFIX {0} key does not start with prefix "{1}": {2}. 
    # 0 = component name, 1 = thread name, 2 = reader configuration info
JOBS_QUEUE_EXCHANGE_READER=JOBS_QUEUE_EXCHANGE_READER Configuring {0} on thread {1} to read:\n {2}
    # 0 = command name, 1 = error message
JOBS_QUEUE_POST_ERROR=JOBS_QUEUE_POST_ERROR Unable to post {0} command: {1}
    # 0 = queue name,, 1 = tenant id, 2 = priority
JOBS_QUEUE_CREATED=JOBS_QUEUE_CREATED Create queue "{0}" in tenant {1} with priority {2}.
    # 0 = thread name, 1 = worker name, 2 = topic, 3 = exchange, 4 = binding key, 5 = error message
JOBS_QUEUE_JOB_SPECIFIC_THREAD_BIND=JOBS_QUEUE_JOB_SPECIFIC_THREAD_BIND Thread {0} in worker {1} unable to create topic {2} and bind it to exchange {3} with binding key {4}: {5} 
    # 0 = thread name, 1 = worker name, 2 = topic, 3 = exchange, 4 = binding key, 5 = error message
JOBS_QUEUE_JOB_SPECIFIC_THREAD_UNBIND=JOBS_QUEUE_JOB_SPECIFIC_THREAD_UNBIND Thread {0} in worker {1} unable to unbind topic {2} from exchange {3} with binding key {4}: {5} 
    # 0 = job uuid, 1 = tenant id, 2 = user id, 3 = error message
JOBS_QUEUE_POST_RECOVERY_QUEUE=JOBS_QUEUE_POST_RECOVERY_QUEUE Failed to post to recovery queue for job {0} in tenant {1} for user {2}: {3}

    # 0 = generated message
JOBS_QUEUE_UNROUTABLE_MSG=JOBS_QUEUE_UNROUTABLE_MSG\n{0}
    # 0 = generated message
JOBS_QUEUE_DEAD_LETTER_MSG=JOBS_QUEUE_DEAD_LETTER_MSG\n{0}

    # 0 = mail subject line, 1 = recipient email address
JOBS_MAIL_SEND_ERROR=JOBS_MAIL_SEND_ERROR Unable to send mail with subject "{0}" to {1}.

    # 0 = queues or topics, 1 = tenantId
JOBS_QMGR_INIT_ERROR=JOBS_QMGR_INIT_ERROR Error initializing tenant {0} for one or more tenants.
    # 0 = connection name, 1 = error message 
JOBS_QMGR_CHANNEL_CREATE_ERROR=JOBS_QMGR_CHANNEL_CREATE_ERROR Unable to create channel on connection {0}: {1}
    # 0 = tenantId
JOBS_QMGR_CHANNEL_TENANT_ERROR=JOBS_QMGR_CHANNEL_TENANT_ERROR Unable to create channel for tenant {0}.
    # 0 = channel id, 1 = error message
JOBS_QMGR_CHANNEL_ABORT_ERROR=JOBS_QMGR_CHANNEL_ABORT_ERROR Unable to abort channel {0}: {1}
    # 0 = channel id, 1 = error message
JOBS_QMGR_CHANNEL_CLOSE_ERROR=JOBS_QMGR_CHANNEL_CLOSE_ERROR Unable to close channel {0}: {1}
    # 0 = tenantId, 1 = connection name, 2 = channel id, 3 = error message
JOBS_QMGR_XCHG_TENANT_ERROR=JOBS_QMGR_XCHG_TENANT_ERROR Unable to create exchange for tenant {0} on connection {1}/{2}: {3}
    # 0 = exchange name, 1 = connection name, 2 = channel id, 3 = error message
JOBS_QMGR_PUBLISH_ERROR=JOBS_QMGR_PUBLISH_ERROR Unable to publish to exchange {0} on connection {1}/{2}: {3}
    # 0 = queue or topic, 1 = queue name, 2 = connection name, 3 = channel id, 4 = error message
JOBS_QMGR_Q_DECLARE_ERROR=JOBS_QMGR_Q_DECLARE_ERROR Unable to declare {0} {1} on connection {2}/{3}: {4}.
    # 0 = queue or topic, 1 = queue name, 2 = binding key, 3 = connection name, 4 = channel id, 5 = error message
JOBS_QMGR_Q_BIND_ERROR=JOBS_QMGR_Q_BIND_ERROR Unable to bind {0} {1} with binding key {2} on connection {3}/{4}: {5}.
    # 0 = queue or topic, 1 = queue name, 2 = binding key, 3 = exchange name, 4 = error message
JOBS_QMGR_Q_UNBIND_ERROR=JOBS_QMGR_Q_UNBIND_ERROR Unable to unbind {0} {1} with binding key {2} from exchange {3}: {4}.
    # 0 = error message
JOBS_QMGR_CONNECTION_CREATE_ERROR=JOBS_QMGR_CONNECTION_CREATE_ERROR Unable to create new connection to queuing subsystem: {0}
    # 0 = error message
JOBS_QMGR_CONNECTION_TIMEOUT_ERROR=JOBS_QMGR_CONNECTION_TIMEOUT_ERROR Timeout while creating new connection to queuing subsystem: {0}
    # 0 = tenant id, 1 = exchange name, 2 = routing key
JOBS_QMGR_POST=JOBS_QMGR_POST Posting message for tenant {0} on exchange {1} using routing key {2}.
    # 0 = connection name, 1 = error message
JOBS_QMGR_CLOSE_CONN_ERROR=JOBS_QMGR_CLOSE_CONN_ERROR Error closing {0} connection: {1}
    # 0 = program name, 1 = connection name, 2 = channel id
JOBS_QMGR_CANCEL_CONSUMER_ERROR=JOBS_QMGR_CANCEL_CONSUMER_ERROR {0} failed to cancel consumer on channel {2} on connection {1}. 
    # 0 = job uuid
JOBS_QMGR_POST_CANCEL=JOBS_QMGR_POST Posting message to cancel job {0}.
    # 0 = channel number, 1 = consumer tag, 2 = topic name, 3 = error message
JOBS_QMGR_CANCEL_TOPIC_CONSUMER=JOBS_QMGR_CANCEL_TOPIC_CONSUMER Failed to cancel reading topic {2} on channel {0} with consumer tag {1}: {3}

    # 0 = tenant id, 1 = sql message
JOBS_TENANT_FAILED_QUERY=JOBS_TENANT_FAILED_QUERY Unable to query tenant {0}: {1}
    # 0 = tenant id, 1 = sql message
JOBS_TENANT_NOT_FOUND_FOR_QUEUE=JOBS_TENANT_NOT_FOUND_FOR_QUEUE Unable to check existence of tenant {0}. Skipping queue definition refresh for this tenant.
    # 0 = tenant id, 1 = job uuid, 2 = error message 
JOBS_TENANT_NO_BASE_URL=JOBS_TENANT_NO_BASE_URL No base url found for tenant {0} while processing job {1}: {2}

# ---------------- Job Action messages
    # 0 = user, 1 = action, 2 = job uuid
JOBS_JOB_ACTION_NOT_AUTHORIZED=JOBS_JOB_ACTION_NOT_AUTHORIZED Requestor {0} is not authorized to apply {1} action to job {2}.  
    # 0 = job uuid, 1 = error msg
JOBS_JOBRESUBMIT_NOT_FOUND=JOBS_JOBRESUBMIT_NOT_FOUND Job {0} not found in resubmission cataloge : {1}
    # 0 = job uuid, 1 = error msg
JOBS_JOBRESUBMIT_FAILED_PERSIST=JOBS_JOBRESUBMIT_FAILED_PERSIST Job {0} not persisted in resubmission catalog : {1}
    # 0 = job uuid, 1 = job status
JOBS_JOB_INVALID_RESUBMIT_STATE=JOBS_JOB_INVALID_RESUBMIT_STATE Job {0} cannot be resubmitted at this time because \
it is in the {0} state; resubmission is only possible on jobs that have progressed beyond PENDING.  

    # 0 = system id, 1 = tenant id
JOBS_SYSTEM_NOT_FOUND=JOBS_SYSTEM_NOT_FOUND System {0} not found for tenant {1}.
    # 0 = system id, 1 = tenant id, 2 = sql message
JOBS_SYSTEM_QRY_FAILURE=JOBS_SYSTEM_QRY_FAILURE Unable to query system {0} not found for tenant {1}: {2}
    # 0 = job uuid, 1 = input uri, 2 = error message 
JOBS_GET_INPUT_SYSTEM_ERROR=JOBS_GET_INPUT_SYSTEM_ERROR Job {0} unable to access system for input {1}: {2} 

    # 0 = app unique name, 1 = tenant id
JOBS_APP_UUID_NOT_FOUND=JOBS_APP_UUID_NOT_FOUND Application {0} not found for tenant {1}.

    # 0 = user name, 1 = job uuid
JOBS_PEM_OUTPUT_FOLDER=JOBS_PEM_OUTPUT_FOLDER User {0} running job {1} does not have permission to read the job's output folder.
    # 0 = user name, 1 = job uuid, 2 = path, 3 = system id
JOBS_PEM_REMOTE_PATH=JOBS_PEM_REMOTE_PATH User {0} running job {1} does not have permission to read "{2}" on system {3}.
    # 0 = job uuid, 1 = path, 2 = host
JOBS_DIR_NOT_ALLOWED=JOBS_DIR_NOT_ALLOWED Job {0} expected path "{1}" on host {2} to be a file not a directory.

# ---------------- Job Worker
    # 0 = error message
JOBS_WORKER_START_ERROR=JOBS_WORKER_START_ERROR Job worker failed to start: {0}
    # 0 = number of workers, 1 = minimum, 2 = maximum
JOBS_WORKER_NUMBER_WORKERS=JOBS_WORKER_NUMBER_WORKERS The number of workers {0} must be between {1} and {2}. 
    # 0 = parm name, 1 = maximum length
JOBS_WORKER_PARM_LENGTH=JOBS_WORKER_PARM_LENGTH The {0} parameter cannot contain more than {1} characters. 
    # 0 = parm name, 2 = parm value
JOBS_WORKER_INVALID_CHAR=JOBS_WORKER_INVALID_CHAR The {0} parameter contains non-alphanumeric characters other than "._-"; {1}
    # 0 = worker name
JOBS_WORKER_SHUTDOWN_INTERRUPT=JOBS_WORKER_SHUTDOWN_INTERRUPT JobWorker {0} shutting down due to an interrupt.
    # 0 = worker name
JOBS_WORKER_SHUTDOWN_SIGNAL=JOBS_WORKER_SHUTDOWN_SIGNAL JobWorker {0} shutting down due to a signal.
    # 0 = thread name
JOBS_WORKER_SIGNALING_SHUTDOWN=JOBS_WORKER_SIGNALING_SHUTDOWN Thread {0} signaling shutdown.
    # 0 = worker name, 1 = worker uuid
JOBS_WORKER_TERMINATING=JOBS_WORKER_TERMINATING Terminating JobWorker {0} ({1}).
    # 0 = worker name, 1 = channel number, 2 = error message
JOBS_WORKER_CHANNEL_PREFETCH_ERROR=JOBS_WORKER_CHANNEL_PREFETCH_ERROR JobWorker {0} unable to set prefetch number on channel {1}: {2}
    # 0 = worker name, 1 = queue name, 2 = error message
JOBS_WORKER_CHANNEL_INIT_ERROR=JOBS_WORKER_CHANNEL_INIT_ERROR JobWorker {0} unable to initialize a channel to read queue {1}: {2}
    # 0 = worker name, 1 = queue name, 2 = processor name, 3 = job uuid , 4 = error message
JOBS_WORKER_PROCESSING_ERROR=JOBS_WORKER_PROCESSING_ERROR An exception occurred on JobWorker {0} on queue {1} running {2} while processing job {3}: {4}
    # 0 = message type, 1 = processor name
JOBS_WORKER_INVALD_MSG_TYPE=JOBS_WORKER_INVALD_MSG_TYPE An invalid message type of {0} was received by {1}.
    # 0 = processor name, 1 = message contents, 2 = error message
JOBS_WORKER_MSG_PROCESSING_ERROR=JOBS_WORKER_MSG_PROCESSING_ERROR {0} could not process message:\n{1}\n{2}.
    # 0 = worker name
JOBS_WORKER_THREADLOCAL_CLONE_ERROR=JOBS_WORKER_THREADLOCAL_CLONE_ERROR Unable to clone the threadlocal context for jobs worker {0}.
    # 0 = worker name, 1 = cmd text
JOBS_WORKER_CMD_RECEIVED=JOBS_WORKER_CMD_RECEIVED Command received by {0}:\n{1}
    # 0 = worker name, 1 = command enum, 2 = intended worker id
JOBS_WORKER_IGNORE_CMD=JOBS_WORKER_IGNORE_CMD Worker {0} ignoring {1} command intended for worker {2}.
    # 0 = worker name, 1 = job uuid, 2 = tenant id
JOBS_WORKER_JOB_UPDATE_ERROR=JOBS_WORKER_JOB_UPDATE_ERROR Worker {0} unable to update job {1}. Possible zombie job in tenant {2}.
    # 0 = worker name, 1 = job uuid, 2 = tenant id
JOBS_WORKER_ZOMBIE_ERROR=JOBS_WORKER_ZOMBIE_ERROR Job termination failed, zombie job {1} created by {0} in tenant {2}.

    # 0 = thread name, 1 = thread id, 2 = job worker name, 3 = queue name
JOBS_THREAD_STARTING=JOBS_THREAD_STARTING Thread {0}:{1} in JobWorker {2} starting to read queue {3}.
    # 0 = thread name, 1 = thread id, 2 = job worker name, 3 = queue name
JOBS_THREAD_STOPPING=JOBS_THREAD_STOPPING Thread {0}:{1} in JobWorker {2} has stopped reading queue {3}.
    # 0 = thread name, 1 = thread id, 2 = job worker name, 3 = queue name
JOBS_THREAD_INTERRUPTED=JOBS_THREAD_INTERRUPTED Interrupted thread {0}:{1} in JobWorker {2} has stopped reading queue {3}.
    # 0 = thread name, 1 = thread id, 2 = job worker name, 3 = queue name
JOBS_THREAD_CONSUMER_INTERRUPTED=JOBS_THREAD_CONSUMER_INTERRUPTED Interrupted consumer thread {0}:{1} in JobWorker {2} has stopped reading queue {3}.
    # 0 = thread name, 1 = thread id, 2 = job worker name, 3 = queue name, 4 = error message
JOBS_THREAD_CONSUMER_START_ERROR=JOBS_THREAD_CONSUMER_START_ERROR Unable to start consumer for thread {0}:{1} in JobWorker {2} on queue {3}: {4}

    # 0 = reader name, 1 = topic name, 2 = binding key
JOBS_READER_STARTED=JOBS_READER_STARTED {0} is reading queue/topic "{1}" using binding key "{2}".
    # 0 = reader name, 1 = topic name, 2 = binding key
JOBS_READER_STOPPED=JOBS_READER_STOPPED {0} stopped reading queue/topic "{1}" using binding key "{2}".
    # 0 = event type, 1 = topic name
JOBS_EVENT_POST_ERROR=JOBS_EVENT_POST_ERROR Unable to post event of type {0} to topic "{1}".

    # 0 = job uuid, 1 = system name
JOBS_SYSTEM_NOT_AVAILABLE=JOBS_SYSTEM_NOT_AVAILABLE Job {0} detected that system {1} is unavailable.
    # 0 = job uuid, 1 = system name
JOBS_SYSTEM_NOT_UP=JOBS_SYSTEM_NOT_UP Job {0} detected that system {1} is currently not up. The job will block until the system becomes active.
    # 0 = job uuid, 1 = app name
JOBS_APP_NOT_AVAILABLE=JOBS_APP_NOT_AVAILABLE Job {0} detected that application {1} is unavailable.

    # 0 = tenant id, 1 = exec system id,  2 = job owner, 3 = remote queue, 4 = error message 
JOBS_COUNT_ACTIVE_SYSTEM_JOBS=JOBS_COUNT_ACTIVE_SYSTEM_JOBS Unable to count the number of active job on system {1} in tenant {0} with owner = {2} and remote queue = {3}: {4}
    # 0 = job uuid, 1 = tenant id, 2 = system id, 3 = maximum number of system db.migration.db.migration.jobs
JOBS_QUOTA_MAX_JOBS=JOBS_QUOTA_MAX_JOBS The job quota of {3} on system {2} has been filled. Job {0} in tenant {1} will be blocked until resources become available.
    # 0 = job uuid, 1 = tenant id, 2 = system id, 3 = maximum number of system db.migration.db.migration.jobs, 4 = job owner
JOBS_QUOTA_MAX_USER_JOBS=JOBS_QUOTA_MAX_USER_JOBS The job quota of {3} on system {2} has been filled for user {4}. Job {0} in tenant {1} will be blocked until resources become available.
    # 0 = job uuid, 1 = tenant id, 2 = system id, 3 = maximum number of system db.migration.db.migration.jobs, 4 = remote queue
JOBS_QUOTA_MAX_QUEUE_JOBS=JOBS_QUOTA_MAX_QUEUE_JOBS The job quota of {3} on system {2} has been filled for remote queue {4}. Job {0} in tenant {1} will be blocked until resources become available.
    # 0 = job uuid, 1 = tenant id, 2 = system id, 3 = maximum number of system db.migration.db.migration.jobs, 4 = job owner, 5 = remote queue
JOBS_QUOTA_MAX_USER_QUEUE_JOBS=JOBS_QUOTA_MAX_USER_QUEUE_JOBS The job quota of {3} on system {2} has been filled for user {4} on remote queue {5}. Job {0} in tenant {1} will be blocked until resources become available.

    # 0 = job uuid, 1 = tenant id, 2 = system id, 3 = current system db.migration.db.migration.jobs
JOBS_CURRENT_SYSTEM_JOBS=JOBS_CURRENT_SYSTEM_JOBS There are currently {3} jobs assigned to system {2}. Job {0} in tenant {1} can proceed.
    # 0 = job uuid, 1 = tenant id, 2 = system id, 3 = current system db.migration.db.migration.jobs for user, 4 = job owner
JOBS_CURRENT_SYSTEM_USER_JOBS=JOBS_CURRENT_SYSTEM_USER_JOBS There are currently {3} jobs assigned to system {2} for user {4}. Job {0} in tenant {1} can proceed.
    # 0 = job uuid, 1 = tenant id, 2 = system id, 3 = current system db.migration.db.migration.jobs for user, 4 = remote queue
JOBS_CURRENT_SYSTEM_QUEUE_JOBS=JOBS_CURRENT_SYSTEM_QUEUE_JOBS There are currently {3} jobs assigned to system {2} for remote queue {4}. Job {0} in tenant {1} can proceed.
    # 0 = job uuid, 1 = tenant id, 2 = system id, 3 = current system db.migration.db.migration.jobs for user on queue, 4 = job owner, 5 = remote queue
JOBS_CURRENT_SYSTEM_USER_QUEUE_JOBS=JOBS_CURRENT_SYSTEM_USER_QUEUE_JOBS There are currently {3} jobs assigned to system {2} for user {4} on remote queue {5}. Job {0} in tenant {1} can proceed.


# ---------------- Job Status Messages
JOBS_STATUS_FAILED_IMPROPER_RECOVERY=JOBS_STATUS_FAILED_IMPROPER_RECOVERY Failing job due to missing recovery information.
JOBS_STATUS_FAILED_UNKNOWN_CAUSE=JOBS_STATUS_FAILED_UNKNOWN_CAUSE Job failed due to unknown cause.
    # 0 = job uuid, 1 = new status
JOBS_STATUS_CHANGE_ERROR=JOBS_STATUS_CHANGE_ERROR Unable to change the status of job {0} to {1}. 
    # 0 = job uuid, 1 = new status, 2 = asynchronous command name
JOBS_STATUS_CHANGE_ON_CMD_ERROR=JOBS_STATUS_CHANGE_ON_CMD_ERROR Unable to change the status of job {0} to {1} during {2} command processing.  The command will be ignored. 
    # 0 = job uuid, 1 = current status, 2 = new status 
JOBS_STATUS_UPDATE=JOBS_STATUS_UPDATE Transitioning job {0} from status {1} to {2}.

# Informational messages that are written to the job record.  These messages
# are not written to the log, so they don't require a lot of context; the job
# record provides the context.
    # 0 = current status, 1 = new status, 2 = phase name
JOBS_STATUS_CHANGE=Transitioning from status {0} to {1} in phase {2}.
    # 0 = job uuid, 1 = user name, 2 = tenant id, 3 = error message
JOBS_NOTIFICATION_ERROR=JOBS_NOTIFICATION_ERROR Job {0} unable to process notifications for user {1} in tenant {2}: {3}
    # 0 = event name, 1 = event uuid, 2 = event creator, 3 = job uuid, 4 = error message
JOBS_CREATE_JOB_EVENT=JOBS_CREATE_JOB_EVENT Unable to save {0} event ({1}) created by {2} for job {3}: {4} 
 
# ---------------- Job Recovery Messages
    # 0 = error message
JOBS_RECOVERY_INPUT_ERROR=JOBS_RECOVERY_INPUT_ERROR Unable to create a recovery record due to bad input: {0}
    # 0 = tester type, 1 = job uuid, 2 = error message
JOBS_RECOVERY_CREATE_ERROR=JOBS_RECOVERY_CREATE_ERROR Unable to create a recovery record for tester type {0} and {1} is one of the jobs: {2}
    # 0 = job recovery id, 2 = tenant id, 3 = error message 
JOBS_RECOVERY_DELETE_ERROR=JOBS_RECOVERY_DELETE_ERROR Unable to delete job recovery record {0} in tenant {1}: {2}
    # 0 = job recovery id, 2 = tenant
JOBS_RECOVERY_DELETING_RECOVERY_RECORD=JOBS_RECOVERY_DELETING_RECOVERY_RECORD Deleting job recovery record {0} in tenant {1}.
    # 0 = tenant id, 1 = tester hash, 2 = error message
JOBS_RECOVERY_SELECT_ERROR=JOBS_RECOVERY_SELECT_ERROR Unable to retrieve a recovery record for tenant {0} with tester hash {1}: {2}
    # 0 = recovery record id, 1 = error message
JOBS_RECOVERY_UPDATE_ERROR=JOBS_RECOVERY_UPDATE_ERROR Unable to update recovery record {0}: {1}
    # 0 = tenant id, 1 = condition code, 2 = error message
JOBS_RECOVERY_INSERT_ERROR=JOBS_RECOVERY_INSERT_ERROR Unable to insert recovery record with condition {1} for tenant {0}: {2}
    # 0 = job uuid
JOBS_RECOVERY_NULL_RECOVERY_RECORD=JOBS_RECOVERY_NULL_RECOVERY_RECORD Null recovery record associated with blocked job {0}.
    # 0 = tenant id, 1 = condition code, 2 = tester hash
JOBS_RECOVERY_ID_ERROR=JOBS_RECOVERY_ID_ERROR Unable to retrieve ID for new recovery record with condition {1} for tenant {0} with hash {2}. 
    # 0 = tenant id, 1 = condition code, 2 = tester hash, 3 = recovery id
JOBS_BAD_RECOVERY_ID=JOBS_BAD_RECOVERY_ID Retrieved invalid recovery id {3} for new recovery record with condition {1} for tenant {0} with hash {2}. 
    # 0 = tenant id, 1 = condition code, 2 = tester hash, 3 = recovery id, 4 = new or existing recovery object
JOBS_BAD_RECOVERY_ID_ASSIGNMENT=JOBS_BAD_RECOVERY_ID_ASSIGNMENT Retrieved invalid recovery id {3} for {4} recovery record with condition {1} for tenant {0} with hash {2}. 
    # 0 = tenant id, 1 = condition code, 2 = tester hash, 3 = recovery id
JOBS_RECOVERY_ID_GENERATED=JOBS_RECOVERY_ID_GENERATED Generated recovery id {3} for new recovery record with condition {1} for tenant {0} with hash {2}. 
    # 0 = thread name, 1 = thread id, 2 = recovery process name, 3 = tenant id
JOBS_RECOVERY_THREAD_INTERRUPTED=JOBS_RECOVERY_THREAD_INTERRUPTED Interrupted thread {0}:{1} in process {2} has stopped reading recovery messages for tenant {3}.
    # 0 = thread name
JOBS_RECOVERY_SIGNALING_SHUTDOWN=JOBS_RECOVERY_SIGNALING_SHUTDOWN Thread {0} signaling shutdown.
    # 0 = thread name, 1 = thread id, 2 = recovery name, 3 = queue name
JOBS_RECOVERY_THREAD_STARTING=JOBS_RECOVERY_THREAD_STARTING Recovery thread {0}:{1} recovery reader {2} starting to receive input from queue {3}.
    # 0 = thread name, 1 = thread id, 2 = recovery name, 3 = queue name
JOBS_RECOVERY_THREAD_STOPPING=JOBS_RECOVERY_THREAD_STOPPING Recovery thread {0}:{1} recovery reader {2} stopped receiving input from queue {3}.
    # 0 = thread name, 1 = thread id, 2 = recovery name, 3 = job uuid
JOBS_RECOVERY_CANCEL_THREAD_STARTING=JOBS_RECOVERY_CANCEL_THREAD_STARTING Recovery cancel thread {0}:{1} recovery reader {2} starting to service cancel request for job {3}.
    # 0 = thread name, 1 = thread id, 2 = recovery name, 3 = job uuid, 4 = cancel result
JOBS_RECOVERY_CANCEL_THREAD_STOPPING=JOBS_RECOVERY_CANCEL_THREAD_STOPPING Recovery cancel thread {0}:{1} recovery reader {2} stopped after servicing cancel request for job {3}. Job recovery was cancelled: {4}.
    # 0 = thread name, 1 = thread id, 2 = recovery name, 3 = job uuid, 4 = error message
JOBS_RECOVERY_CANCEL_THREAD_EXCEPTION=JOBS_RECOVERY_CANCEL_THREAD_EXCEPTION Recovery cancel thread {0}:{1} recovery reader {2} terminating cancel request for job {3}: {4}
    # 0 = recovery reader name, 1 = tenant id
JOBS_RECOVERY_INIT_MGR_ERROR=JOBS_RECOVERY_INIT_MGR_ERROR Unable to initialize recovery manager {0} for tenant {1}.
    # 0 = tenant id, 1 = error message
JOBS_RECOVERY_SELECT_ALL_ERROR=JOBS_RECOVERY_SELECT_ALL_ERROR Unable to retrieve recovery jobs for tenant {0}: {1}
    # 0 = error message
JOBS_RECOVERY_INTERNAL_QUEUE_ERROR=JOBS_RECOVERY_INTERNAL_QUEUE_ERROR Unable to queue recovery message to internal queue: {0}
    # 0 = table name, 1 = tenant id, 2 = error message
JOBS_RECOVERY_DB_QUERY_ERROR=JOBS_RECOVERY_DB_QUERY_ERROR Unable to query the job {0} table for tenant {1}: {2}
    # 0 = recovery id, 1 = tenant id, 2 = error message
JOBS_RECOVERY_SELECT_BLOCKED_ERROR=JOBS_RECOVERY_SELECT_BLOCKED_ERROR Unable to query the blocked jobs associated with recovery record id {0} in tenant {1}: {2}
    # 0 = job uuid, 1 = tenant id, 2 = job owner, 3 = error message
JOBS_PUT_IN_RECOVERY_ERROR=JOBS_PUT_IN_RECOVERY_ERROR Unable to put job {0} in tenant {1} for user {2} into recovery: {3}
    # 0 = job uuid, 1 = tenant id, 2 = recovery id, 3 = condition code
JOBS_RECOVERY_DUPLICATE_JOB=JOBS_RECOVERY_DUPLICATE_JOB Job {0} in tenant {1} already in recovery and cannot be added using recovery record {2} with condition code {3}.
    # 0 = recovery job id, 1 = tenant id, 2 = blocked job uuids, 3 = error message
JOBS_RECOVERY_INVALID_JOB=JOBS_RECOVERY_INVALID_JOB Recovery job {0} in tenant {1} aborted for blocked jobs [{2}]: {3}
    # 0 = recovery job id, 1 = tenant id, 2 = blocked job uuids, 3 = error message
JOBS_RECOVERY_DELETE_JOB=JOBS_RECOVERY_DELETE_JOB Unable to delete recovery job {0} in tenant {1} for blocked jobs [{2}]: {3}
    # 0 = recovery job id, 1 = job uuid, 2 = new status
JOBS_RECOVERY_RESUBMIT_JOB=JOBS_RECOVERY_RESUBMIT_JOB Using job recovery record {0} to resubmit blocked job {1} with new status {2}.
    # 0 = recovery job id, 1 = job uuid, 2 = error message
JOBS_RECOVERY_RESUBMIT_JOB_ERROR=JOBS_RECOVERY_RESUBMIT_JOB_ERROR Job recovery record {0} failed to resubmit job {1}: {2} 
    # 0 = job uuid, 1 = tenant id, 2 = job owner, 3 = system id
JOBS_RECOVER_STORAGE_SYSTEM=JOBS_RECOVER_STORAGE_SYSTEM Job {0} going into recovery mode in tenant {1} for user {2} due to inaccessible remote storage system "{3}". 
    # 0 = recovery job id, 1 = job uuid, 2 = error message
JOBS_RECOVERY_CANCEL_JOB_ERROR=JOBS_RECOVERY_CANCEL_JOB_ERROR Job recovery record {0} failed to cancel recovery for job {1}: {2}
    # 0 = job uuid
JOBS_RECOVERY_JOB_NOT_FOUND=JOBS_RECOVERY_JOB_NOT_FOUND Job {0} not in recovery.
    # 0 = job uuid, 1 = error message
JOBS_RECOVERY_DELETE_BLOCKED_JOB=JOBS_RECOVERY_DELETE_BLOCKED_JOB Unable to delete job {0} from blocked job table: {1}
    # 0 = job uuid
JOBS_RECOVERY_DELETING_BLOCKED_JOB=JOBS_RECOVERY_DELETING_BLOCKED_JOB Deleting blocked job {0} from blocked job table.
    # 0 = recovery job id, 1 = tenant id, 2 = blocking condition, 3 = policy name, 4 = tester name, 5 = number of attempts, 6 = expiry reason, 7 = aborted job uuids  
JOBS_RECOVERY_EXPIRED=JOBS_RECOVERY_EXPIRED Job recovery record {0} in tenant {1} expired because {6} while servicing condition {2} under policy {3} and tester {4}. The final number of attempts was {5}. These jobs will be aborted: [{7}].  
    # 0 = recovery job id, 1 = number of attempts, 2 = next attempt timestamp, 3 = error message
JOBS_RECOVERY_UPDATE_ATTEMPTS=JOBS_RECOVERY_UPDATE_ATTEMPTS Unable to update job recovery record {0} with number of attempts = {1} and next attempt time {2}: {3}
    # 0 = recovery job id, 1 = tenant id
JOBS_RECOVERY_INGORE_UPDATE_ERROR=JOBS_RECOVERY_INGORE_UPDATE_ERROR Ignoring update error in job recovery record {0} in tenant {1}. Continuing with recovery.
    # 0 = job uuid, 1 = job status
JOBS_RECOVERY_NOT_BLOCKED=JOBS_RECOVERY_NOT_BLOCKED Job {0} cannot be recovered because it is in {1} state.
    # 0 = recovery job id, 1 = parm name, 2 = parm value, 3 = error message
JOB_RECOVERY_BAD_POLICY_PARM=JOB_RECOVERY_BAD_POLICY_PARM Job recovery record {0} is configured with the an invalid {1} policy parameter value "{2}": {3}
    # 0 = tester type, 1 = recovery record id, 2 = tenant id
JOBS_RECOVERY_UNKNOWN_POLICYTYPE=JOBS_RECOVERY_UNKNOWN_POLICYTYPE Unknown policy type {0} specified in recovery record {1} in tenant {2}.
    # 0 = tester type, 1 = recovery record id, 2 = tenant id
JOBS_RECOVERY_UNKNOWN_TESTERTYPE=JOBS_RECOVERY_UNKNOWN_TESTERTYPE Unknown tester type {0} specified in recovery record {1} in tenant {2}.
    # 0 = recovery record id, 1 = tester type
JOBS_RECOVERY_INVALID_TESTER_TYPE=JOBS_RECOVERY_INVALID_TESTER_TYPE Job recovery record {0} specified invalid recovery tester type "{1}".
    # 0 = recovery record id, 1 = failing dao, 2 = error message
JOBS_RECOVER_DB_ACCESS=JOBS_RECOVER_DB_ACCESS Job recovery record {0} failed to execute an operation on {1}: {2}
    # 0 = recovery record id, 1 = tenant id, 2 = system id, 3 = user, 4 = remote queue, 5 = error message
JOBS_RECOVER_QUOTA_TEST_ERROR=JOBS_RECOVER_QUOTA_TEST_ERROR Job recovery record {0} quota testing failed for user {3} in tenant {1} for system {2} and remote queue {4}: {5}
    # 0 = number of db.migration.db.migration.jobs, 1 = recovery record id, 2 = tenant id
JOBS_RECOVERY_FAILING_ALL_BLOCKED_JOBS=JOBS_RECOVERY_FAILING_ALL_BLOCKED_JOBS Failing {0} blocked jobs in recovery record {1} in tenant {2}.
    # 0 = job uuid
JOBS_RECOVERY_FAILING_JOBS=JOBS_RECOVERY_FAILING_JOBS Failing blocked job {0}.
    # 0 = resubmit count, 1 = total blocked count, 2 = recovery record id, 3 = tenant id
JOBS_RECOVERY_RESUBMIT_COUNT=JOBS_RECOVERY_RESUBMIT_COUNT Resubmitting {0} jobs out of a total of {1} jobs blocked in recovery record {2} for tenant {3}.

    # 0 = recovery queue name, 1 = tenant id, 2 = error message
JOBS_READER_FATAL_DB_ERROR=JOBS_READER_FATAL_DB_ERROR The reader for queue "{0}" in tenant "{1}" is shutting down due to a database error: {2}
    # 0 = recovery queue name, 1 = tenant id, 2 = error message
JOBS_READER_FATAL_BROKER_ERROR=JOBS_READER_FATAL_DB_ERROR The reader for queue "{0}" in tenant "{1}" is shutting down due to a queue broker error: {2}
    # 0 = reader name, 1 = tenant id, 2 = error message
JOBS_RECOVERY_RUNTIME_ERROR=JOBS_RECOVERY_RUNTIME_ERROR Shutting down recovery reader {0} in tenant {1}: {2} 

# ---------------- Job Blocked Messages
    # 0 = job uuid, 1 = recovery id, 2 = error message
JOBS_CREATE_BLOCKED_ERROR=JOBS_CREATE_BLOCKED_ERROR Unable to associate blocked record for job {0} with recovery id {1}: {2} 
    # 0 = job uuid, 1 = error message
JOBS_GET_BLOCKED_ERROR=JOBS_GET_BLOCKED_ERROR Unable to retrieve blocked job {0}: {1}
    # 0 = job uuid, 1 = new recoveryId, 2 = new created, 3 = new status, 4= new msg, 5 = old recoveryId, 6 = old created, 7 = old status, 8 = old msg, 9 = error msg
JOBS_DUPLICATE_BLOCKED_ERROR=JOBS_DUPLICATE_BLOCKED_ERROR Attempt to insert duplicate blocked record for job {0} \
\n* new record: recoveryId={1}, created={2}, success={3}, msg={4} \
\n* old record: recoveryId={5}, created={6}, success={7}, msg={8} \n* {9}
    # 0 = job uuid, 1 = new recoveryId, 2 = new created, 3 = new status, 4= new msg, 5 = error msg
JOBS_DUPLICATE_BLOCKED_WARN=JOBS_DUPLICATE_BLOCKED_WARN Attempt to insert duplicate blocked record for job {0} \
\n* attempted record: recoveryId={1}, created={2}, success={3}, msg={4}\n* {5}

# ---------------- Job State Machine Messages
    # 0 = error message 
JOBS_STATE_RETRY_ERROR=JOBS_STATE_RETRY_ERROR An attempt to retry an FSM transition occurred: {0}
    # 0 = state name, 1 = event
JOBS_STATE_ILLEGAL_TRANSITION=JOBS_STATE_ILLEGAL_TRANSITION No transition exists from state {0} on event {1}.
    # 0 = job uuid, 1 = current state, 2 = attempted state
JOBS_STATE_NO_TRANSITION=JOBS_STATE_NO_TRANSITION Job {0} attempted an illegal state transition from {1} to {2}.
    # 0 method name, 1 = unknow state
JOBS_UNKNOWN_STATE=JOBS_UNKNOWN_STATE {0} encountered unknown state {1}.
                        
# ---------------- Job Systems Messages
    # 0 = appid, 1 = tenant id, 2 = job uuid 3 = error message 
JOBS_APP_RETRIEVAL_ERROR=JOBS_APP_RETRIEVAL_ERROR Unable to retrieve application {0} for job {2} in tenant {1}: {3}
    # 0 = app uuid, 1 = job uuid, 2 = administrator name, 3 = administrator email, 4 = error message
JOBS_APP_REPORTING_ERROR=JOBS_APP_REPORTING_ERROR Unable to send email to {2} at {3} about application {0} problem when processing job {1}: {4}
    # 0 = appid, 1 = tenant id
JOBS_APP_NOT_FOUND=JOBS_APP_NOT_FOUND Application {0} not found for tenant {1}.
    # 0 = appid, 1 = job uuid, 2 = expected path
JOBS_DEPLOY_PATH_NOT_FOUND=JOBS_DEPLOY_PATH_NOT_FOUND Deployment path for application {0} in job {1} not found in expected location: {2}.
    # 0 = exec system id, 1 = tenant id, 2 = job uuid, 3 = error message 
JOBS_EXEC_SYSTEM_RETRIEVAL_ERROR=JOBS_EXEC_SYSTEM_RETRIEVAL_ERROR Unable to retrieve execution system {0} for tenant {1} while processing job {2}: {3}
    # 0 = exec system id, 1 = tenant id, 2 = job uuid, 3 = error message 
JOBS_EXEC_SYSTEM_RETRIEVAL_FOR_JOB_ERROR=JOBS_EXEC_SYSTEM_RETRIEVAL_FOR_JOB_ERROR Unable to retrieve execution system {0} for tenant {1} in job {2}: {3}
    # 0 = exec system id, 1 = tenant id
JOBS_EXEC_SYSTEM_NOT_FOUND=JOBS_EXEC_SYSTEM_NOT_FOUND Execution system {0} not found for tenant {1}.
    # 0 = exec system id, 1 = tenant id, 2 = job uuid, 3 = error message 
JOBS_STORAGE_SYSTEM_RETRIEVAL_ERROR=JOBS_STORAGE_SYSTEM_RETRIEVAL_ERROR Unable to retrieve storage system {0} for tenant {1} while processing job {2}: {3}
    # 0 = exec system id, 1 = tenant id, 2 = job uuid, 3 = error message 
JOBS_STORAGE_SYSTEM_RETRIEVAL_FOR_JOB_ERROR=JOBS_STORAGE_SYSTEM_RETRIEVAL_FOR_JOB_ERROR Unable to retrieve storage system {0} for tenant {1} in job {2}: {3}
    # 0 = tenant id, 1 = error message 
JOBS_TENANT_RETRIEVAL_ERROR=JOBS_TENANT_RETRIEVAL_ERROR Unable to retrieve tenant {0}: {1}
    # 0 = tenant id
JOBS_TENANT_NOT_FOUND=JOBS_TENANT_NOT_FOUND Tenant {0} not found.
    # 0 = exec system db id, 1 = sql error msg
JOBS_QUEUE_NAME_RETRIEVAL_ERROR=JOBS_QUEUE_NAME_RETRIEVAL_ERROR Unable to retrieve batch queue names for execution system {0}: {1}
    # 0 = batchqueue name, 1 = execution system name, 2 = job uuid
JOBS_UNKNOWN_REMOTE_QUEUE=JOBS_UNKNOWN_REMOTE_QUEUE Queue {0} not found on execution system {1} for job {2}.
    # 0 = job uuid, 1 = app name, 2 = execution system name
JOBS_NO_REMOTE_QUEUE=JOBS_NO_REMOTE_QUEUE No remote queue selected for job {0} running application {1} on execution system {2}.
    # 0 = system id, 1 = job uuid
JOBS_ARCHIVE_SYSTEM_RETRIEVAL=JOBS_ARCHIVE_SYSTEM_RETRIEVAL Unable to retrieve archive system ({0}) for job {1}.
    # 0 = job uuid, 1 = job archive system id, 2 = context archive system id 
JOBS_INCONSISTENT_ARCHIVE_SYSTEM_INFO=JOBS_INCONSISTENT_ARCHIVE_SYSTEM_INFO Job {0} has archive system {1} assigned but the retrieved system is {2}.
    # 0 = job uuid, 1 = job archive system id
JOBS_NO_ARCHIVE_SYSTEM=JOBS_NO_ARCHIVE_SYSTEM No default archive system could be retrieved for job {0} with assigned archive system id {1}.
    # 0 = job uuid, 1 = tenant id
JOBS_ARCHIVE_SYSTEM_ASSIGNMENT=JOBS_ARCHIVE_SYSTEM_ASSIGNMENT Unable to assign archive system for job {0} in tenant {1}.
    # 0 = job uuid, 1 = archive path, 2 = archive system, 3 = error message
JOBS_ARCHIVE_PATH_ERROR=JOBS_ARCHIVE_PATH_ERROR Unable to access or create archive path "{1}" on system {2} for job {0}: {3}
    # 0 = system name, 1 = remote host, 2 = logical file id, 3 = user name, 4 = job uuid, 5 = error message
JOBS_PEM_MGR_CREATE=JOBS_PEM_MGR_CREATE Unable to create permission manager for system {0} on host {1} for user {3} while processing logical file {2} for job {4}: {5}
    # 0 = remote path, 1 = logical file id, 2 = host, 3 = job uuid, 4 = user name, 5 = error message
JOBS_REMOTE_PATH_NOT_FOUND=JOBS_REMOTE_PATH_NOT_FOUND Remote path "{0}" associated with logical file {1} not found on host {2} while processing job {3} for user {4}: {5}
    # 0 = job uuid, 1 = operation name, 2 = path, 3 = user name, 4 = tenant id, 5 = error message
JOBS_REMOTE_PATH_ERROR=JOBS_REMOTE_PATH_ERROR Job {0} unable to perform "{1}" operation on remote path "{2}" for user {3} in tenant {4}: {5}
    # 0 = source file, 1 = source host, 2 = dest file, 3 = dest host, 4 = job uuid, 5 = error message 
JOBS_TRANSFER_INTERRUPTED=JOBS_TRANSFER_INTERRUPTED Transfer of "{0}" from host {1} to "{2}" from host {3} for job {4} was interrupted: {5}
    # 0 = source file, 1 = source host, 2 = dest file, 3 = dest host, 4 = job uuid, 5 = error message
JOBS_REMOTE_COPY_ERROR=JOBS_REMOTE_COPY_ERROR I/O error on copy of "{0}" from host {1} to "{2}" from host {3} for job {4}: {5}
    # 0 = file path, 1 = job uuid, 2 = tenant id
JOBS_FILE_NOT_FOUND=JOBS_FILE_NOT_FOUND File {0} not found while processing job {1} in tenant {2}.
     # 0 = file path, 1 = job uuid, 2 = tenant id, 3 = error message
JOBS_FILE_ACCESS_ERROR=JOBS_FILE_ACCESS_ERROR An error occurred accessing file {0} while processing job {1} in tenant {2}: {3}
    # 0 = job uuid, 1 = inputs | parameters, 2 = error message
JOBS_RUNTIME_JSON_PARSE_ERROR=JOBS_RUNTIME_JSON_PARSE_ERROR Job {0} experienced a JSON parse exception when parsing {1}: {2}
    # 0 = job uuid, 1 = input key, 2 = error message
JOBS_RUNTIME_INPUT_SUBSTITUTION_ERROR=JOBS_RUNTIME_INPUT_SUBSTITUTION_ERROR Job {0} could not substitute input value {1} into input string: {2}
    # 0 = job uuid, 1 = error message
JOBS_RUNTIME_MACRO_RESOLUTION_ERROR=JOBS_RUNTIME_MACRO_RESOLUTION_ERROR Job {0} could not resolve the execution script macros: {1}
    # 0 = job uuid, 1 = exec system id, 2 = exec system type, 3 = error message
JOBS_GET_LAUNCHER_ERROR=JOBS_GET_LAUNCHER_ERROR Unable to get a launcher for job {0} with execution system {1} of type {2}: {3}
    # 0 = job uuid, 1 = exec system id, 2 = job owner, 3 = tenant id, 4 = error message
JOBS_LAUNCH_FAILURE=JOBS_LAUNCH_FAILURE Job {0} failed to launch on system {1} for user {2} in tenant {3}: {4}
    # 0 = job uuid, 2 = tenant id, 3 = system id
JOBS_GET_END_TIME=JOBS_GET_END_TIME Fetching completion time for job {0} in tenant {1} running on system {2}.
    # 0 = execution type, 1 = job uuid, 2 = exec system
JOBS_UNSUPPORTED_EXEC_TYPE=JOBS_UNSUPPORTED_EXEC_TYPE Unsupported execution type {0} was encountered while processing job {1} on system {2}.
    # 0 = system id, 1 = tenant id, 2 = job owner, 3 = job uuid
JOBS_USER_DEFAULT_ARCHIVE_SYSTEM_UNAVAILABLE=JOBS_USER_DEFAULT_ARCHIVE_SYSTEM_UNAVAILABLE User {2}'s default archive system {0} in tenant {1} not available for job {3}. Another system will be chosen.   

    # 0 = job uuid, 1 = exec system id, 2 = remote queue, 3 = max nodes, 4 = requested nodes
JOBS_SYSQ_SKIP_MAX_NODES=JOBS_SYSQ_SKIP_MAX_NODES Removing candidate queue {2} on system {1} from job {0}: Maximum nodes ({3}) is less than requested nodes ({4}). 
    # 0 = job uuid, 1 = exec system id, 2 = remote queue, 3 = max procs, 4 = requested procs
JOBS_SYSQ_SKIP_MAX_PROCS=JOBS_SYSQ_SKIP_MAX_PROCS Removing candidate queue {2} on system {1} from job {0}: Maximum processors ({3}) is less than requested processors ({4}). 
    # 0 = job uuid, 1 = exec system id, 2 = remote queue, 3 = max memory per node, 4 = requested memory per node
JOBS_SYSQ_SKIP_MAX_MEM=JOBS_SYSQ_SKIP_MAX_MEM Removing candidate queue {2} on system {1} from job {0}: Maximum memory per node ({3}GB) is less than requested memory ({4}GB).
    # 0 = job uuid, 1 = exec system id, 2 = remote queue, 3 = max runtime hours, 4 = requested runtime hours
JOBS_SYSQ_SKIP_MAX_HOURS=JOBS_SYSQ_SKIP_MAX_HOURS Removing candidate queue {2} on system {1} from job {0}: Maximum runtime hours ({3}) is less than requested hours ({4}).

    # 0 = job uuid, 1 = remote host, 2 = remote port, 3 = monitor command 
JOBS_MONITOR_COMMAND=JOBS_MONITOR_COMMAND Monitoring job {0} on host {1}:{2} by issuing command: {3}
    # 0 = job uuid, 1 = remote host, 2 = remote port, 3 = monitor command, 4 = error message
JOBS_MONITOR_COMMAND_ERROR=JOBS_MONITOR_COMMAND_ERROR Monitoring command failure for job {0} on host {1}:{2} ({3}): {4}
    # 0 = job uuid
JOBS_MONITOR_NO_REMOTE_JOB_ID=JOBS_MONITOR_NO_REMOTE_JOB_ID Unable to monitor job {0} because it has no remote job id.
    # 0 = job uuid, 1 = remote host, 2 = remote port, 3 = monitor command
JOBS_MONITOR_EMPTY_RESPONSE=JOBS_MONITOR_EMPTY_RESPONSE An empty response was returned when monitoring job {0} on host {1}:{2} using command: {3}
    # 0 = job uuid, 1 = remote or failed, 2 = error message
JOBS_MONITOR_COUNTER_ERROR=JOBS_MONITOR_COUNTER_ERROR Job {0} update to {1}_status_check failed: {2}
    # 0 = job uuid, 1 = exec system id, 2 = execution type, 3 = scheduler type
JOBS_MONITOR_NO_RESPONSE_PARSER=JOBS_MONITOR_NO_RESPONSE_PARSER Unable to determine monitor response parser for job {0} running on system {1} of execution type {2} and scheduler type {3}.
JOBS_MONITOR_NO_RESPONSE=JOBS_MONITOR_NO_RESPONSE Received no response to a job monitoring query.
    # 0 = parser class name, 1 = job uuid, 2 = remote job id
JOBS_MONITOR_NO_STATUS=JOBS_MONITOR_NO_STATUS {0} returned no status for remote job {2} (job {1}).
    # 0 = query response
JOBS_MONITOR_INVALID_RESPONSE=JOBS_MONITOR_INVALID_RESPONSE Invalid response to a job monitoring query: {0}  
    # 0 = job uuid, 1 = invalid pid
JOBS_MONITOR_INVALID_PID_RESPONSE=JOBS_MONITOR_INVALID_PID_RESPONSE Expected a numeric PID in response to job {0} monitoring query, not: {1}   
    # 0 = parser class name, 1 = remote job id, 2 = status, 3 = job uuid
JOBS_MONITOR_UNKNOWN_RESPONSE=JOBS_MONITOR_UNKNOWN_RESPONSE Unknown status response from {0} for job {3} (remote job {1}): {2}    
    # 0 = parser class name, 1 = remote job id, 2 = status line 
JOBS_MONITOR_UNKNOWN_FORMAT=JOBS_MONITOR_UNKNOWN_FORMAT Unknown format of status response from {0} for remote job {1}: {2}    
    # 0 = parser class name, 1 = remote job id, 2 = unrecoverable status, 3 = exit code, 4 = job uuid
JOBS_MONITOR_UNRECOVERABLE_RESPONSE=JOBS_MONITOR_UNRECOVERABLE_RESPONSE Unrecoverable status response from {0} for job {4} (remote job {1}) rc={3}, monitoring query: {2}
    # 0 = parser class name, 1 = remote job id, 2 = unrecoverable status, 3 = exit code, 4 = job uuid
JOBS_MONITOR_FAILURE_RESPONSE=JOBS_MONITOR_FAILURE_RESPONSE Failure status response from {0} for job {4} (remote job {1}) rc={3}, monitoring query: {2}
    # 0 = parser class name, 1 = job uuid, 2 = error message
JOBS_MONITOR_ABORTING=JOBS_MONITOR_ABORTING Aborting monitor {0} for job {1}: {2}
    # 0 = parser class name, 1 = job uuid, 2 = error message
JOBS_MONITOR_ABORTING_2=JOBS_MONITOR_ABORTING_2 Aborting secondary monitor {0} for job {1}: {2}
    # 0 = parser class name, 1 = job uuid, 2 = policy reason code, 3 = job outcome
JOBS_MONITOR_EARLY_TERMINATION=JOBS_MONITOR_EARLY_TERMINATION {0} terminated monitoring early for job {1} for policy reason {2}, job outcome is {3}.
    # 0 = parser class name, 1 = job uuid, 2 = remote status, 3 = job outcome  
JOBS_MONITOR_FINISHED=JOBS_MONITOR_FINISHED {0} finished monitoring job {1} with remote status equal to {2}, job outcome is {3}.  
    # 0 = parser class name, 1 = job uuid, 2 = error message
JOBS_MONITOR_DB_UPDATE=JOBS_MONITOR_DB_UPDATE {0} is unable to increment monitor counter for job {1}: {2} 
    # 0 = job uuid, 1 = policy name, 2 = error message 
JOBS_MONITOR_POLICY_CREATE=JOBS_MONITOR_POLICY_CREATE Unable to create monitoring policy {1} for job {0}: {2} 
    # 0 = job uuid, 1 = error message 
JOBS_MONITOR_CREATE=JOBS_MONITOR_CREATE Unable to create monitor for job {0}: {1} 
    # 0 = job uuid, 1 = monitor class, 2 = error message
JOBS_MONITOR_EXECUTE=JOBS_MONITOR_EXECUTE Error executing monitor {1} for job {0}: {1}
    # 0 = job uuid, 1 = monitor class
JOBS_MONITOR_INTERRUPTED=JOBS_MONITOR_INTERRUPTED Sleep interrupted in class {1} while monitoring job {0}.
    # 0 = parser class name, 1 = job uuid, 2 = remote job id, 3 = result status, 4 = monitoring output
JOBS_MONITOR_MESSAGE_HEURISTIC=JOBS_MONITOR_MESSAGE_HEURISTIC {0} guessing status {3} for remote job {2} (job {1}) after receiving monitoring output: {4}

    # 0 = job uuid, 1 = tenant id, 2 = job owner
JOBS_SKIP_ARCHIVING=JOBS_SKIP_ARCHIVING Archiving not configured for job {0} in tenant {1} for user {2}.  
    # 0 = job uuid, 1 = tenant id, 2 = job owner
JOBS_DISABLE_ARCHIVING=JOBS_DISABLE_ARCHIVING Archiving disabled for job {0} in tenant {1} for user {2} due to prior exception.
    # 0 = job uuid, 1 = tenant id, 2 = job owner, 3 = remote outcome
JOBS_ARCHIVING_BAD_REMOTE_OUTCOME=JOBS_ARCHIVING_BAD_REMOTE_OUTCOME Archiving cancelled for job {0} in tenant {1} for user {2} due to remote outcome: {3} 
    # 0 = job uuid, 1 = tenant id, 2 = job owner, 3 = remote outcome
JOBS_BAD_REMOTE_OUTCOME=JOBS_BAD_REMOTE_OUTCOME Failing job {0} in tenant {1} for user {2} after archiving due to remote outcome: {3}
    # 0 = job uuid, 1 = tenant id, 2 = job owner, 3 = error message
JOBS_SKIP_ARCHIVING_ERROR=JOBS_SKIP_ARCHIVING_ERROR Unable to determine if archiving should be skipped for job {0} in tenant {1} for user {2}: {3}  
    # 0 = job uuid, 1 = system id, 2 = archive file name
JOBS_ARCHIVE_ALL_OUTPUT=JOBS_ARCHIVE_ALL_OUTPUT No excluded filenames found for job {0} on system {1} in {2}. The entire job output directory will be archived.
    # 0 = job uuid, 1 = source host, 2 = destination host, 3 = user, 4 = error message
JOBS_ARCHIVE_COPY_ERROR=JOBS_ARCHIVE_COPY_ERROR Unable to archive job {0} due to a failure copying files from {1} to {2} for user {3}: {4} 
    # 0 = job uuid, 1 = exec system host, 2 = user, 3 = tenant id, 4 = workpath, 5 = error message
JOBS_ARCHIVE_CLEANUP=JOBS_ARCHIVE_CLEANUP Job {0} unable to clean up work directory "{4}" on host {1} for user {2} in tenant {3}: {5} 
    # 0 = job uuid, 1 = exec system host, 2 = user, 3 = tenant id, 4 = workpath, 5 = error message
JOBS_ARCHIVE_PEMS_ERROR=JOBS_ARCHIVE_PEMS_ERROR Job {0} unable change permissions in "{4}" on host {1} for user {2} in tenant {3}: {5} 
    # 0 = job uuid, 1 = user, 2 = tenant id, 3 = source url, 4 = destination url, 5 = root task uuid, 6 = error message
JOB_ARCHIVE_FAILURE=JOB_ARCHIVE_FAILURE Job {0} failed to archive its results for user {1} in tenant {2} from source "{3}" to destination "{4}" using root task {5}: {6}

    # 0 = job uuid, 1 = tenant id, 2 = system id, 3 = workpath, 4 = error message
JOBS_WORKPATH_RESOLUTION_ERROR=JOBS_WORKPATH_RESOLUTION_ERROR Unable to resolve the workpath ({3})for job {0} in tenant {1} on system {2}: {4} 
    # 0 = job uuid, 1 = workpath, 2 = host, 3 = user, 4 = error message
JOBS_WORKPATH_NOT_FOUND=JOBS_WORKPATH_NOT_FOUND Job {0} unable to find workpath "{1}" on host {2} using username {3}.
    # 0 = job uuid, 1 = workpath, 2 = host, 3 = user, 4 = error message
JOBS_WORKPATH_ERROR=JOBS_WORKPATH_ERROR Job {0} unable to access workpath "{1}" on host {2} using username {3}: {4}

    # 0 = job uuid, 1 = tenant id, 2 = system id, 3 = resolved path, 4 = error message
JOBS_GET_STARTUP_SCRIPT_ERROR=JOBS_GET_STARTUP_SCRIPT_ERROR Unable to get startup script for job {0} in tenant {1} on system {2} for path {3}: {4}
    # 0 = job uuid, 1 = tenant id, 2 = system id, 3 = resolved path, 4 = remote command, 5 = error message
JOBS_RUN_COMMAND_ERROR=JOBS_RUN_COMMAND_ERROR Failed to run command "{4}" for job {0} in tenant {1} on system {2} on path {3}: {5}
    # 0 = job uuid, 1 = tenant id, 2 = system id, 3 = resolved path, 4 = remote command, 5 = error message
JOBS_GET_REMOTE_ID_ERROR=JOBS_GET_REMOTE_ID_ERROR Failed to get remote job ID after issuing command "{4}" for job {0} in tenant {1} on system {2} on path {3}: {5}
    # 0 = job id parser name, 1 = remote command output
JOBS_JOBID_PARSER_ERROR=JOBS_JOBID_PARSER_ERROR {0} is unable to extract remote scheduler job id from remote command output: {1}
    # 0 = job id parser name, 1 = remote command output
JOBS_TORQUE_ERROR=JOBS_TORQUE_ERROR {0} is unable to extract remote Torque scheduler job id from remote command output: {1}
    # 0 = job id parser name, 1 = remote command output
JOBS_LSF_ERROR=JOBS_LSF_ERROR {0} is unable to extract remote LSF scheduler job id from remote command output: {1}
    # 0 = job id parser name, 1 = remote command output
JOBS_MOAB_ERROR=JOBS_MOAB_ERROR {0} is unable to extract remote MOAB scheduler job id from remote command output: {1}
    # 0 = job id parser name, 1 = remote command output
JOBS_PBS_ERROR=JOBS_PBS_ERROR {0} is unable to extract remote PBS scheduler job id from remote command output: {1}
    # 0 = job id parser name, 1 = remote command output
JOBS_SGE_ERROR=JOBS_SGE_ERROR {0} is unable to extract remote SGE scheduler job id from remote command output: {1}

    # 0 = job uuid, 1 = cmd message type, 2 = cmd message sender id, 3 = cmd message correlation id
JOBS_CMD_MSG_ERROR=JOBS_CMD_MSG_ERROR Job {0} received an erroneous {1} command from {2} with correlation id {3}. 
    # 0 = job uuid, 1 = cmd message type, 2 = cmd message sender id, 3 = cmd message correlation id
JOBS_CMD_MSG_RECEIVED=JOBS_CMD_MSG_RECEIVED Job {0} received a {1} command from {2} with correlation id {3}.  
    # 0 = job uuid, 1 = error message
JOBS_CMD_KILL_ERROR=JOBS_CMD_KILL_ERROR Failed to send remote kill command for job {0}: {1}  

# ---------------- Jobs Phase Processing Messages
     # 0 = job uuid, 1 = user name, 2 = tenant id, 3 = app name, 4 = error message
JOBS_STAGING_PHASE_ERROR=JOBS_STAGING_PHASE_ERROR Job {0} for user {1} in tenant {2} encountered a problem running {3} in the staging phase: {4}
     # 0 = job uuid, 1 = user name, 2 = tenant id, 3 = app name, 4 = error message
JOBS_SUBMITTING_PHASE_ERROR=JOBS_SUBMITTING_PHASE_ERROR Job {0} for user {1} in tenant {2} encountered a problem running {3} in the submitting phase: {4}
     # 0 = job uuid, 1 = user name, 2 = tenant id, 3 = app name, 4 = error message
JOBS_MONITORING_PHASE_ERROR=JOBS_MONITORING_PHASE_ERROR Job {0} for user {1} in tenant {2} encountered a problem running {3} in the monitoring phase: {4}
     # 0 = job uuid, 1 = user name, 2 = tenant id, 3 = app name, 4 = error message
JOBS_ARCHIVING_PHASE_ERROR=JOBS_ARCHIVING_PHASE_ERROR Job {0} for user {1} in tenant {2} encountered a problem running {3} in the archiving phase: {4}
    
    # 0 = phase name, 1 = job uuid, 2 = job name, 3 = user name, 4 = tenant id
JOBS_PHASE_STARTING=JOBS_PHASE_STARTING Starting {0} phase for job {2} ({1}) for user {3} in tenant {4}. 
    # 0 = phase name, 1 = job uuid, 2 = job name, 3 = user name, 4 = tenant id
JOBS_PHASE_ENDING=JOBS_PHASE_ENDING Ending {0} phase for job {2} ({1}) for user {3} in tenant {4}. 

    # 0 = Input key, 1 = input file name, 2 = job uuid, 3 = user, 4 = tenant id, 5 = error message
JOBS_STA_INPUT_PROCESSING_ERROR=JOBS_STA_INPUT_PROCESSING_ERROR Job {2} for user {3} in tenant {4} was unable to process input {0} ({1}): {5} 
    # 0 = job uuid, 1 = absolute path
JOBS_TEMP_DIR_NOT_FOUND=JOBS_TEMP_DIR_NOT_FOUND Job {0} unable to stage files to missing or inaccessible directory: {1}
    # 0 = job uuid, 1 = absolute path
JOBS_TEMP_DIR_NOT_DIR=JOBS_TEMP_DIR_NOT_DIR Job {0} unable to stage files to file path {1} is not a directory.
    # 0 = job uuid, 1 = application id, 2 = temp directory
JOBS_CONDOR_TRANSFER_WRAPPER=JOBS_CONDOR_TRANSFER_WRAPPER Creating condor transfer wrapper for job {0} running application {1} in temporary directory {2}.        
    # 0 = job uuid, 1 = application id
JOBS_CONDOR_SUBMIT_FILE=JOBS_CONDOR_SUBMIT_FILE Creating condor submit file for job {0} running application {1}.        
    # 0 = job uuid, 1 = application id, 2 = file path, 3 = error message
JOBS_CONDOR_SUBMIT_FILE_WRITE=JOBS_CONDOR_SUBMIT_FILE_WRITE Unable to write condor submit file "{2}" for job {0} running application {1}: {3}
    # 0 = job uuid, 1 = scheduler type
JOBS_UNKNOWN_SCHEDULER_TYPE=JOBS_UNKNOWN_SCHEDULER_TYPE Job {0} specifies an unknown scheduler type: {1}.
    # 0 = unknown universe, 1 = error message
JOBS_CONDOR_UNKNOWN_UNIVERSE=JOBS_CONDOR_UNKNOWN_UNIVERSE Encountered unknown condor universe "{0}": {1} 
    # 0 = directives, 1 = error message
JOBS_CONDOR_PARSE_DIRECTIVES=JOBS_CONDOR_PARSE_DIRECTIVES Unable to parse condor custom queue directives [{0}]: {1}
     # 0 = job uuid, 1 = input key, 2 = error message
JOBS_CONDOR_INPUT_ERROR=JOBS_CONDOR_INPUT_ERROR Failed to add input value "{1}" to submit script for condor job {0}: {2}
    # 0 = job uuid, 1 = execution system, 2 = remote queue name, 3 = error message
JOBS_CONDOR_CREATE_SUBMIT_SCRIPT=JOBS_CONDOR_CREATE_SUBMIT_SCRIPT Unable to creae submit script for condor job {0} for execution in queue "{2}" on system "{1}": {3}
    # 0 = job uuid, 1 = template file path
JOBS_CONDOR_TEMPLATE_NOT_FOUND=JOBS_CONDOR_TEMPLATE_NOT_FOUND Template file "{1}" not found while processing job {0}.
    # 0 = job uuid, 1 = template file path, 2 = error message
JOBS_CONDOR_READ_TEMPLATE=JOBS_CONDOR_READ_TEMPLATE Unable to read template file "{1}" while processing job {0}: {2}
    # 0 = job uuid, 1 = application id
JOBS_CONDOR_CREATING_PACKAGE=JOBS_CONDOR_CREATING_PACKAGE Creating condor transfer package for job {0} running application {1}.
    # 0 = job uuid, 1 = application id, 2 = job work directory
JOBS_CONDOR_ADD_EXEC_PERM=JOBS_CONDOR_ADD_EXEC_PERM Adding execute permission to all scripts in "{2}" for job {0} running application {1}.
    # 0 = job uuid, 1 = tenant id, 2 = system id, 3 = remote work path, 4 = error message
JOBS_CONDOR_RUN_CMD_ERROR=JOBS_CONDOR_RUN_CMD_ERROR Failed to get condor start up script for job {0} in tenant {1} for remote path "{3}" on system {2}: {4}
     # 0 = job uuid, 1 = system id, 2 = command, 3 = error message
JOBS_CONDOR_RUN_CMD_ERROR=JOBS_CONDOR_RUN_CMD_ERROR Job {0} unable to run command "{2}" on system {1}: {3}
    # 0 = job uuid, 1 = system id, 2 = command, 3 = response, 4 = error message
JOBS_CONDOR_CMD_BAD_RESPONSE=JOBS_CONDOR_CMD_BAD_RESPONSE Job {0} could not parse response "{3}" from system {1} when running command "{2}": {4} 
    # 0 = job uuid, 1 = system id, 2 = command, 3 = response
JOBS_CONDOR_NO_JOB_ID=JOBS_CONDOR_NO_JOB_ID Job {0} could not determine the remote job id from system {1}'s response "{3}" to command "{2}".
    # 0 = job uuid, 1 = query results
JOBS_CONDOR_UNKNOWN_QUERY_RESULTS=JOBS_CONDOR_UNKNOWN_QUERY_RESULTS Condor job {0} monitoring received unexpected status information: {1}
    # 0 = exit code, 2 = command
JOBS_CONDOR_JVM_RUN_CMD=JOBS_CONDOR_JVM_RUN_CMD Job received error code {0} while attempting to run command: {1}
    # 0 = transfer file path, 1 = transfer file content
JOBS_CONDOR_TRANSFER_FILE=JOBS_CONDOR_TRANSFER_FILE Writing the following content to {0}: \n{1}
    # raw submission response from condor
JOBS_CONDOR_JOBID_MSG=JOBS_CONDOR_JOBID_MSG Job submission response: {0}
    # 0 = job uuid, 1 = monitor output string
JOBS_MONITOR_CONDOR_UNEXPECTED=JOBS_MONITOR_CONDOR_UNEXPECTED Job {0} monitor returned output in an unexpected format: {1}
    # 0 = job uuid, 1 = monitor output string
JOB_MONITOR_CONDOR_OUTPUT=JOB_MONITOR_CONDOR_OUTPUT Condor job {0} monitor output: {1}

    # 0 = job uuid, 1 = local id, 2 = token, 3 = status, 4 = error message
JOBS_CALLBACK_ERROR=JOBS_CALLBACK_ERROR Custom event callback for job {0} with local id {1}, token {2} and status {3} failed: {4}
    # 0 = job uuid, 1 = job's remote id, 2 = request's local id
JOBS_CALLBACK_JOB_ID_MISMATCH=JOBS_CALLBACK_JOB_ID_MISMATCH Job {0} expected local id {1} but received {2} instead.
    # 0 = job uuid, 1 = request token
JOBS_CALLBACK_UPDATE_TOKEN_MISMATCH=JOBS_CALLBACK_UPDATE_TOKEN_MISMATCH The update token in job {0} does not match the request token.
    # 0 = job uuid
JOBS_NOT_VISIBLE=JOBS_NOT_VISIBLE Job {0} is not available for updates.
    # 0 = job uuid, 1 = terminal state
JOBS_IN_TERMINAL_STATE=JOBS_IN_TERMINAL_STATE Job {0} is in terminal state {1} and cannot be updated.
    # 0 = max characters, 1 = actual characters 
JOBS_CALLBACK_MAX_PAYLOAD_EXCEEDED=JOBS_CALLBACK_MAX_PAYLOAD_EXCEEDED The maximum payload for this request is {0} characters, {1} characters were received.
    # 0 = missing key
JOBS_CALLBACK_MISSING_EVENT_NAME=JOBS_CALLBACK_MISSING_EVENT_NAME An acceptable value for the key {0} was not found.
    # 0 = json type
JOBS_CALLBACK_INVALID_JSON=JOBS_CALLBACK_INVALID_JSON The event name was a {0} not a primitive JSON type as required.
    # 0 = event name
JOBS_CALLBACK_RESERVED_EVENT_NAME=JOBS_CALLBACK_RESERVED_EVENT_NAME The reserved event name {0} cannot be used in a callback request. 
    # 0 = job uuid, 1 = tenant id, 2 = job owner, 3 = event name, 4 = event uuid, 5 = error message
JOBS_CALLBACK_NOTIFICATION_ERROR=JOBS_CALLBACK_NOTIFICATION_ERROR Failure sending notifications for {3} callback event {4} associated with job {0} for user {2} in tenant {1}: {5}  
    # 0 = job uuid, 1 = tenant id, 2 = job owner, 3 = event name, 4 = event uuid, 5 = number sent
JOBS_CALLBACK_NOTIFICATIONS_SENT=JOBS_CALLBACK_NOTIFICATIONS_SENT {5} notification(s) sent for {3} callback event {4} with associated job {0} for user {2} in tenant {1}.  
JOBS_CALLBACK_INVALID_STATUS=JOBS_CALLBACK_EMPTY_STATUS An empty status parameter was received on the request.

    # 0 = job uuid, 1 = exec system id, 2 = remote job id, 3 = kill command
JOBS_KILL_CMD=JOBS_KILL_CMD Killing job {0} with remote id {2} on system {1} using command: {3}
    # 0 = job uuid, 1 = exec system id, 2 = remote job id, 3 = kill command
JOBS_KILL_CMD_FAILED=JOBS_KILL_CMD_FAILED Unable to kill job {0} with remote id {2} on system {1} using command: {3}
    # 0 = job uuid, 1 = exec system id, 2 = remote job id, 3 = kill command
JOBS_KILL_CMD_NULL_RESULT=JOBS_KILL_CMD_NULL_RESULT No result returned when killing job {0} with remote id {2} on system {1} using command: {3}
    # 0 = job uuid, 1 = exec system id, 2 = remote job id 
JOBS_KILL_NOT_RUNNING=JOBS_KILL_NOT_RUNNING Job {0} with remote id {2} on system {1} is not running.
    # 0 = job uuid, 1 = exec system id, 2 = remote job id, 3 = result string 
JOBS_KILL_NOT_FOUND=JOBS_KILL_NOT_FOUND Job {0} with remote id {2} on system {1} was not found: {3}
    # 0 = job uuid, 1 = exec system id, 2 = remote job id, 3 = error message
JOBS_KILL_ERROR=JOBS_KILL_ERROR Unable to execute remote command to kill job {0} with remote id {2} on system {1}: {3}

    # 0 = job uuid, 1 = tenant id, 2 = job owner, 3 = system
JOBS_LAUNCHER_LOGIN=JOBS_LAUNCHER_LOGIN Logging into {3} to transfer files for job {0} in tenant {1} for user {2}.
    # 0 = job uuid, 1 = system, 2 = remote path, 3 = local path
JOBS_LAUNCHER_COPY_TO_LOCAL=JOBS_LAUNCHER_COPY_TO_LOCAL Job {0} copying path "{2}" on system {1} to local path "{2}".

##########################################################################################
# Migrations Section 
##########################################################################################
MIGRATE_STARTING=MIGRATE_STARTING Starting TapisJDBCMigrate.
MIGRATE_STOPPING=MIGRATE_STOPPING Stopping TapisJDBCMigrate.
    # 0 = db name
MIGRATE_DROPPING_DB=MIGRATE_DROPPING_DB Dropping database: {0}.
    # 0 = db name
MIGRATE_DROPPING_FAILED=MIGRATE_DROPPING_FAILED Unable to drop database {0}.
    # 0 = db name
MIGRATE_DB_DROPPED=MIGRATE_DB_DROPPED Database {0} dropped or did not exist. 
MIGRATE_CLEANING_DB=MIGRATE_CLEANING_DB Cleaning database: {0}
    # 0 = db name, 1 = db url
MIGRATE_CLEANING_FAILED= MIGRATE_CLEANING_FAILED Unable to clean database {0} using datasource {1}.
    # 0 = db name
MIGRATE_CLOSE_STMT_FAILED=MIGRATE_CLOSE_STMT_FAILED Unable to close statement on database: {0}.
    # 0 = db name
MIGRATE_CLOSE_CONN_FAILED=MIGRATE_CLOSE_CONN_FAILED Unable to close connection to database: {0}.
    # 0 = db name
MIGRATE_FOUND_DB=MIGRATE_FOUND_DB Found existing database: {0}.
    # 0 = db name, 1 = user
MIGRATE_ABORT_NO_USER=MIGRATE_ABORT_NO_USER Aborting database {0} creation because user {1} is not defined in the database. Rerun this program after creating user {1}.
    # 0 = user
MIGRATE_FOUND_USER=MIGRATE_FOUND_USER Found user {0}.
    # 0 = user
MIGRATE_CREATED_USER=MIGRATE_CREATED_USER Created user {0}.
    # 0 = db name
MIGRATE_DB_CREATED=MIGRATE_DB_CREATED Created database {0}.
    # 0 = user, 1 = db name
MIGRATE_GRANTED_PRIVILEGES=MIGRATE_GRANTED_PRIVILEGES Granted {0} all privileges on database {1}.
    # 0 = db name
MIGRATE_INCOMPLETE=MIGRATE_INCOMPLETE Creation of database {0} did not complete.  Drop the database before rerunning.
    # 0 = db name
MIGRATE_CONN_FAILED=MIGRATE_CONN_FAILED Failed to close connection to database: {0}
    # 0 = db name, 1 = db url
MIGRATE_CONFIG_FAILED=MIGRATE_CONFIG_FAILED Unable to configure flyway for database {0} using datasource {1}.
    # 0 = db name, 1 = file count 
MIGRATE_SUCCESS=MIGRATE_SUCCESS Migrated database {0} using {1} migation file(s).
    # 0 = db name, 1 = db url, 2 = cmd folder
MIGRATE_FAILED=MIGRATE_FAILED Unable to migrate database {0} with datasource {1} using migration files in {2}.
    # 0 = db name, 1 = db url
MIGRATE_BASELINING_FAILED= MIGRATE_BASELINING_FAILED Unable to baseline database {0} using datasource {1}.
    # 0 = db name
MIGRATE_SET_AUTOCOMMIT_FAILED=MIGRATE_SET_AUTOCOMMIT_FAILED Unable to change autocommit setting on connection to database {0}.
    # 0 = db name, 1 = search schema
MIGRATE_DB_SCHEMA_SEARCH=MIGRATE_DB_SCHEMA_SEARCH Set search schema on "{0}" database to {1}. 
    # 0 = user name, 1 = search schema
MIGRATE_USER_SCHEMA_SEARCH=MIGRATE_USER_SCHEMA_SEARCH Set search schema on user "{0}" to {1}. 
    # 0 = db name, 1 = schema name
MIGRATE_DROP_SCHEMA=MIGRATE_DROP_SCHEMA Dropped schema "{1}" from database "{0}".

##########################################################################################
# Applications Section 
##########################################################################################
    # 0 = invalid name
APPS_INVALID_APP_NAME=APPS_INVALID_APP_NAME Invalid format for an application unique name: {0} 
    # 0 = invalid name, 1 = sql message
APPS_APP_NAME_QUERY_ERROR=APPS_APP_NAME_QUERY_ERROR Unable to query application unique name "{0}": {1} 
    # 0 = parameter name, 1 = app id
APPS_ENUM_NOT_FOUND=APPS_ENUM_NOT_FOUND Unable to find any values for enumeration parameter {0} for application id {1}.
    # 0 = user-friendly message
APPS_PUBLIC_CHECKSUM_ERROR=APPS_PUBLIC_CHECKSUM_ERROR Checksum mismatch: {0}
    # 0 = app primary index, 1 = tenant id
APPS_APP_AVAILABILITY_QUERY_ERROR=APPS_APP_AVAILABILITY_QUERY_ERROR Unable to determine available of application {0} in tenant {1}.
    # 0 = app name, 1 = tenant id, 2 = app owner, 3 = error message
APPS_APP_CREATE_ERROR=APPS_APP_CREATE_ERROR Unable to create app {0} in tenant {1} for user {2}: {3}
    # 0 = app name, 1 = tenant id, 2 = app owner, 3 = error message
APPS_APP_INSERT_ERROR=APPS_APP_INSERT_ERROR Table insertion failed for app {0} in tenant {1} for user {2}: {3}

##########################################################################################
# Notifications Section 
##########################################################################################
    # 0 = uuid, 1 = sql message
NOTIFICATIONS_SELECT_UUID_ERROR=NOTIFICATIONS_SELECT_UUID_ERROR Unable to select notification {0}: {1}
    # 0 = associated uuid, 1 = sql message
NOTIFICATIONS_SELECT_ASSOCIATED_UUID_ERROR=NOTIFICATIONS_SELECT_ASSOCIATED_UUID_ERROR Unable to select notifications with associated uuid {0}: {1}
    # 0 = notification uuid, 1 = callback url, 2 = tenant base url, 3 = error message
NOTIFICATIONS_INVALID_CALLBACK_URL=NOTIFICATIONS_INVALID_CALLBACK_URL Notification {0} with tenant base URL "{2}" has invalid callback URL "{1}": {3} 
    # 0 = event, 1 = callback url, 2 = associated uuid, 3 = tenant id, 4 = owner, 5 = error message
NOTIFICATION_CREATE_ERROR=NOTIFICATION_CREATE_ERROR Unable to create {0} notification for URL {1} on associated uuid {2} for user {4} in tenant {3}: {5}
    # 0 = notification uuid, 1 = target status, 2 = error message
NOTIFICATIONS_UPDATE_STATUS_ERROR=NOTIFICATIONS_UPDATE_STATUS_ERROR Unable to update notification {0} status to {1}: {2}  

    # 0 = message service name
NOTIFICATION_UNKNOWN_MSG_SERVICE=NOTIFICATION_UNKNOWN_MSG_SERVICE Unknown message service "{0}" requested. Please specify one of the following: beanstalk."
    # 0 = broker host name, 1 = port number, 2 = exchange name, 3 = queue name
NOTIFICATION_PUSH_ERROR=NOTIFICATION_PUSH_ERROR Unable to push message to broker on host {0} at port {1} to queue {3} using exchange {2}.
    # 0 = broker host name, 1 = port number, 2 = exchange name, 3 = queue name
NOTIFICATION_REJECT_ERROR=NOTIFICATION_REJECT_ERROR Unable to reject message on host {0} at port {1} to queue {3} using exchange {2}.
    # 0 = broker host name, 1 = port number, 2 = exchange name, 3 = queue name
NOTIFICATION_POP_ERROR=NOTIFICATION_POP_ERROR Unable to pop message from broker on host {0} at port {1} from queue {3} using exchange {2}.
    # 0 = broker host name, 1 = port number, 2 = exchange name, 3 = queue name
NOTIFICATION_RESERVE_ERROR=NOTIFICATION_RESERVE_ERROR Unable to reserve message from broker on host {0} at port {1} on queue {3} using exchange {2}.
    # 0 = broker host name, 1 = port number, 2 = message id, 3 = queue name
NOTIFICATION_TOUCH_ERROR=NOTIFICATION_TOUCH_ERROR Unable to reserve message {2} from broker on host {0} at port {1} on queue {3}.
    # 0 = broker host name, 1 = port number, 2 = exchange name, 3 = queue name
NOTIFICATION_LISTEN_ERROR=NOTIFICATION_LISTEN_ERROR Unable to listen for messages using broker on host {0} at port {1} on queue {3} using exchange {2}. 
    # 0 = broker host name, 1 = port number, 2 = message id, 3 = queue name
NOTIFICATION_MSG_EXISTS_ERROR=NOTIFICATION_MSG_EXISTS_ERROR Unable to determine if message {2} exists on host {0} at port {1} on queue {3}.
    # 0 = broker host name, 1 = port number
NOTIFICATION_LIST_QUEUES_ERROR=NOTIFICATION_LIST_QUEUES_ERROR Unable to list queues on host {0} at port {1}.
    # 0 = broker host name, 1 = port number
NOTIFICATION_LIST_QUEUE_NAMES_ERROR=NOTIFICATION_LIST_QUEUE_NAMES_ERROR Unable to list queue names on host {0} at port {1}.
    # 0 = broker host name, 1 = port number, 2 = exchange name, 3 = queue name
NOTIFICATION_JOB_COUNT_ERROR=NOTIFICATION_JOB_COUNT_ERROR Unable to count jobs on host {0} at port {1} on queue {3} using exchange {2}. 
    # 0 = broker host name, 1 = port number, 2 = message id, 3 = queue name
NOTIFICATION_DELETE_ERROR=NOTIFICATION_DELETE_ERROR Unable to delete message {2} on host {0} at port {1} from queue {3}.
    # 0 = notif type, 1 = notif host, 2 = notif port, 3 = notif queue, 4 = error message
NOTIFICATION_MGR_INIT_ERROR=NOTIFICATION_INIT_ERROR Unable to initialize {0} notification manager on host {1}:{2} using queue {3}: {4} 

    # 0 = queue name, 1 = broker host name, 2 = associated uuid, 3 = event, 4 = error message, 5 = notification id
NOTIFICATION_PUSH_ERROR=NOTIFICATION_PUSH_ERROR Failed to push to queue {0} on host {1}. Notification {5} will not be sent for associated uuid {2} on event {3}: {4}
    # 0 = queue name, 1 = broker host name, 2 = associated uuid, 3 = event, 4 = error message
NOTIFICATION_EVENT_PUSH_ERROR=NOTIFICATION_EVENT_PUSH_ERROR Failed to connect to queue {0} on host {1}. No notifications will be sent for associated uuid {2} on event {3}: {4}
    # 0 = queue name, 1 = broker host name, 2 = associated uuid, 3 = event, 4 = error message
NOTIFICATION_EVENT_PROCESS_ERROR=NOTIFICATION_EVENT_PROCESS_ERROR Failed to process event {3} for associated uuid {2} while connecting to queue {0} on host {1}: {4}
    # 0 = queue name, 1 = broker host name, 2 = associated uuid, 3 = event, 4 = error message
NOTIFICATION_EVENT_UNKNOWN_ERROR=NOTIFICATION_EVENT_UNKNOWN_ERROR Unknown error when connecting to queue {0} on host {1} to process event {3} for associated uuid {2}: {4}

    # 0 = url, 1 = error message
NOTIFICATION_TENANT_NOT_FOUND=NOTIFICATION_TENANT_NOT_FOUND Unable to determine current tenant when resolving URL {0}: {1}

    # 0 = event name, 1 = event creator, 2 = associated uuid
NOTIFICATION_MAX_CUSTOM_LEN=NOTIFICATION_MAX_CUSTOM_LEN Custom notification for event {0} created by {1} and associated with {2} exceeds length limit and is ignored.   

##########################################################################################
# Systems Section 
##########################################################################################
    # 0 = system id, 1 = tenant id
SYSTEMS_MISSING_CREDENTIALS=SYSTEMS_MISSING_CREDENTIALS There are no credentials associated with system {0} for tenant {1}. Set a default credential to access data on this system.
    # 0 = system id, 1 = tenant id, 2 = owner
SYSTEMS_STORAGE_CONFIG_ERROR=SYSTEMS_STORAGE_CONFIG_ERROR Unable to retrieve storage configuration for system {0} for tenant {1} with owner {2}.
    # 0 = system id, 1 = tenant id, 2 = owner
SYSTEMS_LOGIN_CONFIG_ERROR=SYSTEMS_LOGIN_CONFIG_ERROR Unable to retrieve login configuration for system {0} for tenant {1} with owner {2}.
    # 0 = remote config id  
SYSTEMS_AUTH_CONFIGS_RETRIEVAL=SYSTEMS_AUTH_CONFIGS_RETRIEVAL Unable to query authentication configurations associated with remote configuration {0}.
    # 0 = authentication config id, 1 = string type
SYSTEMS_AUTH_CONFIGS_DECRYPT=SYSTEMS_AUTH_CONFIGS_DECRYPT Unable to decrypt {1} for authentication configuration {0}.    
    # 0 = remote config id
SYSTEMS_PROXY_SERVER_RETRIEVAL=SYSTEMS_PROXY_SERVER_RETRIEVAL Unable to query the proxy server associated with remote configuration {0}.
    # 0 = storage config id, 1 = remote system id, 2 = remote system name
SYSTEMS_STORAGE_CONFIG_NOT_FOUND=SYSTEMS_STORAGE_CONFIG_NOT_FOUND Storage configuration with id {0} not found for remote system {1} named {2}.
    # 0 = username, 1 = system id
SYSTEMS_DECRYPT_CREDENTIALS=SYSTEMS_DECRYPT_CREDENTIALS Unable to decrypt credentials for remote authentication for user {0} on system {1}.
    # 0 = protocol type, 1 = username, 2 = system id
SYSTEMS_MAKE_REMOTE_DATA_CLIENT=SYSTEMS_MAKE_REMOTE_DATA_CLIENT Unable to create {0} remote data client for user {1} on system {2}.
    # 0 = transfer task id  
SYSTEMS_TRANSFER_TASK_RETRIEVAL=SYSTEMS_TRANSFER_TASK_RETRIEVAL Unable to retrieve transfer task with id {0}.
    # 0 = system key, 1 = system id string, 2 = system name, 3 = error message
SYSTEMS_SELECT_ROLES_ERROR=SYSTEMS_SELECT_ROLES_ERROR Unable to retrieve roles for system {0} ({1}, {2}): {3}
    # 0 = username, 1 = system name, 2 = error message
SYSTEMS_SELECT_USER_ROLE_ERROR=SYSTEMS_SELECT_USER_ROLE_ERROR Unable to determine the role for user {0} on system {1}: {2}
    # 0 = job uuid, 1 = user name, 2 = tenant id, 3 = error message 
SYSTEMS_OUTPUT_SYSTEM_FOR_JOB_ERROR=SYSTEMS_OUTPUT_SYSTEM_FOR_JOB_ERROR Unable to determine output system for job {0} for user {1} in tenant {2}: {3}
    # 0 = job uuid, 1 = user name, 2 = tenant id, 3 = error message
SYSTEMS_OUTPUT_PATH_FOR_JOB_ERROR=SYSTEMS_OUTPUT_PATH_FOR_JOB_ERROR Unable to determine output path for job {0} for user {1} in tenant {2}: {3}
    # 0 = job uuid, 1 = user name, 2 = tenant id
SYSTEMS_JOB_FOR_USER_ERROR=SYSTEMS_JOB_FOR_USER_ERROR No permission on job {0} for user {1} in tenant {2}. 
    # 0 = username, 1 = tenant id, 2 = error message
SYSTEMS_PATH_RESOLVER=SYSTEMS_PATH_RESOLVER_DEFAULT Unable to resolve the default storage system for user "{0}" in tenant {1}" {2} 
    # 0 = url, 1 = job uuid, 2 = user name, 3 = tenant id, 4 = error message
SYSTEMS_NO_JOB_OUTPUT_SYSTEM=SYSTEMS_NO_JOB_OUTPUT_SYSTEM No output system found for job {1} for user {2} in tenant {3} using URL {0}: {4}
    # 0 = url, 1 = user name, 2 = tenant id, 3 = error message
SYSTEMS_NO_OUTPUT_SYSTEM=SYSTEMS_NO_OUTPUT_SYSTEM No output system found for user {1} in tenant {2} using URL {0}: {3}
    # 0 = url, 1 = user name, 2 = tenant id, 3 = error message
SYSTEMS_NO_REMOTE_CLIENT=SYSTEMS_NO_REMOTE_CLIENT No remote client found for user {1} in tenant {2} using URL {0}: {3}
    # 0 = url, 1 = user name, 2 = tenant id, 3 = error message
SYSTEMS_NO_OUTPUT_PATH=SYSTEMS_NO_OUTPUT_PATH No output path found for user {1} in tenant {2} using URL {0}: {3}
    # 0 = user name, 1 = pem type, 2 = system id
SYSTEMS_USER_PEM_ERROR=SYSTEMS_USER_PEM_ERROR User {0} does not have {1} permission on system {3}.    
    # 0 = url, 1 = user name, 2 = tenant id
SYSTEMS_UNSUPPORTED_SCHEME=SYSTEMS_UNSUPPORTED_SCHEME User {1} in tenant {2} used an unsupported scheme in URL {0}.
    # 0 = credenital server id, 1 = calling system name, 2 = tenant id, 3 = error message
SYSTEMS_CRED_SERVER_RETRIEVAL=SYSTEMS_CRED_SERVER_RETRIEVAL Unable to retrieve credential server with id {0} for system {1} in tenant {2}: {3}
 
    # 0 = system id, 1 = tenant id, 2 = sql message
SYSTEMS_FAILED_QUERY=SYSTEMS_FAILED_QUERY Unable to query system {0} for tenant {1}: {2}
    # 0 = user name, 1 = tenant id, 2 = sql message
SYSTEMS_USER_DEFAULT_STORAGE=SYSTEMS_USER_DEFAULT_STORAGE Unable to query default storage system for user {0} in tenant {1}: {2}
    # 0 = system id, 1 = user name, 2 = tenant id, 3 = sql message
SYSTEMS_USER_STORAGE_BY_SYSTEM_ID=SYSTEMS_USER_STORAGE_BY_SYSTEM_ID Unable to query system {0} for user {1} in tenant {2}: {3}
    # 0 = tenant id, 1 = sql message
SYSTEMS_GLOBAL_TENANT_STORAGE_SYSTEM=SYSTEMS_GLOBAL_TENANT_STORAGE_SYSTEM Unable to query tenant {0} for default storage system: {1}
    # 0 = authconfig id, 1 = authconfig username, 2 = system id, 3 = tenant id
SYSTEMS_AUTH_CONFIG_KEY_ERROR=SYSTEMS_AUTH_CONFIG_KEY_ERROR Unable to get encryption key for user {1} in tenant {3} for system {2} and authconfig {0}.
    # 0 = method name, 1 = system name
SYSTEMS_ASSIGNING_DATASOURCE=SYSTEMS_ASSIGNING_DATASOURCE Method {0} received system object {1} with no datasource assigned.  Continuing with available datasource.
    # 0 = system id, 1 = tenant id
SYSTEMS_HOST_RETRIEVAL_ERROR=SYSTEMS_HOST_RETRIEVAL_ERROR Unable to retrieve the hostname for system {0} in tenant {1}. 
SYSTEMS_REMOTE_FACTORY_CREATE=SYSTEMS_REMOTE_FACTORY_CREATE Unable to create remote data client factory.
    # 0 = system id, 1 = job uuid, 2 = tenant id, 3 = job owner, 4 = error message
SYSTEMS_REMOTE_AUTHENTICATION=SYSTEMS_REMOTE_AUTHENTICATION Failed to authenticate to remote storage system "{0}" while processing job {1} in tenant {2} for user {3}: {4} 
    # 0 = system id, 1 = username, 2 = error message
SYSTEMS_USER_ROLE_CREATE_ERROR=SYSTEMS_USER_ROLE_CREATE_ERROR Unable to create a system role on system {0} for user {1}: {2} 
    # 0 = system id, 1 = tenant id, 2 = error message
SYSTEMS_LINK_CREATE_FAILED=SYSTEMS_LINK_CREATE_FAILED Unable to create link for system {0} in tenant {1}: {2}
    # 0 = system id, 1 = tenant id, 2 = type
SYSTEMS_UNKNOWN_TYPE=SYSTEMS_UNKNOWN_TYPE System {0} in tenant {1} has an unknown type {2}.
    # 0 = variable name, 1 = system id
SYSTEMS_STARTUP_VAR_NOT_SUPPORTED=SYSTEMS_STARTUP_VAR_NOT_SUPPORTED The startupScript variable {0} is not supported in execution system {1}.
 
    # 0 = command string
SYSTEMS_CMD_INPUT=SYSTEMS_CMD_INPUT Attempting to run command: {0} 
    # 0 = command string
SYSTEMS_CMD_PROCESS_INPUT=SYSTEMS_CMD_PROCESS_INPUT Spawning subprocess to execute the following command: {0}
    # 0 = error message
SYSTEMS_CMD_BAD_BYTES=SYSTEMS_CMD_BAD_BYTES Unable to convert command input to byte array: {0}
    # 0 = command string, 1 = error message
SYSTEMS_CMD_PROCESS_ERROR=SYSTEMS_CMD_PROCESS_ERROR Error spawning subprocess for command {0} ({1})
    # 0 = command string
SYSTEMS_CMD_PROCESS_INTERRUPTED=SYSTEM_CMD_PROCESS_INTERRUPTED Interrupted while waiting for completion of command {0}
    # 0 = implementation class, 1 = remote path, 2 = local path
SYSTEMS_COPY_TO_LOCAL=SYSTEMS_COPY_TO_LOCAL {0} copying remote path "{1}" to local path "{2}".
    # 0 = implementation class, 1 = remote path, 2 = local path
SYSTEMS_COPY_TO_LOCAL_EXIT=SYSTEMS_COPY_TO_LOCAL_EXIT {0} copied remote path "{1}" to local path "{2}".

    # 0 = attempt key, 1 = calculated timeout 
SSH_SESSION_TIMEOUT_MILLIS=SSH_SESSION_TIMEOUT_MILLIS Calculated timeout of {1} ms for attempt key = {0}
    # 0 = system id, 1 = tenant id, 2 = system availability, 3 = system status
SYSTEMS_STATE_WARNING=SYSTEMS_STATE_WARNING Retrieved system {0} in tenant {1} with available = {2} and status = {3}. 
 
##########################################################################################
# Transfers Section 
##########################################################################################
    # 0 = transfer class name, 1 = failing method, 2 = I/O error message
TRANSFER_FAILURE=TRANSFER_FAILURE {0} transfer failed in method {1}: {2}
    # 0 = transfer class name, 1 = failing method, 2 = I/O error message
TRANSFER_CLEAN_UP_ERROR=TRANSFER_CLEAN_UP_ERROR {0} unable to clean up after failed transfer in method {1}: {2}
    # 0 = remote directory (source), 1 = local directory (target), 2 = number of failed files
TRANSFER_FROM_REMOTE_INCOMPLETE=TRANSFER_FROM_REMOTE_INCOMPLETE Failed to complete transfer for {2} files from remote directory "{0}" to local directory "{1}".
   # 0 = local directory (source), 1 = remote directory (target), 2 = number of failed files
TRANSFER_TO_REMOTE_INCOMPLETE=TRANSFER_TO_REMOTE_INCOMPLETE Failed to complete transfer for {2} files from local directory "{0}" to remote directory "{1}".
    # 0 = remote directory (source), 1 = local file or directory (target)
TRANSFER_FROM_REMOTE_FAILED=TRANSFER_FROM_REMOTE_FAILED Failed transfer from remote "{0}" to local "{1}".
    # 0 = remote directory (target), 1 = local file or directory (source)
TRANSFER_TO_REMOTE_FAILED=TRANSFER_TO_REMOTE_FAILED Failed transfer to remote "{0}" from local "{1}".
    # 0 = remote directory (source), 1 = local file or directory (target), 2 = error message
TRANSFER_IO_EXCEPTION=TRANSFER_IO_EXCEPTION I/O failure during transfer from remote "{0}" to local "{1}": {2}
    # 0 = remote directory (source), 1 = local file or directory (target), 2 = error message
TRANSFER_TO_REMOTE_IO_EXCEPTION=TRANSFER_IO_EXCEPTION I/O failure during transfer to remote "{0}" from local "{1}": {2}
    # 0 = directory
TRANSFER_APPEND_ERROR=TRANSER_APPEND_ERROR An attempt was made to append to directory {0}.
    # 0 = operation, 1 = remote source, 2 = local target, 3 = error message
TRANSFER_OPERATION_ERROR=TRANSFER_OPERATION_ERROR Transfer {0} operation from remote {1} to local {2} failed: {3}
    # 0 = operation, 1 = remote source, 2 = local target, 3 = error message
TRANSFER_TO_REMOTE_OPERATION_ERROR=TRANSFER_OPERATION_ERROR Transfer {0} operation to remote {1} from local {2} failed: {3}
    # 0 = remote file, 1 = local directory 
TRANSFER_REMOTE_COLLISION=TRANSFER_REMOTE_COLLISION Cannot overwrite remote non-directory "{0}" with local directory "{1}";
    # 0 = source, 1 = destination, 2 = owner, 3 = tenant id, 4 = error message
TRANSFER_TASK_INSERT_ERROR=TRANSFER_TASK_INSERT_ERROR Unable to insert a new transfer task with source={0}, dest={1}, owner={2} and tenantId={3}: {4}
    # 0 = source, 1 = destination, 2 = owner, 3 = tenant id, 4 = task uuid, 5 = error message
TRANSFER_TASK_UPDATE_ERROR=TRANSFER_TASK_UPDATE_ERROR Unable to update transfer task {4} with source={0}, dest={1}, owner={2} and tenantId={3}: {5}
    # 0 = source, 1 = destination, 2 = owner, 3 = tenant id, 4 = error message
TRANSFER_TASK_CREATE_ERROR=TRANSFER_TASK_CREATE_ERROR Unable to create a transfer task with source={0}, dest={1}, owner={2} and tenantId={3}: {4}
    # 0 task id, 1 = error message
TRANSFER_TASK_CANCEL_ERROR=TRANSFER_TASK_CANCEL_ERROR Unable to cancel transfer task {0}: {1}
    # 0 task uuid, 1 = owner, 2 = tenant id
TRANSFER_TASK_BAD_ID=TRANSFER_TASK_BAD_ID Transfer task with uuid {0} for user {1} in tenant {2} has an invalid id indicating that the task needs to be saved before transfering can begin. 
    # 0 = source path, 1 = dest path, 2 = task uuid, 3 = current file
TRANSFER_TASK_KILLED=TRANSFER_TASK_KILLED Transfer of "{0}" to "{1}" (transfer task {2}) was killed by an external thread. Aborting traversal at {3}.
    # 0 = source path, 1 = dest path, 2 = current file
TRANSFER_KILLED=TRANSFER_KILLED Transfer of "{0}" to "{1}" was killed by an external thread. Aborting traversal at {2}.
    # 0 = root task id, 1 = source uri, 2 = dest uri, 3 = owner, 4 = error message
TRANSFER_TASK_GET_CHILD_ERROR=TRANSFER_TASK_GET_CHILD_ERROR Unable to retrieve child task with rootTaskId = {0}, source = {1}, dest = {2} and owner {3}: {4}
    # 0 = pathname, 1 = error message
TRANSFER_NO_HOST_IN_PATH=TRANSFER_NO_HOST_IN_PATH Unable to extract system id from path {0}: {1}

    # 0 = transfer state, 1 = task uuid, 2 = status info
TRANSFER_CALLBACK_RECEIVED=TRANSFER_CALLBACK_RECEIVED Transfer {0} callback received for task {1}: {2}
    # 0 = transfer state, 1 = status info
TRANSFER_CALLBACK_UNKNOWN_TASK=TRANSFER_CALLBACK_UNKNOWN_TASK Transfer {0} callback received for unknown task: {1}
    # 0 = task uuid, 1 = status info
TRANSFER_CALLBACK_CANCEL=TRANSFER_CALLBACK_CANCEL Listener received a cancel for task {0}: {1} 
    # 0 = task uuid, 1 = status info
TRANSFER_CALLBACK_UNKNOWN_STATUS=TRANSFER_CALLBACK_UNKNOWN_STATUS Unrecognized transfer status received during transfer for task {0}: {1}
    # 0 = task uuid, 1 = remote file, 2 = total bytes.
TRANSFER_CALLBACK_STARTED=TRANSFER_CALLBACK_STARTED Transfer started callback received for task {0} servicing remote file "{1}" with {2} bytes.
    # 0 = remote file, 1 = total bytes.
TRANSFER_CALLBACK_UNKNOWN_STARTED=TRANSFER_CALLBACK_UNKNOWN_STARTED Transfer started callback received for unknown task servicing remote file "{0}" with {1} bytes.
    # 0 = task uuid, 1 = remote file, 2 = total bytes.
TRANSFER_CALLBACK_PROGRESS=TRANSFER_CALLBACK_PROGRESS Transfer progress callback received for task {0} servicing remote file "{1}" with {2} bytes moved so far.
    # 0 = total bytes.
TRANSFER_CALLBACK_UNKNOWN_PROGRESS=TRANSFER_CALLBACK_UNKNOWN_PROGRESS Transfer progress callback received for unknown task with {1} bytes moved so far.
    # 0 = task uuid, 1 = source file
TRANSFER_CALLBACK_CANCEL_RECEIVED=TRANSFER_CALLBACK_CANCEL_RECEIVED Transfer cancelled callback received for task {0} servicing remote file "{1}".  
TRANSFER_CALLBACK_CANCEL_UNKNOWN=TRANSFER_CALLBACK_CANCEL_UNKNOWN Transfer cancelled callback received for unknown task.
    # 0 = task uuid, 1 = source file
TRANSFER_CALLBACK_COMPLETED_RECEIVED=TRANSFER_CALLBACK_COMPLETED_RECEIVED Transfer completed callback received for task {0} servicing remote file "{1}".  
TRANSFER_CALLBACK_COMPLETED_UNKNOWN=TRANSFER_CALLBACK_COMPLETED_UNKNOWN Transfer completed callback received for unknown task.
    # 0 = task uuid, 1 = source file
TRANSFER_CALLBACK_FAILED_RECEIVED=TRANSFER_CALLBACK_FAILED_RECEIVED Transfer failed callback received for task {0} servicing remote file "{1}".  
TRANSFER_CALLBACK_FAILED_UNKNOWN=TRANSFER_CALLBACK_FAILED_UNKNOWN Transfer failed callback received for unknown task.
   
    # 0 = task uuid, 1 = marker
TRANSFER_GLOBUS_UNSUPPORTED_MARKER=TRANSFER_GLOBUS_UNSUPPORTED_MARKER Task {0} received unsupported marker "{0}".
    # 0 = marker, 1 = task uuid 
TRANSFER_GLOBUS_RESTART_FAILED=TRANSFER_GLOBUS_RESTART_FAILED Failed to register restart marker "{0}" for task {1}.   
    # 0 = marker, 1 = task uuid 
TRANSFER_GLOBUS_PERF_FAILED=TRANSFER_GLOBUS_PERF_FAILED Failed to handle performance marker "{0}" for task {1}. 
    # 0 = total stripe count, 1 = task uuid 
TRANSFER_GLOBUS_STRIPE_COUNT=TRANSFER_GLOBUS_STRIPE_COUNT Task {1} has a total stripe count of {0}. 
    # 0 = task uuid, 1 = error message
TRANSFER_GLOBUS_PERF_FAILED=TRANSFER_GLOBUS_STRIPE_COUNT_FAILED Task {0} failed to get total stripe count: {1} 
    # 0 = task uuid
TRANSFER_GLOBUS_STRIPE_COUNT_MISSING=TRANSFER_GLOBUS_STRIPE_COUNT_MISSING Task {0} did not have a stripe count.
   
    # 0 = source, 1 = dest, 2 = transfer task uuid, 3 = error message
TRANSFER_COPY_ERROR=TRANSFER_COPY_ERROR Unable to copy {0} to {1} under transfer task {2}: {3} 
    # 0 = dest, 1 = owner, 2 = transfer task uuid, 3 = error message
TRANSFER_MKDIR_ERROR=TRANSFER_MKDIR_ERROR Unable to make directory {0} for user {1} under transfer task {2}: {3} 


##########################################################################################
# Files Section 
##########################################################################################
    # 0 = path, 1 = system key, 2 = path hash, 3 = error message
FILES_SELECT_WITH_HASH_ERROR=FILES_SELECT_WITH_HASH_ERROR Error selecting path "{0}" from system {1} using path hash {2}: {3}
    # 0 = path, 1= error message
FILES_PATH_HASH_ERROR=FILES_PATH_HASH_ERROR Unable to calculation path hash for "{0}": {1}
    # 0 = system id, 1 = error message 
FILES_REMOTE_DATA_CLIENT_ERROR=FILES_REMOTE_DATA_CLIENT_ERROR Unable to obtain a remote data client for system "{0}": {1}
    # 0 = system id, 1 = path, 2 = username, 3 = error message 
FILES_USER_PERMISSION_ERROR=FILES_USER_PERMISSION_ERROR Error retrieving user {2} permission on path "{1}" in system {0}: {3}
    # 0 = path, 1 = system id, 2 = tenant id, 3 = error message
FILES_SELECT_CLOSEST_PARENT=FILES_SELECT_CLOSEST_PARENT Unable to retrieve the closest parent directory to {0} on system {1} in tenant {2}: {3}
    # 0 = path, 1 = system id, 2 = tenant id, 3 = path hash, 4 = error message
FILES_SELECT_PARENT=FILES_SELECT_PARENT Unable to retrieve the parent directory to {0} on system {1} in tenant {2} using path hash {3}: {4}
    # 0 = path, 1 = system id, 2 = tenant id, 3 = error message
FILES_SELECT_CHILD_IDS=FILES_SELECT_CHILD_IDS Unable to retrieve children id for path "{0}" in system {1}: {2}  
    # 0 = system id, 1 = path, 2 = username, 3 = error message   
FILES_USER_PARENT_ERROR=FILES_USER_PARENT_ERROR Error retrieving parent directory for user {2} on path "{1}" in system {0}: {3}
    # 0 = system id, 1 = path, 2 = username, 3 = error message
FILES_HOME_DIR_ON_PUBLIC=FILES_HOME_DIR_ON_PUBLIC Unable to determine if {1} is on public system {0} for user {2}: {3} 
    # 0 = system id, 1 = path, 2 = username, 3 = home or root, 4 = error message
FILES_UNDER_DIR_ERROR=FILES_UNDER_DIR_ERROR Unable to determine if {1} is under the {3} directory of system {0} for user {2}: {4}
    # 0 = system id, 1 = path, 2 = tenant id, 3 = username  
FILES_SYSTEM_NOT_FOUND=FILES_SYSTEM_NOT_FOUND Unable to find system {0} for logical file "{1}" in tenant {2} for user {3}. 
    # 0 = logical file id, 1 = username, 2 = error message
FILES_SELECT_PEMS_FOR_USER=FILES_SELECT_PEMS_FOR_USER Unable to select permission for logical file {0} for user {1}:{2}
    # 0 = remote system id, 1 = logical file id, 2 = username, 3 = tenant id, 4 = error message
FILES_GET_SYSTEM_ERROR=FILES_GET_SYSTEM_ERROR Unable to retrieve system with id {0} for logical file {1} for user {2} in tenant {3}:{4} 
    # 0 = permission type, 1 = user name, 2 = tenant id, 3 = logical file id, 4 = error message
FILES_PEM_INSERT_ERROR=FILES_PEM_INSERT_ERROR Unable to create permission {0} for user {1} in tenant {2} for logical file {3}: {4}
    # 0 = permission type, 1 = user name, 2 = tenant id, 3 = logical file id, 4 = error message
FILES_PEM_UPDATE_ERROR=FILES_PEM_UPDATE_ERROR Unable to update permission {0} for user {1} in tenant {2} for logical file {3}: {4}
    # 0 = permission type, 1 = user name, 2 = tenant id, 3 = logical file id, 4 = error message
FILES_PEM_DELETE_ERROR=FILES_PEM_DELETE_ERROR Unable to delete permission {0} for user {1} in tenant {2} for logical file {3}: {4}
    # 0 = permission type, 1 = user name, 2 = tenant id, 3 = logical file id
FILES_ADD_PEM_ERROR=FILES_ADD_PEM_ERROR Unable to create permission {0} for user {1} in tenant {2} for logical file {3}.
    # 0 = permission id, 1 = user name, 2 = tenant id, 3 = logical file id
FILES_UPDATE_PEM_ERROR=FILES_UPDATE_PEM_ERROR Unable to update permission {0} for user {1} in tenant {2} for logical file {3}.
    # 0 = permission type, 1 = user name, 2 = tenant id, 3 = logical file id
FILES_DELETE_PEM_ERROR=FILES_DELETE_PEM_ERROR Unable to delete permission {0} for user {1} in tenant {2} for logical file {3}.
    # 0 = logical file id, 1 = error message
FILES_DELETE_PEM_BY_LOGICALFILE_ID_ERROR=FILES_DELETE_PEM_BY_LOGICALFILE_ID_ERROR Unable to delete remote file permissions that reference logical file id {0}: {1}
    # 0 = logical file id, 1 = username, 2 = error message
FILES_PEM_BY_USER_LOGICALFILE_ID_DELETE_ERROR=FILES_PEM_BY_USER_LOGICALFILE_ID_DELETE_ERROR Unable to delete remote file permissions that reference logical file id {0} for user {1}: {2}
    # 0 = number of logical file ids, 1 = username, 2 = error message
FILES_PEM_BY_USER_LOGICALFILE_IDS_DELETE_ERROR=FILES_PEM_BY_USER_LOGICALFILE_IDS_DELETE_ERROR Unable to delete remote file permissions that reference {0} logical file ids for user {1}: {2}
    # 0 = permission id, 1 = user name, 2 = tenant id, 3 = logical file id
FILES_RECURSIVE_UPDATE_PEM_ERROR=FILES_RECURSIVE_UPDATE_PEM_ERROR Unable to recursively update permission {0} for user {1} in tenant {2} for logical file {3}.
    # 0 = logical file id, 1 = logical file path, 2 = system id, 3 = error message
FILES_RECURSIVE_DELETE_PEM_ERROR=FILES_RECURSIVE_DELETE_PEM_ERROR Unable to recursively delete permission for logical file {0} ({1}) on system {2}: {3} 
    # 0 = permission type, 1 = user name, 2 = tenant id, 3 = logical file id
FILES_SAVE_PEM_EVENT=FILES_SAVE_PEM_EVENT Unable to save event associated with permission {0} for user {1} in tenant {2} for logical file {3}.
    # 0 = permission type, 1 = permission id, 2 = username, 3 = child id, 4 = parent id, 5 = error message
FILES_UPDATE_CHILD_PEM_ERROR=FILES_UPDATE_CHILD_PEM_ERROR Unable to assign permission {1} ({0}) to user {2} for child {3} of logical file {4}: {5}
    # 0 = permission type, 1 = user name, 2 = child logical file id, 3 = parent logical file id, 4 = error message
FILES_DELETE_CHILD_PEM_ERROR=FILES_DELETE_CHILD_PEM_ERROR Unable to delete permission {0} for user {1} on logical file {2}, child of logical file {3}: {4}
    # 0 = pem name, 1 = user name, 2 = tenant id, 3 = logical file id, 4 = error message
FILES_BATCH_PEM_EVENTS_ERROR=FILES_BATCH_PEM_EVENTS_ERROR Unable to create events for {0} permission action for user {1} in tenant {2} for logical file {3}: {4} 
    # 0 = pem name, 1 = path, 2 = data client class name, 3 = username, 4 = tenant id, 5 = error message
FILE_PEM_MIRRORING_ERROR=FILE_PEM_MIRRORING_ERROR {2} unable to mirror {0} permission on "{1}" for user {3} in tenant {4}: {5} 
    # 0 = logical file id, 1 = error message
FILES_PEM_BY_LOGICALFILE_ID_DELETE_ERROR=FILES_PEM_BY_LOGICALFILE_ID_DELETE_ERROR Unable to delete remote file permissions by logical file id {0}: {1}
    # 0 = user name, 1 = pem type, 2 = logical file id, 3 = path
FILES_ACCESS_ERROR=FILES_ACCESS_ERROR User {0} does not have {1} permission on logical file {2} to access {3}.

    # 0 = logical file id, 1 = path, 2 = owner, 3 = uuid, 4 = system id, 5 = tenant id, 6 = error message
FILES_LINK_CREATE_FAILED=FILES_LINK_CREATE_FAILED Unable to create link for logical file {0} ({3}) with path {1}, owned by {2} in tenant {5} on system {4}: {6}
    # 0 = event type, 1 = creator, 2 = tenant id, 3 = error message
FILES_FILEEVENT_INSERT_ERROR=FILES_FILEEVENT_INSERT_ERROR Unable to create event {0} for user {1} in tenant {2}: {3}
    # 0 = batch successes, 1 = batch attempts, 2 = cumulative count, 3 = expected total 
FILES_BATCH_EVENT_INSERT=FILES_BATCH_EVENT_INSERT A batch of {0} file events created from {1} attempts; {2} events out an expected total of {3} completed. 
    # 0 = batch size, 1 = tenant id, 2 = user name, 3 = logical file id, 4 = error message
FILES_FILEEVENT_BATCH_INSERT_ERROR=FILES_FILEEVENT_BATCH_INSERT_ERROR A error occurred trying to insert {0} file events in batch mode, with one event for user {2} in tenant {1} on logical file {3}: {4} 

    # 0 = logical file id, 1 = tenant id, 2 = event uuid, 3 = event status, 4 = error message 
FILES_PROCESS_FILEEVENT_ERROR=FILES_PROCESS_FILEEVENT_ERROR Failed to process file event for logical file {0} in tenant {1} for event {2} with status {3}: {4}
    # 0 = logical file id, 1 = tenant id, 2 = event uuid, 3 = event status, 4 = error message 
FILES_SAVE_FILEEVENT_ERROR=FILES_SAVE_FILEEVENT_ERROR Failed to save file event for logical file {0} in tenant {1} for event {2} with status {3}: {4}
    # 0 = logical file id, 1 = tenant id, 2 = event uuid, 3 = event status, 4 = pem type, 5 = user name, 6 = error message 
FILES_PROCESS_PEMEVENT_ERROR=FILES_PROCESS_FILEEVENT_ERROR Failed to process file event for logical file {0} in tenant {1} for event {2} with status {3} and {4} permission for user {5}: {6}
    # 0 = logical file id, 1 = tenant id, 2 = event uuid, 3 = event status, 4 = pem type, 5 = user name, 6 = error message 
FILES_SAVE_PEMEVENT_ERROR=FILES_SAVE_FILEEVENT_ERROR Failed to save file event for logical file {0} in tenant {1} for event {2} with status {3} and {4} permission for user {5}: {6}

    # 0 = url
FILES_SYSTEM_NOT_FOUND_FOR_URL=FILES_SYSTEM_NOT_FOUND_FOR_URL No system was found matching the host name in the URL {0} and no default system is defined.
    # 0 = host, 1 = user name, 2 = tenant id, 3 = url, 4 = error message
FILES_REMOTE_COMM_ERROR=FILES_REMOTE_COMM_ERROR Failure communicating with remote system {0} as user {1} in tenant {2} for URL {3}: {4} 
    # 0 = host, 1 = user name, 2 = tenant id, 3 = path
FILES_REMOTE_PATH_NOT_DIRECTORY=FILES_REMOTE_PATH_NOT_DIRECTORY User {1} in tenant {2} expected path {3} on host {0} to be directory.
    # 0 = host, 1 = user name, 2 = tenant id, 3 = path
FILES_REMOTE_MKDIRS_ERROR=FILES_REMOTE_MKDIRS_ERROR User {1} in tenant {2} unable to make directory {3} on host {0}.
    # 0 = host, 1 = user name, 2 = tenant id, 3 = path, 4 = error message
FILES_REMOTE_MKDIRS_PEM_ERROR=FILES_REMOTE_MKDIRS_PEM_ERROR User {1} in tenant {2} unable to make directory {3} on host {0} due to a permission problem. Please make sure you have write access to the directory. {4}
    # 0 = host, 1 = user name, 2 = tenant id, 3 = path, 4 = error message
FILES_REMOTE_MKDIRS_OTH_ERROR=FILES_REMOTE_MKDIRS_PEM_ERROR User {1} in tenant {2} unable to make directory {3} on host {0}: {4}


##########################################################################################
# Remote Section 
##########################################################################################
    # 0 = remote command, 1 = error message
REMOTE_CMD_FAILURE=REMOTE_CMD_FAILURE Unable to execute remote command "{0}": {1}
    # 0 = remote path, 1 = error message
REMOTE_DATA_ERROR=REMOTE_DATA_ERROR Unable to access remote data {0}: {1}
    # 0 = remote path, 1 = error message
REMOTE_DESTINATION_ERROR=REMOTE_DESTINATION_ERROR Destination {0} already exists : {1}
    # 0 = host, 1 = user name, 2 = tenant id, 3 = error message    
REMOTE_CLIENT_DISCONNECT=REMOTE_CLIENT_DISCONNECT Error disconnecting from host {0} as user {1} in tenant {2}: {3}
    # 0 = user name, 1 = system name, 2 = error message
REMOTE_LOGIN_ERROR=REMOTE_LOGIN_ERROR Login failed for user {0} on system {1}: {2} 
    # 0 = message that captures the parameters (host, port, username, password, rootDir, homeDir, proxyHost, proxyPort, publickey, privatekey), 1 = error message
REMOTE_DESTINATION_CONNECTION_FAILURE=REMOTE_DESTINATION_CONNECTION_FAILURE Failed to connect to destination server {0} : {1}
    # 0 = message that captures the parameters (host, port, username, password, rootDir, homeDir, proxyHost, proxyPort, publickey, privatekey), 1 = proxy response/error message
REMOTE_COPY_FAILURE=REMOTE_COPY_FAILURE Failed to perform a remote copy on {0}: {1}
    # 0 = remotepath, 1 = message that captures the parameters (host, port, username, password, rootDir, homeDir, proxyHost, proxyPort, publickey, privatekey), 2 = error message
REMOTE_DELETE_FAILURE=REMOTE_DELETE_FAILURE Failed to delete {0} for {1} : {2}
    # 0 = remotepath, 1 = message that captures the parameters (host, port, username, password, rootDir, homeDir, proxyHost, proxyPort, publickey, privatekey), 2 = error message
REMOTE_CREATE_DIR_FAILURE=REMOTE_CREATE_DIR_FAILURE Failed to create {0} for {1} : {2}

##########################################################################################
# SFTP/SSH Section 
##########################################################################################
    # 0 = message that captures the parameters (host, port, username, password, rootDir, homeDir, proxyHost, proxyPort, publickey, privatekey), 1 = error message
SSH_CONNECTOR_FAILURE=SSH_CONNECTOR_FAILURE Unable to create SSH connector for {0} : {1}
    # 0 = message that captures the parameters (host, port, username, password, rootDir, homeDir, proxyHost, proxyPort, publickey, privatekey), 1 = error message
SSH_JCE_COMPONENT_MANAGER_FAILURE=SSH_JCE_COMPONENT_MANAGER_FAILURE Unable to create a component manager for {0} : {1}
    # 0 = message that captures the parameters (host, port, username, password, rootDir, homeDir, proxyHost, proxyPort, publickey, privatekey), 1 = error message
SSH_CIPHER_PREFERENCE_FAILURE=SSH_CIPHER_PREFERENCE_FAILURE Failure setting a cipher preference for {0} : {1}
    # 0 = message that captures the parameters (host, port, username, password, rootDir, homeDir, proxyHost, proxyPort, publickey, privatekey), 1 = error message
SSH_SOCKET_CONNECTION_FAILURE=SSH_SOCKET_CONNECTION_FAILURE Socket connection failure for {0} : {1}
    # 0 = message that captures the parameters (host, port, username, password, rootDir, homeDir, proxyHost, proxyPort, publickey, privatekey), 1 = error message
SSH_INITIALIZATION_FAILURE=SSH_INITIALIZATION_FAILURE Failure during SSH initialization for {0} : {1}
    # 0 = message that captures the parameters (host, port, username, password, rootDir, homeDir, proxyHost, proxyPort, publickey, privatekey), 1 = error message
SSH_GET_AUTHENTICATION_METHODS_FAILURE=SSH_GET_AUTHENTICATION_METHODS_FAILURE Failure to get ssh2 authentication methods for {0} : {1}
    # 0 = message that captures the parameters (host, port, username, password, rootDir, homeDir, proxyHost, proxyPort, publickey, privatekey), 1 = error message
SSH_PARSE_PRIVATE_KEY_FAILURE=SSH_PARSE_PRIVATE_KEY_FAILURE Failure to parse private key for {0} : {1}
    # 0 = message that captures the parameters (host, port, username, password, rootDir, homeDir, proxyHost, proxyPort, publickey, privatekey), 1 = error message
SSH_CREATE_KEY_FAILURE=SSH_CREATE_KEY_FAILURE Failure to create key pair for {0} : {1}      
    # 0 = message that captures the parameters (host, port, username, password, rootDir, homeDir, proxyHost, proxyPort, publickey, privatekey), 1 = error message
SSH_AUTHENTICATION_FAILURE_USING_KEYPAIR=SSH_AUTHENTICATION_FAILURE_USING_KEYPAIR Failure to authenticate using key pair for {0} :{1}
     # 0 = message that captures the parameters (host, port, username, password, rootDir, homeDir, proxyHost, proxyPort, publickey, privatekey), 1 = error message
SSH_MFA_AUTHENTICATION_FAILURE_USING_KEYPAIR=SSH_MFA_AUTHENTICATION_FAILURE_USING_KEYPAIR Failure to MFA authenticate using key pair for {0} : {1}     
     # 0 = message that captures the parameters (host, port, username, password, rootDir, homeDir, proxyHost, proxyPort, publickey, privatekey), 1 = error message
SSH_MFA_AUTHENTICATION_FAILURE_USING_PASSWORD=SSH_MFA_AUTHENTICATION_FAILURE_USING_PASSWORD Failure to MFA authenticate using password for {0} : {1}
     # 0 = message that captures the parameters (host, port, username, password, rootDir, homeDir, proxyHost, proxyPort, publickey, privatekey), 1 = error message
SSH_AUTHENTICATION_FAILURE_USING_PASSWORD=SSH_AUTHENTICATION_FAILURE_USING_PASSWORD Failure to authenticate using password for {0} : {1}   
    # 0 = message that captures the parameters (host, port, username, password, rootDir, homeDir, proxyHost, proxyPort, publickey, privatekey)
SSH_AUTHENTICATION_FAILURE=SSH_AUTHENTICATION_FAILURE Failed to authenticate for {0}
    # 0 = message that captures the parameters (host, port, username, password, rootDir, homeDir, proxyHost, proxyPort, publickey, privatekey), 1 = error message
SSH_OPEN_FORWARDING_CHANNEL_USING_PROXY_FAILURE=SSH_OPEN_FORWARDING_CHANNEL_USING_PROXY_FAILURE Failure open forwarding channel using proxy for {0} : {1}
    # 0 = message that captures the parameters (host, port, username, password, rootDir, homeDir, proxyHost, proxyPort, publickey, privatekey), 1 = error message
SSH_CONNECTION_USING_PROXY_FAILURE=SSH_CONNECTION_USING_PROXY_FAILURE Failure to connect using proxy for {0} : {1}
    # 0 = message that captures the parameters (host, port, username, password, rootDir, homeDir, proxyHost, proxyPort, publickey, privatekey), 1 = error message
SSH_AUTHENTICATION_USING_PROXY_FAILURE=SSH_AUTHENTICATION_USING_PROXY_FAILURE Failure to authenticate using proxy for {0} : {1}
    # 0 = message that captures the parameters (host, port, username, password, rootDir, homeDir, proxyHost, proxyPort, publickey, privatekey), 1 = error message
SSH_SFTP_CLIENT_CREATION_FAILURE=SSH_SFTP_CLIENT_CREATION_FAILURE Failure to create sftpClient for {0} : {1}
    # 0 = input or output, 1 = path, 2 = message that captures the parameters (host, port, username, password, rootDir, homeDir, proxyHost, proxyPort, publickey, privatekey), 3 = error message
SSH_RESOLVE_PATH_FAILURE=SSH_RESOLVE_PATH_FAILURE Failure to resolve {0} path {1} for {2} : {3}
    # 0 = input path, 1 = message that captures the parameters (host, port, username, password, rootDir, homeDir, proxyHost, proxyPort, publickey, privatekey), 2 = error message
SSH_CREATE_INPUT_STREAM_FAILURE=SSH_CREATE_INPUT_STREAM_FAILURE Failure to create inputstream for path {0} for {1} : {2}
    # 0 = message that captures the parameters (host, port, username, password, rootDir, homeDir, proxyHost, proxyPort, publickey, privatekey), 1 = error message
SSH_GET_OUTPUT_CLIENT_FAILURE=SSH_GET_OUTPUT_CLIENT_FAILURE Failure to get output client for {0} : {1}
    # 0 = output path, 1 = message that captures the parameters (host, port, username, password, rootDir, homeDir, proxyHost, proxyPort, publickey, privatekey), 2 = error message
SSH_CREATE_OUTPUT_STREAM_FAILURE=SSH_CREATE_OUTPUT_STREAM_FAILURE Failure to create outputstream for path {0} for {1} : {2}
    # 0 = remote path, 1 = message that captures the parameters (host, port, username, password, rootDir, homeDir, proxyHost, proxyPort, publickey, privatekey)
SSH_REMOTE_ACCESS_PATH_FAILURE=SSH_REMOTE_ACCESS_PATH_FAILURE Failure to access remote path {0} for {1} : {2}
    # 0 = old path, 1 = new path, 2 = message that captures the parameters (host, port, username, password, rootDir, homeDir, proxyHost, proxyPort, publickey, privatekey), 3 = error message
SSH_REMOTE_RENAME_FAILURE=SSH_REMOTE_RENAME_FAILURE Failed to rename {0} to {1} for {2} : {3}
    # 0 = message that captures the parameters (host, port, username, password, rootDir, homeDir, proxyHost, proxyPort, publickey, privatekey), 1 = error message     
SSH_USER_PERMISSION_ACCESS_FAILURE=SSH_USER_PERMISSION_ACCESS_FAILURE Failed to retrieve permissions for user {0} : {1}     
    # 0 = remotedir path, 2 = message that captures the parameters (host, port, username, password, rootDir, homeDir, proxyHost, proxyPort, publickey, privatekey), 2 = error message  
SSH_LIST_DIR_FAILURE=SSH_LIST_DIR_FAILURE Failure to list directory {0} for {1} : {2}  
    # 0 = message that captures the parameters (host, port, username, password, rootDir, homeDir, proxyHost, proxyPort, publickey, privatekey), 1 = error message
SSH_SESSION_CHANNEL_CONNECTION_FAILURE=SSH_SESSION_CHANNEL_CONNECTION_FAILURE Unable to open a session channel from connection for {0} : {1}
    # 0 = num, 1 = message that captures the parameters (host, port, username, password, rootDir, homeDir, proxyHost, proxyPort, publickey, privatekey), 2 = error message
SSH_TERMINAL_REQUEST_FAILURE=SSH_TERMINAL_REQUEST_FAILURE v100 terminal request failed {0} for {1} : {2} 
    # 0 = num, 1 = message that captures the parameters (host, port, username, password, rootDir, homeDir, proxyHost, proxyPort, publickey, privatekey), 2 = error message
SSH_START_SESSION_FAILURE=SSH_START_SESSION_FAILURE Unable to start session {0} for {1} : {2}
    # 0 = num, 1 = message that captures the parameters (host, port, username, password, rootDir, homeDir, proxyHost, proxyPort, publickey, privatekey), 2 = error message
SSH_CREATE_NEW_SHELL_FAILURE=SSH_CREATE_NEW_SHELL_FAILURE Unable to create new shell {0} for {1} : {2}
    # 0 = hostname, 1 = port, 2 = details of proxy when present, 3 = message that captures the parameters (host, port, username, password, rootDir, homeDir, proxyHost, proxyPort, publickey, privatekey)
SSH_INTERACTIVE_SHELL_SESSION_FAILURE=SSH_INTERACTIVE_SHELL_SESSION_FAILURE Failed to establish interactive shell session to {0}:{1} {2} for {3}
    # 0 = error message
SSH_MAVERICK_SFTP_LOG_LEVEL_FAILURE=SSH_MAVERICK_SFTP_LOG_LEVEL_FAILURE Unable to set Maverick (third party library) internal log level: {0} 

##########################################################################################
# IRODS Section 
##########################################################################################
    # 0 = pathname, 1 = error message
IRODS_ERROR=IRODS_ERROR IRODS error processing path {0}: {1}
    # 0 = pathname, 1 = error message
JARGON_ERROR=JARGON_ERROR Jargon library error processing path {0}: {1}
    # 0 = pathname
IRODS_FILE_NOT_FOUND=IRODS_FILE_NOT_FOUND File/folder does not exist or user lacks access permission: {0}
    # 0 = permission name, 1 = permission enum ordinal, 2 = path
IRODS_UNHANDLED_PEM_ENUM=IRODS_UNHANDLED_PEM_ENUM Unhandled FilePermissionEnum {0} ({1}) in conversion to RemoteFilePermission for pathname {2}.
    # 0 = user, 1 = path, 2 = error message
IRODS_IO_EXCEPTION=IRODS_IO_EXCEPTION IRODS I/O exception for user {0} and path {1}: {2}
    # 0 = user, 1 = path, 2 = error message
IRODS_PEM_CHANGE_ERROR=IRODS_PEM_CHANGE_ERROR Failed to change permission on {1} for user {0} due to insufficient privileges: {2}
    # 0 = user, 1 = path, 2 = error message
IRODS_PEM_NO_USER=IRODS_PEM_NO_USER Failed to add read permission for {0} on {1} because user does not exists on the remote system.

##########################################################################################
# Tenants Section 
##########################################################################################
    # 0 = tenant id, 1 = user name, 2 = error message
TENANTS_ADMIN_RETRIEVAL=TENANTS_ADMIN_RETRIEVAL Error retrieving tenant admin record for tenant {0} and user {1}: {2}
    # 0 = tenant id, 1 = user name, 2 = error message
TENANT_ADMIN_INSERT_ERROR=TENANT_ADMIN_INSERT_ERROR Error inserting tenant admin record for tenant {0} and user {1}: {2}
    # 0 = tenant id, 1 = user name, 2 = error message
TENANT_ADMIN_DELETE_ERROR=TENANT_ADMIN_DELETE_ERROR Error deleting tenant admin record for tenant {0} and user {1}: {2}
    # 0 = tenant contents
TENANTS_CREATE_FAILED=TENANTS_CREATE_FAILED Failed to create a tenant with the following values: {0}

##########################################################################################
# Uuid Section 
##########################################################################################
    # 0 = method name
UUID_INVALID = UUID_INVALID Not a Tapis UUID received by method: {0} 
   # 0 = uuid string
UUID_DECOMPOSE_ERROR = UUID_DECOMPOSE_ERROR Unable to decompose uuid to find resource type by method {0}
      # 0 = method name, 1 = parameter name
UUID_NULL_PARAMETER = UUID_NULL_PARAMETER Null or empty parameter received by method {0}: {1}
      # 0 = method name, 1 = parameter name
UUID_EMPTY_DB_FIELD = UUID_EMPTY_DB_FIELD Empty field in database recevied by method {0}: {1}
 # 0 = resource type
UUID_FOUND = UUID_FOUND Requested uuid found in the database.
      # 0 = method name
HTTP_RESPONSE_ERROR = HTTP REQUEST NOT SUCCESSFUL by method {0}
    # 0 = method name
HTTP_EMPTY_CONTENT = HTTP RESPONSE CONTENT EMPTY by method {0}
    # 0 = method name
HTTP_CONTENT_LENGTH_EXCEEDS_MAX_VALUE = HTTP_CONTENT_LENGTH_EXCEEDS_MAX_VALUE by method {0} 
      # 0 = method name
HTTP_RESPONSE_READ_ERROR = HTTP RESPONSE NOT READ by method {0}
 # 0 = method name
SSL_CONTEXT_INITIALIZE = Failure to iniitialize SSLCONTEXT by method {0}
  # 0 = method name
UUID_RESULT_OBJECT_ERROR = Unable to create result object by method {0}
# 0 = method name
AUTH_CREDENTIALS = Invalid/Missing Auth credentials by method {0}
 
##########################################################################################
# Sample Section 
##########################################################################################
    # 0 = error message
SAMPLE_INSERT_TEXT_ERROR=SAMPLE_INSERT_TEXT_ERROR Unable to insert text into sample table: {0}
    # 0 = new text
SAMPLE_CREATED=SAMPLE_CREATED A new sample was created with text value: {0}
    # 0 = error message
SAMPLE_SELECT_ERROR=SAMPLE_SELECT_ERROR Unable to access samples: {0}
    # 0 = sample id, 1 = error message
SAMPLE_SELECT_ID_ERROR=SAMPLE_SELECT_ID_ERROR Unable to access sample {0}: {1}
    # 0 = sample id
SAMPLE_NOT_FOUND=SAMPLE_NOT_FOUND Sample {0} not found.

##########################################################################################
# Security Kernel Section 
##########################################################################################
    # 0 = tenant id,, 1 = user, 2 = child role name, 3 = parent role id
SK_ADD_CHILD_ROLE_ERROR=SK_ADD_CHILD_ROLE_ERROR User {1} in tenant {0} was unable to add child role {2} to role id {3}.
    # 0 = tenant id, 1 = user, 2 = child role name, 3 = parent role id
SK_DELETE_CHILD_ROLE_ERROR=SK_DELETE_CHILD_ROLE_ERROR User {1} in tenant {0} was unable to delete child role {2} from role {3}.
    # 0 = tenant id,, 1 = user, 2 = permission spec, 3 = role name
SK_ADD_PERMISSION_ERROR=SK_ADD_PERMISSION_ERROR User {1} in tenant {0} was unable to add permission {2} to role id {3}.
    # 0 = tenant id,, 1 = user, 2 = permission spec, 3 = role name
SK_REMOVE_PERMISSION_ERROR=SK_REMOVE_PERMISSION_ERROR User {1} in tenant {0} was unable to remove permission {2} from role id {3}.
    # 0 = assigner, 1 = tenant id, 2 = role id, 3 = assignee
SK_ADD_USER_ROLE_ERROR=SK_ADD_USER_ROLE_ERROR User {0} is unable to add role {2} to user {3} in tenant {1}.
    # 0 = parent role id, 1 = error message
SK_SELECT_DESCENDANT_ROLES_ERROR=SK_SELECT_DESCENDANT_ROLES_ERROR Unable to retrieve descendant roles for role {0}: {1}
    # 0 = child role id, 1 = error message
SK_SELECT_ANCESTOR_ROLES_ERROR=SK_SELECT_ANCESTOR_ROLES_ERROR Unable to retrieve ancestor roles for role {0}: {1}
    # 0 = role id, 1 = error message
SK_SELECT_TRANSITIVE_PERMISSIONS_ERROR=SK_SELECT_TRANSITIVE_PERMISSIONS_ERROR Unable to retrieve permission for role {0}: {1}
    # 0 = list of possible parameters
SK_MISSING_PARAMETER=SK_MISSING_PARAMETER At least one of the following parameters should be set: {0}
    # 0 = tenant id, 1 = user, 2 = rolename
SK_ROLE_CREATE_ERROR=SK_ROLE_CREATE_ERROR Unable to create role {2} in tenant {0} for user {1}.
    # 0 = tenant id, 1 = user, 2 = rolename
SK_ROLE_DELETE_ERROR=SK_ROLE_DELETE_ERROR Unable to delete role {2} in tenant {0} for user {1}.
    # 0 = tenant id, 1 = user, 2 = rolename
SK_ROLE_GET_ERROR=SK_ROLE_GET_ERROR Unable to retrieve role {2} in tenant {0} for user {1}.
    # 0 = tenant id, 1 = rolename
SK_ROLE_NOT_FOUND=SK_ROLE_NOT_FOUND Role {1} not found in tenant {0}.







© 2015 - 2024 Weber Informatics LLC | Privacy Policy