Forward to Section 3 : JTM procedures Back to Section 1 : General Up to contents Warning on status of this document

Section 2 : JTM datatypes

2.1 Introduction to JTM datatype definitions

This section defines the JTM datatypes. It uses the standard notation of ISO/IEC 8824 (ASN.1) to define the abstract syntax of the Transfer Element datatype which forms part or all of the JTM PDU. The rest of the PDU, if any, is either a single document, or a number of documents and document separators. The abstract syntax of the document separators is defined in this section. The abstract syntax of the documents is defined elsewhere.

This section also defines the abstract syntax of the datatypes which form the user data parameters of CCR primitives used by JTM.

This section specifies only the abstract syntax, and does not reference the encoding rules for generation of the transfer syntax.

Clause 2.2 defines the datatypes used for naming (these appear throughout the later definitions), and for human readable messages.

Clause 2.3 defines the datatype for the document separator.

Clause 2.4 defines the datatypes used for diagnostics and for accounting information.

Clause 2.5 defines the datatypes used for the user data parameters of CCR primitives.

Clause 2.6 defines a datatype called "Transfer-element". The JTM service is provided by generating, transferring and processing work specifications. A work specification (a semantic concept) is represented during transfer as a "Transfer-element" together with zero, one or more documents and document separators. The representation of a Basic Class work specification will not include more than one document and will include no document separators. Clause 2.6 defines the complete "Transfer-element" data structure for all CHOICES which are used in this International Standard, giving the abstract syntax and the semantic restrictions during transfer. The way instances of this datatype shall be created and the way they shall be processed on receipt is specified in section 3.

Clause 2.7 defines the datatypes "Work-display-doc", "Report-display-doc" and "Tcr-display-doc". These are generated by the JTM service provider as specified in section 3, and are the only JTM-defined documents.

Clause 2.8 is a repetition of the datatype definitions in clauses 2.2, 2.3, 2.4, 2.5, 2.6 and 2.7, and is intended for machine processing. If differences occur, clauses 2.2, 2.3, 2.4, 2.5, 2.6, and 2.7 are authoritative.

2.2 Names and messages

2.2.1 Global names

ISO8832-JTM DEFINITIONS IMPLICIT TAGS ::=
BEGIN
JTM-name ::= Application-entity-title

FTAM-name ::= Application-entity-title

User-identification-authority ::= Application-entity-title

Application-entity-title ::= ACSE-1.AE-title
END
NOTES
  1. The above module reference uses the definition of the syntax of application-entity-titles provided in ISO 8650. The datatype and corresponding datavalues are imported into the JTM abstract syntax definition, that is to say, the values of these datatypes are transmitted in the presentation-context established for JTM PDUs.
  2. Application-entity-titles are unambiguous and are supported by directory functions relating them to addressing information.
  3. The datatype "FTAM-name" is not used in Basic Class.

Instances of these datatypes exhibit the following properties on all open systems communicating using this International Standard:

  1. given an instance of a "JTM-name" to be used for a JTM transfer, local directory functions are used to generate addressing information to enable JTM transfers to be made to a JTM ASE; this JTM ASE is said to correspond to the name; this correspondence is independent of the JTM ASE making the transfer;
  2. the addressing information provided by an incoming call may be sufficient to determine or to verify that the call was made by a particular JTM ASE;
  3. an instance of a "User-identification-authority" corresponds to a single source of user identifications among the communicating systems; a central or distributed authority ensures that this unambiguity of naming is maintained;
  4. there is no requirement for values of these two datatypes to be distinct; the same value can be used for both a "JTM-name" and for a "User-identification-authority", where this is convenient for human administrations.

2.2.2 Names local to a JTM ASE

ISO8832-JTM DEFINITIONS IMPLICIT TAGS ::=
BEGIN
Agency-name ::= GraphicString
END

Each JTM execution agency, sink agency and source agency is associated with at least one instance of the datatype "Agency-name". An instance of this datatype is associated with only one agency accessed by a specific JTM ASE.

A JTM ASE uses local directory functions to enable it to issue J-service primitives to a named agency. The local directory information identifies whether the agency is a source, sink or execution agency.

2.2.3 Names local to a User-identification-authority

ISO8832-JTM DEFINITIONS IMPLICIT TAGS ::=
BEGIN
User-identification ::= GraphicString
END

The authorisation of activity invoked through JTM is based on the authentication of user identifications. A "User-identification" name is used, within the scope of a "User-identification-authority" name, to identify a set of allowed activities.

Each JTM ASE is configured to recognise one or more instances of the type "User-identification-authority" (typically one). It contains local directory information which enables it to determine the allowed activities for some or all of the "User-identifications" issued by these "User-identification-authorities".

A "User-identification-authority" may be known only to a single open system. In this case all associated directories are local to that open system. Where a particular "User-identification-authority" is known to more than one open system, some directory information is needed at each open system, and protocols for remote password checking may be in use.

NOTE -- The user identifications and the associated directories for authentication and authorisation are usually the normal mechanisms provided on most computer systems. The additional requirements for networking are the allocation of unambiguous names for user identification authorities, and arrangements for distributing the directory information when the same user identification is to be used on more than one open system.

2.2.4 Name lists

ISO8832-JTM DEFINITIONS IMPLICIT TAGS ::=
BEGIN
Name-list ::= SEQUENCE OF GraphicString
END

The "Name-list" datatype is used for the identification of documents passed to and from JTM source, sink, and execution agencies.

2.2.5 Context names

This subclause specifies the names to be used for

  1. the names of the application-contexts which are used in A-ASSOCIATE service primitives in order to establish the use of an association for the procedures specified in this International Standard; and
  2. the name of the abstract syntax for all the datatypes defined in this International Standard and summarised in clause 2.8; and
  3. the name of the transfer syntax for these datatypes which is obtained by applying the Basic Encoding Rules (see ISO/IEC 8825) of ASN.1.

Specification of these names uses the following ASN.1 value definition:

          jtm OBJECT IDENTIFIER ::= {iso standard 8832}

The associated ObjectDescriptor value is

          "ISO JTM Standard"
NOTE -- The ASN.1 definition of ObjectDescriptor and OBJECT IDENTIFIER permits, but does not require, the translation of ObjectDescriptor values and of identifiers in OBJECT IDENTIFIER values when the standard defining such values is translated into another language.

2.2.5.1 Application contexts

A JTM implementation is aware of two application-context-names. The first identifies the procedures of this International Standard when the Basic Class restrictions are applied and has the following ASN.1 "OBJECT IDENTIFIER" and "ObjectDescriptor" values:

          {jtm application-context (1) basic (1) }
          "ISO JTM Basic Class Application-context"

The second identifies the full JTM procedures of this International Standard and has the following ASN.1 values:

          {jtm application-context (1) full (2) }
          "ISO JTM Full Application-context"

2.2.5.2 Abstract syntax

Presentation data values received and transmitted by JTM systems (other than those specified by the ACSE and CCR ASEs) are either:

  1. values of the ASN.1 datatype "Transfer-element" defined in clause 2.6; or
  2. values of the ASN.1 datatypes
              C-BEGIN-USER-DATA
              C-READY-USER-DATA
              C-ROLLBACK-RI-USER-DATA
    
    defined in clause 2.5; or
  3. presentation data values specified in a document type definition; or
  4. values of the ASN.1 datatype "Document-separator" defined in clause 2.3.

Presentation data values of type c) shall be transferred in the presentation context(s) established from the abstract syntax name(s) specified in the document type definition. (See annex B for document types defined in this International Standard.)

Presentation data values of types a), b) and d) shall be transferred in a presentation context established using the abstract syntax identified by the following ASN.1 "OBJECT IDENTIFIER" and "ObjectDescriptor" values:

          {jtm abstract-syntax (2) }
          "ISO JTM Abstract Syntax"
NOTE -- The document type definitions for "work-display", "report-display" and "tcr-display" documents also use this abstract syntax name.

2.2.5.3 Transfer syntax

When negotiating a transfer syntax for the abstract syntax "ISO JTM Abstract Syntax" specified in 2.2.5.2, the following ASN.1 definitions shall be used to reference that transfer syntax which is obtained by applying ISO/IEC 8825 (the Basic ASN.1 Encoding Rules) to the datatypes defined in this section:

         {joint-iso-ccitt asn1(1) basic-encoding(1)}
         "Basic encoding of a single ASN.1 type"

These ASN.1 object identifier and object descriptor values are assigned in ISO/IEC 8825. The following ASN.1 definitions also identify the same transfer-syntax, but their use is deprecated:

          {jtm transfer-syntax (3) }
          "ISO JTM Transfer Syntax"

No other transfer syntaxes are defined in this International Standard. Other transfer syntaxes for the "ISO JTM Abstract Syntax" can be defined and named by other organisations, and may be used in presentation context negotiation. (See, however, 1.3.10.)

2.2.6 Human-readable messages

Messages are used to return diagnostic information to human users.

ISO8832-JTM DEFINITIONS IMPLICIT TAGS ::=
BEGIN
Message ::= SEQUENCE SIZE (1..MAX) OF GraphicString (SIZE (0..40))
END

It is intended that each "GraphicString" in a "Message" should be presented to humans on a separate line. The total length of the "Message" is not limited.

The graphics repertoires used in the "Message" datatype shall consist only of those listed in one of the "code-specifiers" of the CCR "diagnostic code indicator" parameter for the atomic action, or of characters from the International Reference Version of ISO 646. (See 2.5.)

NOTES
  1. The requirement to support ISO 646 is subject to variation in national standards which are otherwise equivalent to this International Standard.
  2. Where the total work involves several atomic actions, the service provider securely retains the CCR diagnostic code parameter for use on subsequent atomic actions.

2.3 Document separators

Document separators are used when a work specification contains more than one document in addition to the "Transfer-element"

ISO8832-JTM DEFINITIONS IMPLICIT TAGS ::=
BEGIN
Document-separator ::= [APPLICATION 1] IMPLICIT NULL
END

2.4 Diagnostics

2.4.1 JTM Diagnostic codes

JTM specifies a datatype for the "code" in CCR diagnostics. The specification is

ISO8832-JTM DEFINITIONS IMPLICIT TAGS ::=
BEGIN
JTM-code ::=     SEQUENCE
   {jtm-user-code     CHOICE
      {absent                                [0]  NULL     ,
       user-defined                          [1]  EXTERNAL } ,
                      CHOICE
    {sf-not-supported                        [0]  NULL     ,
     ue-unauthorised-access                  [1]  NULL     ,
     ue-unauthorised-reporting               [2]  NULL     ,
     ue-no-document                          [3]  NULL     ,
     ue-agency-unknown                       [4]  NULL     ,
     ue-no-agency-document                   [5]  NULL     ,
     ue-no-authorisation-for-transfer        [6]  NULL     ,
     ue-site-unknown                         [7]  NULL     ,
     ue-disposal-error                       [8]  NULL     ,
     w-document-name-changed                 [9]  NULL     ,
     ua-killed-by-manipulation               [10] NULL     ,
     sf-protocol-error                       [11] NULL     ,
     sf-transmission-failure                 [12] NULL     ,
     sf-too-large                            [13] NULL     ,
     rl-incoming-concurrency-limit           [14] NULL     ,
     rl-timeout                              [15] NULL     ,
     rl-transmission-attempt                 [16] NULL     ,
     rl-access-to-agency-document            [17] NULL     ,
     rl-document-disposal                    [18] NULL     ,
     rl-manipulation-in-progress             [19] NULL     ,
     rl-agency-concurrency-limit             [20] NULL     ,
     rl-transmission-concurrency-limit       [21] NULL     ,
     rl-internally-busy                      [22] NULL     ,
     sf-repeated-retries                     [23] NULL     ,
     ue-monitor-site-unknown                 [24] NULL     ,
     sf-incorrect-report-routing             [25] NULL     ,
     sf-incorrect-monitor-name               [26] NULL     ,
     sf-context-not-available                [27] NULL     ,
     sf-transmission-error                   [28] NULL     ,
     ue-no-agency-activity                   [29] NULL     ,
     ue-document-already-exists              [30] NULL     ,
     ue-document-does-not-exist              [31] NULL     ,
     ue-empty-directory                      [32] NULL     ,
     ue-proforma-not-present                 [33] NULL     ,
     ue-site-basic-class-only                [34] NULL     ,
     ue-ftam-not-supported                   [35] NULL     ,
     ue-no-ftam-document                     [36] NULL     ,
     ue-ftam-disposal-error                  [37] NULL     ,
     w-ftam-warning                          [38] NULL     ,
     sf-monitor-point-storage-not-supported  [39] NULL     ,
     sf-transfer-control-not-supported       [40] NULL     ,
     sf-transfer-manipulation-not-supported  [41] NULL     ,
     ue-commitment-and-holds-incompatible    [42] NULL     ,
     ue-no-authority-to-remove-permission    [43] NULL     ,
     ue-wrong-number-se-lists                [44] NULL     ,
     ue-wrong-number-se-ref-lists            [45] NULL     ,
     ue-wrong-number-source-lists            [46] NULL     ,
     ue-wrong-number-source-ref-lists        [47] NULL     ,
     ue-invalid-modification                 [48] NULL     ,
     ue-no-tcr-authorisation                 [49] NULL     ,
     ue-document-reference-not-satisfied     [50] NULL     ,
     sf-implementation-failure               [51] NULL
                                                           } }
END

The "jtm-user-code" shall be the CHOICE "absent" unless this International Standard is referenced by another standard which specifies the abstract and possible transfer syntaxes for the embedded context "user-defined".

NOTES
  1. Section 3 specifies the circumstances in which each of these error codes is generated. Those marked "sf" are service failures, "ue" are user errors, "ua" are user actions, "rl" are retry-later reasons and "w" are warnings. The error code "sf-implementation-failure" is not generated by the procedures of section 3. An implementation may generate it when it is unable to follow those procedures fully.
  2. Future addenda are likely to increase the range of codes that a Basic Class implementation can receive. Implementations should therefore be able to accept additional tagged NULL values. When an implementation is converting a JTM-code for human consumption, a code whose interpretation is unknown should be presented in such a way as to allow the tag used to be identified.

This datatype is embedded in the "CCR-Diagnostics" datatype defined in 2.4.2.

2.4.2 CCR diagnostics

CCR diagnostics are carried in user data of CCR primitives (see clause 2.5), in JTM diagnostics in reports (see 2.6.7), and in embedded diagnostics in Transfer-elements (see 2.6.5).

ISO8832-JTM DEFINITIONS IMPLICIT TAGS ::=
BEGIN
CCR-diagnostics ::=     CHOICE
   {warning          [0] SET OF SET
      {generator         [0] JTM-name     ,
       code              [1] JTM-code     ,
                           CHOICE
          {reason        [2] Message     ,
           ftam-outcome  [3] CHOICE
              { [2] IMPLICIT ISO8571-RFCI.ReadTransferOutcome ,
                [3] IMPLICIT ISO8571-RFCI.WriteTransferOutcome } } } ,
          -- one or more in the SET OF --  ,
    no-retry         [1] SET OF SET
      {generator         [0] JTM-name  ,
       code              [1] JTM-code  ,
                           CHOICE
          {reason        [2] Message     ,
           ftam-outcome  [3] CHOICE
              { [2] IMPLICIT ISO8571-RFCI.ReadTransferOutcome ,
                [3] IMPLICIT ISO8571-RFCI.WriteTransferOutcome } } } ,
          -- one or more in the SET OF --  ,
    retry-later      [2] SET
      {retry-timer       [0] INTEGER OPTIONAL  ,
       retry-reason      [1] SET OF SET
         {generator         [0] JTM-name     ,
          code              [1] JTM-code     ,
                           CHOICE
          {reason        [2] Message     ,
           ftam-outcome  [3] CHOICE
              { [2] IMPLICIT ISO8571-RFCI.ReadTransferOutcome ,
                [3] IMPLICIT ISO8571-RFCI.WriteTransferOutcome } } } ,
          -- one or more in the SET OF --       } }

Basic-CCR-diagnostics ::= CCR-Diagnostics
        ( WITH COMPONENTS {warning
              ( WITH COMPONENT ( WITH COMPONENTS {...,reason} ) ) }
        | WITH COMPONENTS {no-retry
              ( WITH COMPONENT ( WITH COMPONENTS {...,reason} ) ) }
        | WITH COMPONENTS {retry-later 
              ( WITH COMPONENT ( WITH COMPONENTS {...,reason} ) ) }
        )
END
NOTE -- The above module reference uses the definition of the syntax of FTAM control information provided in Annex B of ISO 8571-4. The datatypes and corresponding datavalues are imported into the JTM abstract syntax definition, that is to say, the values of these datatypes are transmitted in the presentation-context established for JTM PDUs.

2.5 User data on CCR primitives

These datatypes shall be the values used by JTM for the user data fields declared as "EXTERNAL" in ISO/IEC 9805. JTM does not use the user data fields of those CCR primitives for which no datatype is defined in this clause.

2.5.1 User data on C-BEGIN request and indication

ISO8832-JTM DEFINITIONS IMPLICIT TAGS ::=
BEGIN
C-BEGIN-USER-DATA ::=     SET
   {commitment-level        [0] INTEGER (0..2)          ,
    diagnostic-code-indicator        [1] SEQUENCE OF
          -- Zero, one or more in the SEQUENCE
                                         Code-specifier  }

Code-specifier ::=     CHOICE
   {any-characters   [0] IMPLICIT NULL     ,
    code-sets        [1] IMPLICIT SET OF
                  -- one or more in the SET OF
                         INTEGER     }
END

An implementation shall generate "Messages" (see 2.2.6) using only those graphics characters specified in any one of the "code-specifiers", or using only those graphics characters in the International Reference Version of ISO 646.

The CHOICE "any-characters" permits any character set to be used. The INTEGER in "code-sets" references the register entry with that number in the ISO Register of Character Sets, and permits all characters registered with that entry number.

Commitment-level is defined in ISO/IEC 8831. It shall take only the values AGENCY-ACCEPTANCE and PROVIDER-ACCEPTANCE when C-BEGIN is issued by a Basic Class implementation or on an association that is using the application context of "ISO JTM Basic Class Application-context". Section 3 specifies the procedures related to commitment-level.

2.5.2 User data on C-READY request and indication

ISO8832-JTM DEFINITIONS IMPLICIT TAGS ::=
BEGIN
C-READY-USER-DATA ::=     SET
   {commitment-level        [0] INTEGER (0..2)     ,
    warnings                [1] warning<CCR-diagnostics OPTIONAL ,
    accounting-info         [2] Accounting-information OPTIONAL }


Accounting-information ::= SET OF Charging-information

Charging-information ::=     SEQUENCE
   {identification     [0] Identification    ,
    resource-name      [1] GraphicString     ,
    charging-unit      [2] GraphicString     ,
    charge             [3] INTEGER            }
END

"accounting-info", if present when a C-READY indication is issued to a Basic Class implementation, shall be ignored. It shall not be present when a C-READY request is issued by a Basic Class implementation.

The commitment-level field can take all values, including COMPLETION.

2.5.3 User data on C-ROLLBACK request and indication

The following data type shall only be used when the C-ROLLBACK request is issued by the subordinate (the acceptor of the previous C-BEGIN indication). No datatype is defined for the user data of C-ROLLBACK request or indication when the request is issued by the superior.

ISO8832-JTM DEFINITIONS IMPLICIT TAGS ::=
BEGIN
C-ROLLBACK-RI-USER-DATA ::= SET
   {diagnostic         [0] CHOICE
      {                       retry-later<CCR-diagnostics  ,
                              no-retry<CCR-diagnostics     } ,
    accounting-info    [1] Accounting-information OPTIONAL    }
END

The text of 2.5.2 shall apply to the "accounting-info" field.

2.6 Transfer elements

This clause defines a syntactic structure, and specifies semantic restrictions for a "Transfer-element". The identification of fields of this datatype are used to identify corresponding fields in the work specification.

A JTM transfer within the "ISO JTM Basic Class Application-context", as specified in section 3, consists of a single P-DATA primitive (within a CCR atomic action), carrying in its user data parameter the following presentation data values:

  1. a value of the "Transfer-element" datatype; optionally followed by
  2. the presentation data values specified in a document type definition to carry the semantics of a single document.

A JTM transfer within the "ISO JTM Full Application-context" consists of an indefinite number of P-DATA primitives (within a single CCR atomic action), carrying in their user data parameters the following presentation data values:

  1. a value of the "Transfer element" datatype; optionally followed by
  2. the presentation data values specified in a document type definition to carry the semantics of a single document; optionally followed by an indefinite number of
  3. an instance of the "Document-separator" datatype; followed by presentation data values as in b)

2.6.1 Top-level fields

2.6.1.1 Syntactic definitions

ISO8832-JTM DEFINITIONS IMPLICIT TAGS ::=
BEGIN
Transfer-element ::= [APPLICATION 0] SEQUENCE
   {osi-job-submission-system          [0] JTM-name                      ,
    initiating-identification          [1] Identification                ,
    initiating-time                    [2] Time-stamp                    ,
    osi-job-name                       [3] GraphicString                 ,
    osi-job-local-reference            [4] GraphicString                 ,
    audit-trace                        [5] SEQUENCE OF Audit-element     ,
    primary-monitoring-specification   [6] Monitoring-specification      ,
    secondary-monitoring-specification [11] SEQUENCE OF
                                            Monitoring-specification OPTIONAL ,
    authorisations                     [7] SET OF Authorisation-element    ,
    permissions                        [8] SET OF Permission-element       ,
    accounts                           [12] SET OF Account-element OPTIONAL ,
    security-parameters                [13] ANY OPTIONAL                    ,
    subjob-name-list                   [9] Subjob-name-list
                     (WITH COMPONENT (WITH COMPONENTS {..., qualifying-integer (1..MAX)})) ,
                                            COMPONENTS OF
                                            Subjob-specification           ,
    proforma-list                      [10] SEQUENCE OF Proforma           }

Subjob-name-list ::= SEQUENCE OF SEQUENCE
   {proforma-name            GraphicString     ,
    qualifying-integer       INTEGER (0..MAX)   }

Subjob-specification ::=     SEQUENCE
   {relays                    [25] SEQUENCE OF JTM-name OPTIONAL      ,
    target                    [20] JTM-name                           ,
    type                      [21] Subjob-type                        ,
    urgency                   [22] Urgency                            ,
    error-action              [23] Error-action                       ,
    holds                     [26] SEQUENCE OF Hold-element OPTIONAL  ,
    actions                   [24] JTM-action-parameters              }

Subjob-type ::=     CHOICE
   {document-movement         [0] NULL     ,
    work-manipulation         [1] NULL     ,
    report-movement           [2] NULL     ,
    tcr-manipulation          [3] NULL     ,
    report-manipulation       [4] NULL     }

JTM-action-parameters ::=     CHOICE
   {document-movement         [0] Document-movement-operations ,
    work-manipulation         [1] Work-manipulation-operations ,
    report-movement           [2] Report-movement-operation    ,
    tcr-manipulation          [3] Transfer-manipulation        , 
    report-manipulation       [4] Report-manipulation          }

Proforma ::=     SEQUENCE
   {proforma-name           [0] GraphicString                          ,
    spawning-control-data   [2] CHOICE
      {demand-only              [0] NULL     ,
       acceptance               [1] NULL     ,
       completion               [2] NULL     ,
       conditional              [3] NULL      } DEFAULT completion     ,
    demand-spawning-handles [3] SET OF Demand-spawning-handle OPTIONAL ,
                            CHOICE
      {proforma-reference   [4] GraphicString         ,
       proforma-body        [1] Proforma-specification }                }

Proforma-specification ::=     SEQUENCE
   {                    COMPONENTS OF Subjob-specification (WITH COMPONENTS
                          { ... , actions ( WITH COMPONENTS
                                 { ... , report-movement ABSENT } ) } ) ,
    proforma-list   [1] SEQUENCE OF Proforma                     }

Basic-transfer-element ::= Transfer-element
   ( WITH COMPONENTS
      { ...                                                                ,
       primary-monitoring-specification (INCLUDES Basic-monitoring-specification) ,
       secondary-monitoring-specification   ABSENT                         ,
       accounts                             ABSENT                         ,
       security-parameters                  ABSENT                         ,
       relays                               ABSENT                         ,
       type                                 (INCLUDES Basic-subjob-type)   ,
       urgency                              (WITH COMPONENTS {medium })    ,
       error-action                         (WITH COMPONENTS {terminate})  ,
       holds                                ABSENT                         ,
       actions                     (INCLUDES Basic-JTM-action-parameters)  ,
       proforma-list        ( SIZE ( 0 .. 1 ) )
                            ( WITH COMPONENT ( INCLUDES Basic-proforma ) ) }
    )

Basic-subjob-type ::= Subjob-type
  ( WITH COMPONENTS { ... , tcr-manipulation ABSENT ,
                            report-manipulation ABSENT } )

Basic-JTM-action-parameters ::= JTM-action-parameters
  ( WITH COMPONENTS {
         document-movement ( INCLUDES Basic-document-movement-operations 
                               ( INCLUDES Basic-top-level-document-movement ) ) ,
         work-manipulation ( INCLUDES Basic-work-manipulation-operations )       ,
         report-movement   ( INCLUDES Basic-report-movement-operations )         } )

Basic-proforma ::= Proforma
  ( WITH COMPONENTS { ... ,
         spawning-control-data ABSENT ,
         demand-spawning-handles ABSENT ,
         ( WITH COMPONENTS { proforma-body ( INCLUDES Basic-proforma-specification ) } )
   } )

Basic-proforma-specification ::= Proforma-specification
   (WITH COMPONENTS
      {...     ,
       relays             ABSENT     ,
       type               ( WITH COMPONENTS  { document-movement } ) ,
       urgency            ( WITH COMPONENTS { medium } ) ,
       error-action       ( WITH COMPONENTS { terminate } ) ,
       holds              ABSENT     ,
       actions            ( WITH COMPONENTS
            { document-movement ( INCLUDES Basic-document-movement-operations ) }
       } )

Urgency ::= CHOICE
   {low        [0] NULL     ,
    medium     [1] NULL     ,
    high       [2] NULL     }

Error-action ::= CHOICE
   {terminate     [0] NULL     ,
    hold          [1] INTEGER     }

Demand-spawning-handle ::= GraphicString

END

The following data-types are defined in later sub-clauses:

          Identification                    2.6.4
          Time-stamp                    2.6.5
          Audit-element                    2.6.2
          Monitoring-specification          2.6.3
          Authorisation-element               2.6.4
          Permission-element               2.6.4
          Hold-element                     2.6.4
          Document-movement-operations     2.6.5
          Work-manipulation-operations     2.6.6
          Report-movement-operation          2.6.7
          Report-manipulation     2.6.9
          Transfer-manipulation    2.6.8

A work specification also contains

          <time waiting = I>
          <estimated size = I>
          <agency activity parameters>

and, for each top-level proforma

          <times spawned = I>

These values are not transferred between open systems in a transfer element, so corresponding fields are not provided.

It also contains

          <CCR parameters>

recording the value used for the CCR "diagnostic code indicator".

Finally, it can (but might not) contain documents and document separators which are transferred as further values on P-DATA primitives. (In Basic Class, any document is an additional value on the first and only P-DATA).

When a work specification is awaiting a J-END-SIGNAL, the outermost "Subjob-specification" is null.

2.6.1.2 Semantic restrictions

The following restrictions apply during the transfer of a "Transfer-element":

  1. the value of the "osi-job-submission-system JTM-name" shall equal the value of the first "JTM-name" in the "audit-trace" (see 2.6.2);
  2. the "Subjob-type" and the "JTM-action-parameters" shall be one of the following pairs:
         document-movement     Document-movement-operations;
         work-manipulation     Work-manipulation-operations;
         report-movement          Report-movement-operation;
         report-manipulation     Report-manipulation;
         tcr-manipulation          Transfer-manipulation;
    
  3. if the "Subjob-type" in the "Transfer-element" is "report-movement", the "proforma-list" shall be "{}", and there shall be no further datatype values in the P-DATA.
  4. the elements of "authorisations", "permissions" , "accounts" and "holds" shall all have distinct values.
  5. the "proforma-reference" in a "Proforma" must equal the "proforma-name" of either :
    1. the "Proforma" whose "Subjob-specification" contains the "proforma-reference"; or
    2. one of the "Proforma" in the same "proforma-list" as the "Proforma" in 1) above;

The following restrictions apply during the transfer of a "Transfer-element" when the association-context is "ISO JTM Basic Class Application-context":

  1. the "Transfer-element" shall be a "Basic-transfer-element";
  2. there shall be no "embedded" choice in any "Document-pointer" in any proforma in the "Transfer-element" (see 2.6.5)

2.6.2 Audit elements

2.6.2.1 Syntactic definitions

ISO8832-JTM DEFINITIONS IMPLICIT TAGS ::=
BEGIN
Audit-element ::=     SEQUENCE
   {sender        [0] JTM-name     ,
    status        [1] CHOICE
      {unknown           [0] NULL     ,
       known             [1] NULL     ,
       authenticated     [2] NULL     } }
END

2.6.2.2 Semantic restrictions

During transfer, the value of the last "Audit-element" shall have a "status" of "unknown". The setting and use of other "Audit-element" values is specified in section 3.

2.6.3 Monitoring specifications

2.6.3.1 Syntactic definitions

ISO8832-JTM DEFINITIONS IMPLICIT TAGS ::=
BEGIN
Monitoring-specification ::= SEQUENCE
   {monitor-specification   [0] Monitor-spec     ,
    report-selector         [1] Report-selector     }

Report-selector ::= BIT STRING
   {normal-termination           (0)     ,
    manipulation-termination     (1)     ,
    abnormal-termination         (2)     ,
    user-message                 (3)     ,
    creation                     (4)     ,
    transfer                     (5)     ,
    spawning                     (6)     ,
    agency-acceptance            (7)     ,
    modification                 (8)     ,
    error-diagnostic             (9)     ,
    no-progress                  (10)    ,
    accounting-data              (11)    ,
    not-supported-termination    (12)    ,
    violation-attempt            (13)    ,
    warning-report               (14)    }

Monitor-spec ::= SEQUENCE
   {monitor-relays        [20] SEQUENCE OF JTM-name OPTIONAL     ,
    monitor-system-name   [0] JTM-name     ,
    disposal-instructions           CHOICE
      {disposal-data      [1] SEQUENCE
         { agency             [0] jtm-se<Se-identification ,
           doc-name           [1] jtm-write-data<Document-se-reference     },
       keep               [2] NULL     } }

Basic-monitoring-specification ::= Monitoring-specification
  ( WITH COMPONENTS { monitor-specification ( WITH COMPONENTS 
          { monitor-relays ABSENT , 
            monitor-system-name ,
            disposal-instructions ( WITH COMPONENTS
                 { ... , disposal-data ( WITH COMPONENTS
                      { agency ( WITH COMPONENTS { se-name } ) ,
                        doc-name ( WITH COMPONENTS 
                            { ... , se-access-parameter  add<SeȘaccess-parameter } )
                      } ) } ) } ) ,
        report-selector } )
END

The following data-types are defined in later sub-clauses:

          Se-identification                    2.6.5
          Document-se-reference               2.6.5

2.6.3.2 Semantic restrictions

The "report-selector" shall be a bit-string of a length chosen by the sender. A bit in the bit-string shall not be set to 1 unless it is one of the distinguished bits named in the ASN.1 definition. In a "report-selector" in a "Basic-monitoring-specification", a bit in the bit-string shall not be set to 1 unless it is one of the distinguished bits "normal-termination", "manipulation-termination", "abnormal-termination" or "user-message".

If the "monitor-system-name" is a Basic Class implementation, the "disposal-instructions" shall be "disposal-data".

NOTE -- The value "keep NULL" is only present in Basic Class transfer-elements that originated at extended implementations.

2.6.4 Authorisation, permission, account and hold elements.

2.6.4.1 Syntactic definitions

ISO8832-JTM DEFINITIONS IMPLICIT TAGS ::=
BEGIN
Authorisation-element ::=     SEQUENCE
   {id               [0] Identification           ,
    validation       [1] CHOICE
      {checked-index    [0] INTEGER (1..MAX)    ,
       password         [1] CHOICE
         {unset            [0] NULL           ,
          graphics         [1] GraphicString  ,
          binary           [2] OCTET STRING   } } }

Permission-element ::=     Identification

Identification ::=     CHOICE
   {open-system      [0] JTM-name     ,
    authority        [1] User-identification-authority ,
    user             [2] SEQUENCE
      {authority        [0] User-identification-authority ,
       id               [1] User-identification     }}

Account-element ::=  Authorisation-element

Hold-element ::=     SEQUENCE
   {location           [0] JTM-name     ,
                     CHOICE
      {reason            [1] Message        ,
       diagnostic-info   [2] Diagnostic-information },
    release-permission [3] Identification  OPTIONAL     ,
    release-time     CHOICE
      {date-time         [4] GeneralizedTime     ,
       time-of-day       [5] NumericString ( SIZE ( 4 ) ) ,
       time-interval     [6] INTEGER     }}
END

The following data-types are defined in later sub-clauses:

          Diagnostic-information               2.6.7

2.6.4.2 Semantic restrictions

The checked-index shall be a non-zero positive integer, and shall not contain a value greater than the number of "Audit-element" fields in the "audit-trace", numbering the first such field as "1".

2.6.5 Document movement operations

2.6.5.1 Syntactic definitions

ISO8832-JTM DEFINITIONS IMPLICIT TAGS ::=
BEGIN
Document-movement-operations ::= SEQUENCE OF Document-movement

Document-movement ::=     SEQUENCE
   {type            [0] OBJECT IDENTIFIER     ,
    type-parameters  [4] ANY DEFINED BY type OPTIONAL
                         -- to be filled by the ASN.1 type defined for PARAMETERS in
                         -- the document type register entry identified by "type"
    ses              [1] SEQUENCE OF Se-identification     ,
    document-block     CHOICE
      {single-form   [2] Single-form     ,
       multiple-form [3] Multiple-form     }}

Se-identification ::=     CHOICE
   {jtm-se                 [0] SEQUENCE
      {se-name                     [0] Agency-name     , 
       agency-parameter            [1] Agency-parameter  DEFAULT none     ,
       agency-activity-label       [2] GraphicString OPTIONAL     ,
       se-prefix                   [3] Name-list OPTIONAL     ,
       additional-authorisations   [4] Additional-authorisations OPTIONAL },
    ftam-sink              [1] FTAM-name     }
Agency-parameter  ::=     CHOICE
   {none                    [0] NULL ,
    store                   [1] NULL ,
    agency-format           [2] GraphicString }

Additional-authorisations ::=     SEQUENCE
   {agency-password         [0] GraphicString OPTIONAL     ,
    agency-account          [1] Account-element OPTIONAL     ,
    agency-authorisation    [2] Authorisation-element OPTIONAL     }

Single-form ::=     SEQUENCE
   {doc-name                [0] Document-se-reference ,
    docs                    [1] SEQUENCE OF Document-pointer }

Document-se-reference ::=     CHOICE
   {jtm-write-data        [0] SEQUENCE
      {document-name           [0] Name-list     ,
       se-access-parameter     [1] Se-access-parameter }               ,
    ftam-write-data       [1] [1] IMPLICIT ISO8571-RFCI.WriteTransferSpecification }

Se-access-parameter ::=     CHOICE
   {normal                    [0] NULL     ,
    add                       [1] NULL     ,
    new                       [2] NULL     ,
    old                       [3] NULL     ,
    append                    [4] NULL     }

Document-pointer ::=     CHOICE
   {embedded                  [0] NULL     ,
    single-document-reference [1] SEQUENCE
      {action-open-system        [0] JTM-name     ,
       source                    [1] Source-identification          ,
       doc-name                  [2] Document-source-reference ,
       embedded-diagnostics      [3] Embedded-diagnostics ,
       state                     [4] CHOICE
         {not-attempted              [0] NULL     ,
          failed                     [1] SEQUENCE
            {time                        [0] Time-stamp     ,
             diagnostics                 [1] no-retry<CCR-diagnostics }}}}


         -- NOTE - If the Transfer-element represents a work-specification for which reference
         -- resolution has not yet been attempted, the "state" is "not-attempted".
         -- Reference resolution either turns the reference into an "embedded"
         -- document-pointer, or turns the "state" to "failed".

Embedded-diagnostics ::=     CHOICE
   {embed        [0] NULL     ,
    error        [1] NULL     }

Source-identification ::=     CHOICE
   {provider          [0] NULL     ,
    jtm-source        [1] SEQUENCE
      {source-name               [0] Agency-name     ,
       agency-activity-label     [20] GraphicString OPTIONAL     ,
       agency-parameter          [21] Agency-parameter OPTIONAL     ,
       additional-authorisations [22] Additional-authorisations OPTIONAL },
    ftam-source      [21] FTAM-name}
Document-source-reference ::=     CHOICE
   {jtm-read-data      [0] SEQUENCE
      {document-name           [0]  Name-list     ,
       source-access-parameter [1] Source-access-parameter OPTIONAL     } ,
    ftam-read-data [1] [0] IMPLICIT ISO8571-RFCI.ReadTransferSpecification }

Time-stamp ::=     CHOICE
   {not-available    [0] NULL     ,
    time             [1] GeneralizedTime     }

Source-access-parameter ::=     CHOICE
   {move        [0] NULL     ,
    copy        [1] NULL     }

Multiple-form  ::=  SEQUENCE
   {action-open-system        [0] JTM-name     ,
    doc-se-skeleton           [1] jtm-write-data<Document-se-reference ,
    source                    [2] jtm-source<Source-identification ,
    doc-source-skeleton       [3] jtm-read-data<Document-source-reference ,
    embed-diagnostics         [4] Embedded-diagnostics ,
    document-selector         [5] CHOICE
      {empty                      [0] NULL     ,
       local-string               [1] GraphicString     }}

Basic-document-movement-operations ::= Document-movement-operation
                         ( SIZE ( 1 ) )
                         ( WITH COMPONENT ( INCLUDES Basic-document-movement ) )

Basic-document-movement ::= Document-movement
         ( WITH COMPONENTS  { ... ,
               ses ( SIZE ( 1 ) )
                   ( WITH COMPONENT { jtm-se ( WITH COMPONENTS { se-name } ) } ) ,
               document-block ( INCLUDES Basic-single-form ) } )

Basic-single-form ::= [2] Single-form ( WITH COMPONENTS {
      doc-name ( WITH COMPONENTS { jtm-write-data ( WITH COMPONENTS {
            document-name ,
            se-access-parameter ( WITH COMPONENTS { normal, add } ) } ) } ) ,
      docs ( SIZE ( 1 ) ) ( WITH COMPONENT ( INCLUDES Basic-document-pointer ) ) } )

Basic-document-pointer ::= Document-pointer  ( WITH COMPONENTS { ... ,
       single-document-reference ( WITH COMPONENTS { ... ,
            source ( WITH COMPONENTS {
                 provider ,
                 jtm-source ( WITH COMPONENTS { source-name } ) } ) ,
            doc-name ( WITH COMPONENTS {
                 jtm-read-data ( WITH COMPONENTS { document-name } ) } ) ,
            embedded-diagnostics ( WITH COMPONENTS { embed } ) } ) } } )

Basic-top-level-document-movement ::= Basic-document-movement
   ( WITH COMPONENTS { ... ,
        document-block ( WITH COMPONENTS { ... ,
           docs ( WITH COMPONENT ( WITH COMPONENTS 
               { single-document-reference ( WITH COMPONENTS { ... ,
                     state ( WITH COMPONENTS { failed } ) } ) } ) ) } ) }
   | WITH COMPONENTS { 
        type ( { iso standard 8832 document(4) text(1) }
             | { iso standard 8832 document(4) print(2) }
             | { iso standard 8832 document(4) work-display(4) } ) ,
        ses ,
        document-block ( WITH COMPONENTS { ... ,
             docs ( WITH COMPONENT { embedded } ) } ) } )

END

2.6.5.2 Semantic restrictions

Within the "ISO JTM Basic Class Application-context", the number of occurrences of the "embedded" CHOICE for "Document-pointer" shall exactly equal the number of values in the P-DATA following the Basic-transfer-element. Each value is a document. (There is at most one such occurrence in the Basic Class.)

Within the "ISO JTM Full Application-context", the number of occurrences of the "embedded" CHOICE for "Document-pointer" shall exactly equal the number of documents in the presentation data values in the P-DATA following the "Transfer-element".

The correspondence between the "embedded" CHOICE of "Document-pointer" and the document shall be determined by the order of the "embedded" CHOICEs in the abstract syntax definition of the "Transfer-element" given in 2.6 and the order of the documents in the P-DATA. The type of each document shall agree with the "Document-type" given in the "Document-movement" containing the corresponding "embedded" CHOICE of "Document-pointer".

The "Se-identification" in the "ses" in a "Document-movement" shall either all be the CHOICE "jtm-se" or all "ftam-sink". If they are "ftam-sink", the "document-block" shall be a "Single-form" in which the "doc-name" "Document-se-reference" shall be the CHOICE "ftam-write-data". "Document-se-reference" with the CHOICE "ftam-write-data" shall only be present in a "Single-form" in a "Document-movement" which has "ftam-sink" "Se-identification".

If a "Document-pointer" contains a "Source-identification" which is the CHOICE "ftam-source", the "doc-name" "Document-source-reference" shall be the CHOICE "ftam-read-data". "Document-source-reference" with the CHOICE "ftam-read-data" shall only be present in a "Document-pointer" which has "ftam-source" "Source-identification".

In an outer level subjob specification of a work specification whose target is this JTM ASE the "se-name" in the "ses" of a "Basic-top-level-document-movement" in the single document movement shall be an instance of a GraphicString used by the receiving open system as the name of a sink or execution agency.

A "Document-pointer" which is a "single-document-reference" and which has a "state" with the value :

          not-attempted NULL

and has a "source" with the value :

          provider NULL
  1. shall not be in an outer level "Subjob-specification" of a work specification
  2. shall only be in a "Subjob-specification" in a "Proforma" if the "action-open-system" in the "single-document-reference" is equal to the "JTM-name" of the "target" of the "Subjob-specification" in whose the "proforma-list" the "Proforma" lies.

In a "Document-pointer" which is a "single-document-reference" in which "source" has the value

          provider NULL

the "document-name" in the "doc-name" shall have the value

          {s}

where s is a "GraphicString"

2.6.5.2.1 In a work-manipulation transfer-element proforma

The "document-movement" in a "Proforma" which is in a "Basic-transfer-element" with "JTM-action-parameters" which are "Work-manipulation-operations" and for which the target is this JTM ASE shall have the value:

   {type          jtm work-display NULL ,
    ses
      {jtm-se
         {se-name              n     } } ,
    document-block
      {doc-name           jtm-write-data
         {document-name              d     } ,
            docs { single-document-reference
               {action-open-system             w     ,
                source {provider              NULL     } ,
                doc-name jtm-read-data
                  {document name            { s     } ,
                state not-attempted            NULL     }} } }

n is any "GraphicString", d is any "Name-list", w is equal to the "JTM-name" of the top-level "target" in the "Transfer-element" and s is a "GraphicString" with the value "DISPLAY".

2.6.5.2.2 In a document-movement transfer-element proforma

The "document-movement" in a "Proforma" which is in a "Transfer-element" with "JTM-action-parameters" which are "Document-movement-operations" shall have any value.

2.6.6 Work-manipulation operations

2.6.6.1 Syntactic definitions

ISO8832-JTM DEFINITIONS IMPLICIT TAGS ::=
BEGIN

Work-manipulation-operations ::= SEQUENCE OF Work-operation

Work-operation ::=     CHOICE
   {select        [0] Selector     ,
    kill          [1] NULL     ,
    stop          [2] NULL     ,
    modify        [4] Update     ,
    display             CHOICE
      { brief [3] GraphicString ,
        full  [5] GraphicString } }

Selector ::=               SEQUENCE
   {selector-form          [0] CHOICE
      {first-header-is           [0] NULL  ,
       contains-header           [1] NULL ,
       does-not-contain-header   [2] NULL ,
       header-is                 [3] NULL }     ,
    test                   [1] Header-test       }

Header-test ::=     CHOICE
   {                  [0] Field-test     ,
    and-clause        [1] SEQUENCE
      {header-one           [0] Header-test     ,
       header-two           [1] Header-test     },
    not-clause        [2] Header-test     ,
    or-clause         [3] SEQUENCE
      {header-one           [0] Header-test     ,
       header-two           [1] Header-test     },
    success           [4] NULL     ,
    fail              [5] NULL     }

Field-test ::=     CHOICE
   {osi-job-submission-system-equals [0]  JTM-name                     ,
    initiating-identification-equals [3] Identification-value         ,
    osi-jobname-equals               [1]  GraphicString                ,
    osi-job-local-reference-equals   [4] GraphicString                ,
    audit-trace-equals               [5] SEQUENCE OF JTM-name-value   ,
    audit-trace-contains             [6] JTM-name                     ,
    audit-trace-first-of-list-is     [7] JTM-name                     ,
    audit-trace-last-of-list-is      [8] JTM-name                     ,
    primary-monitor-equals           [9] Monitoring-spec-value        ,
    secondary-monitors-equals        [10] SET OF Monitoring-spec-value ,
    secondary-monitors-contains      [11] Monitoring-spec-value        ,
    authorisations-equal             [12] SET OF Authorisation-value   ,
    authorisations-contain           [13] Authorisation-value          ,
    accounts-equal                   [14] SET OF Account-value         ,
    accounts-contain                 [15] Account-value                ,
    permissions-equal                [16] SET OF Permission-value      ,
    permissions-contain              [17] Permission-value             ,
    security-parms-equal             [18] ANY                          ,
    subjob-name-list-equals          [19] SEQUENCE OF Subjob-name-value,
    subjob-name-list-first-of-list   [20] Subjob-name-value            ,
    relays-equal                     [21] SEQUENCE OF JTM-name-value   ,
    relays-contain                   [22] JTM-name                     ,
    relays-first-of-list             [23] JTM-name                     ,
    relays-last-of-list              [24] JTM-name                     ,
    target-equals                    [25] JTM-name                     ,
    urgency-equals                   [26] Urgency                      ,
    holds-equals                     [27] SET OF Hold-element-value    ,
    holds-contain                    [28] Hold-element-value           ,
    subjob-type-equals               [2]  Subjob-type                  ,
    se-lists-equal                   [29] SEQUENCE OF Se-identification-value,
    se-lists-contain                 [30] Se-identification-value      ,
    se-ref-lists-equal               [31] SEQUENCE OF Doc-se-reference-value ,
    se-ref-lists-contain             [32] Doc-se-reference-value       ,
    source-lists-equal               [33] SEQUENCE OF Source-identification-value, 
    source-lists-contain             [34] Source-identification-value ,
    source-ref-lists-equal           [35] SEQUENCE OF Doc-source-reference-value ,
    source-ref-lists-contain         [36] Doc-source-reference-value ,
    error-action-equals              [37] Error-action     ,
    time-waiting-equals              [38] INTEGER     ,
    time-waiting-gt                  [39] INTEGER     ,
    time-waiting-ge                  [40] INTEGER     ,
    time-waiting-lt                  [41] INTEGER     ,
    time-waiting-le                  [42] INTEGER     ,
    estimated-size-equals            [43] INTEGER     ,
    estimated-size-gt                [44] INTEGER     ,
    estimated-size-ge                [45] INTEGER     ,
    estimated-size-lt                [46] INTEGER     ,
    estimated-size-le                [47] INTEGER     }


Any-item ::=     [APPLICATION 2] NULL

JTM-name-value ::=     CHOICE  {Any-item , JTM-name }

Identification-value ::=     CHOICE
   {                       Any-item     ,
    open-system        [0] JTM-name     ,
    authority          [1] User-identification-authority ,
    user               [2] SEQUENCE
      {authority           [0] CHOICE { Any-item , User-identification-authority } ,
       id                  [1] CHOICE { Any-item , User-identification } }


Monitoring-spec-value ::=     SEQUENCE
   {monitor-specification     CHOICE { Any-item , [0] Monitor-spec-value } ,
    report-selector     CHOICE { Any-item , [1] Report-selector } }


Monitor-spec-value ::=     SEQUENCE
   {monitor-system-name     CHOICE { Any-item , [0] JTM-name } ,
    disposal-instructions     CHOICE
          {                    Any-item     ,
            disposal-data  [1] SEQUENCE
               {agency     CHOICE { Any-item , [0] Se-identification } ,
                doc-name     CHOICE { Any-item , [1] Document-se-reference } } ,
            keep           [2] NULL } }

Authorisation-value ::=     CHOICE
   {Any-item,
      SEQUENCE
      {id           [0] Identification-value ,
       validation     CHOICE
         {                       Any-item ,
          checked-index      [0] INTEGER ,
          password           [1] CHOICE
            {                        Any-item ,
             unset               [0] NULL ,
             graphics            [1] GraphicString ,
             binary              [2] OCTET STRING } } } }

Permission-value ::=     Identification-value

Account-value ::=     Authorisation-value

Hold-element-value ::= CHOICE
  { Any-item ,
    SEQUENCE
      { location CHOICE { Any-item , [0] JTM-name } ,
                     CHOICE
               {                       Any-item ,
               reason              [1] Message ,
               diagnostic-info     [2] Diagnostic-information } ,
        release-permission  [3] Identification OPTIONAL,
        release-time CHOICE
               {                     Any-item ,
                date-time       [4] GeneralizedTime ,
                time-of-day     [5] NumericString ( SIZE ( 4 ) ) ,
                time-interval   [6] INTEGER } } }

Subjob-name-value ::=     SEQUENCE
   { proforma-name       CHOICE { Any-item , GraphicString } ,
     qualifying-integer  CHOICE { Any-item , INTEGER } }

Se-identification-value ::=     CHOICE
   { Any-item     ,
     jtm-se        [0] SEQUENCE
         {se-name     CHOICE { Any-item , [0] Agency-name } ,
          agency-parameter             [1] Agency-parameter OPTIONAL ,
          agency-activity-label        [2] GraphicString OPTIONAL    ,
          se-prefix                    [3] Name-list OPTIONAL       ,
          additional-authorisations    [4] Additional-authorisations-value OPTIONAL },
    ftam-sink      [1] FTAM-name      }


Additional-authorisations-value ::= Additional-authorisations


Doc-se-reference-value ::=     CHOICE
   {                    Any-item     ,
    jtm-write-data   [0] SEQUENCE
      {document-name     CHOICE { Any-item , [0] Name-list} ,
       se-access-parameter     [1] Se-access-parameter OPTIONAL } ,
    ftam-write-data [1] [1] IMPLICIT
                         ISO8571-RFCI.WriteTransferSpecification }

Source-identification-value ::= CHOICE
   {                    Any-item     ,
    provider        [0] NULL     ,
    jtm-source      [1] SEQUENCE
       {source-name     CHOICE { Any-item, [0] Agency-name },
        agency-activity-label     [1] GraphicString OPTIONAL,
        agency-parameter          [2] Agency-parameter OPTIONAL ,
        additional-authorisations [3] Additional-authorisations-value  OPTIONAL },
    ftam-source     [2] FTAM-name}


Doc-source-reference-value ::= CHOICE
   {                 Any-item     ,
    jtm-read-data    [0] SEQUENCE
        {document-name     CHOICE { Any-item, [0] Name-list}     ,
         source-access-parameter      [1] Source-access-parameter OPTIONAL },
    ftam-read-data [1] [0] IMPLICIT ISO8571-RFCI.ReadTransferSpecification }

Update ::=     CHOICE
   {primary-monitor-set-to    [0] Monitoring-specification              ,
    secondary-monitors-set-to [1] SET OF Monitoring-specification       ,
    secondary-monitors-add    [2] Monitoring-specification              ,
    secondary-monitors-remove [3] Monitoring-specification-value        ,
    authorisations-add        [4] Authorisation-element ( WITH COMPONENTS 
          { ... , validation ( WITH COMPONENTS { ... , checked-index ABSENT } ) } ) ,
    permissions-add           [5] Permission-element                    ,
    permissions-remove        [6] Permission-element                    ,
    accounts-add              [7] Account-element ( WITH COMPONENTS 
          { ... , validation ( WITH COMPONENTS { ... , checked-index ABSENT } ) } ) ,
    relays-set-to             [8] SEQUENCE OF JTM-name                  ,
    target-set-to             [9] JTM-name                              ,
    urgency-set-to           [10] Urgency                               ,
    holds-set-to             [11] SET OF Hold-element ( WITH COMPONENTS
                             { ... , ( WITH COMPONENTS { ... , diagnostic-info ABSENT } ) } ) ,
    holds-add                [12] Hold-element ( WITH COMPONENTS 
                             { ... , ( WITH COMPONENTS { ... , diagnostic-info ABSENT } ) } ) ,
    holds-remove             [13] Hold-element-value                    ,
    se-lists-set-to          [14] SEQUENCE OF Se-identification         ,
    se-ref-lists-set-to      [15] SEQUENCE OF Document-se-reference     ,
    source-lists-set-to      [16] SEQUENCE OF Source-identification     ,
    source-ref-lists-set-to  [17] SEQUENCE OF Document-source-reference ,
    error-action-set-to      [18] Error-action                          }

Basic-work-manipulation-operations ::= Work-manipulation-operations
        ( SIZE ( 2 ) ) ( WITH COMPONENT ( INCLUDES Basic-work-operation ) )

Basic-work-operation ::= Work-operation
  ( WITH COMPONENTS { ... , select ( INCLUDES Basic-selector ) ,
                            modify ABSENT ,
                            display ( WITH COMPONENTS { brief ( "DISPLAY" ) } ) } )

Basic-selector ::= SEQUENCE
  { selector-form [0] [0] NULL ,
    test [1] [1] SEQUENCE
      { header-one [0] [0] osi-job-submission-system-equals<Field-test ,
        header-two [1] [1] SEQUENCE
          { header-one [0] [0] osi-jobname-equals<Field-test ,
            header-two [1] [0] subjob-type-equals<Field-test } } }
END

NOTE — The datatypes used in the "Selector" are the data-structures used in the "Transfer-element" datatype, transformed as follows :
  1. every non-OPTIONAL embedded datatype except a CHOICE or a datatype which is directly contained in a CHOICE, is replaced by a CHOICE of "Any-item" and the datatype;
  2. every embedded CHOICE has an additional component of "Any-item" added.

2.6.6.2 Semantic restrictions

A "Field-test" shall not contain structured values in which all components are the "Any-item" datatype.

In a "Work-manipulation-operations", the first "Work-operations" shall be a "Work-operations (WITH COMPONENTS {select})" and the last shall not be "Work-operations (WITH COMPONENTS {select})".

The literal ANY-ITEM, when in a <selector value> in a work specification within an open system where the corresponding datatype is OPTIONAL, shall be semantically equivalent to an omitted value. On transmission the value shall be omitted. On receipt, an omitted value shall be treated as ANY-ITEM.

2.6.7 Report-movement operation

2.6.7.1 Syntactic definitions

ISO8832-JTM DEFINITIONS IMPLICIT TAGS ::=
BEGIN
Report-movement-operation ::= SET OF SEQUENCE
   {monitor-indices     [0] SET OF INTEGER DEFAULT {0}     ,
    report              [1] Single-report     }

Single-report ::=     SEQUENCE
   {name-of-reporter        [0] JTM-name     ,
    time                    [1] Time-stamp     ,
                                COMPONENTS OF Subjob-identification ,
    event-identification    [9] CHOICE
      {normal-termination           [0] Event-parameters
                                       ( WITH COMPONENTS { text,spawn-count } ) ,
       manipulation-termination     [1] Event-parameters
                                       ( WITH COMPONENTS { text,spawn-count } ) ,
       abnormal-termination         [2] Event-parameters
                                       ( WITH COMPONENTS { text,spawn-count,errors
                                            ( WITH COMPONENT ( WITH COMPONENTS { ... ,
                                                   diagnostics ( WITH COMPONENTS { no-retry } )
                                        } ) ) } ) ,
       user-message                 [3] Event-parameters
                                       ( WITH COMPONENTS { text } ) ,
       creation                     [4] Event-parameters
                                       (WITH COMPONENTS {text,target-list,hold-state}) ,
       transfer                     [5] Event-parameters
                                       (WITH COMPONENTS {text,target-list,hold-state}) ,
       spawning                     [6] Event-parameters
                                       (WITH COMPONENTS {text,target-list,hold-state}) ,
       agency-acceptance            [7] Event-parameters
                                       (WITH COMPONENTS {text})     ,
       modification                 [8] Event-parameters
                                       (WITH COMPONENTS {text,target-list,hold-state,stop-signal}) ,
       error-diagnostic             [9] Event-parameters
                                       (WITH COMPONENTS {text,errors
                                            (WITH COMPONENT (WITH COMPONENTS {... ,
                                                 diagnostics (WITH COMPONENTS {no-retry}) })) } ) ,
       no-progress                 [10] Event-parameters
                                       (WITH COMPONENTS {text,errors
                                            (WITH COMPONENT (WITH COMPONENTS {... ,
                                                 diagnostics (WITH COMPONENTS {no-retry}) }))  }) ,
       accounting-data             [11] Event-parameters
                                       (WITH COMPONENTS {text,accounting-information}) ,
       not-supported-termination   [12] Event-parameters
                                       (WITH COMPONENTS {text,spawn-count}) ,
       violation-attempt           [13] Event-parameters
                                       (WITH COMPONENTS {text,security-data}) ,
       warning-report              [14] Event-parameters
                                       (WITH COMPONENTS {text,errors
                                            (WITH COMPONENT (WITH COMPONENTS {... ,
                                                  diagnostics (WITH COMPONENTS {warning}) })) }) }
Subjob-identification ::=     SEQUENCE
   {osi-job-submission-system   [2] JTM-name ,
    initiating-identification   [3] Identification ,
    initiating-time             [4] Time-stamp ,
    osi-job-name                [5] GraphicString ,
    osi-job-local-reference     [6] GraphicString ,
    subjob-name-list            [7] Subjob-name-list ,
    type                        [8] Subjob-type }

Event-parameters ::=     SEQUENCE
   {text                 [0] Message                                          ,
    spawn-count          [1] INTEGER (0..MAX)                        OPTIONAL ,
    errors               [2] SET OF Diagnostic-information           OPTIONAL ,
    target-list          [3] SEQUENCE
      {relays                 [0] SEQUENCE OF JTM-name OPTIONAL , 
       target                 [1] JTM-name     }                     OPTIONAL ,
    security-data        [4] SEQUENCE
      {audit-trace            [0] SEQUENCE OF Audit-element     ,
                              COMPONENTS OF Subjob-identification }  OPTIONAL ,
    hold-state           [5] CHOICE
      {not-held               [0] NULL     ,
       held                   [1] NULL     }                         OPTIONAL ,
    stop-signal          [6] CHOICE
      {stopped                [0] NULL     ,
       modified               [1] NULL     }                         OPTIONAL ,
    accounting-info      [7] Accounting-information                  OPTIONAL }

Diagnostic-information ::= SEQUENCE
   {generator-details    [0] CHOICE
      {source-details        [0] SEQUENCE
         {agency                 [0] Source-identification     ,
          doc-name               [1] Document-source-reference }  ,
       se-details            [1] SEQUENCE
         {agency                 [0] Se-identification         ,
          doc-name               [1] Document-se-reference     }  ,
       recipient-details     [2] JTM-name                         ,
       provider              [3] NULL                             }  ,
    when                 [1] Time-stamp                              ,
    diagnostics          [2] CCR-diagnostics                         }

Basic-report-movement-operations ::= Report-movement-operation
  ( WITH COMPONENT ( WITH COMPONENTS
       { monitor-indices ( { 0 } ) ,
         report ( WITH COMPONENTS { ... ,
             event-identification ( WITH COMPONENTS {
                normal-termination,
                manipulation-termination,
                abnormal-termination,
                user-message } ) } ) } ) )
END

2.6.8 Transfer-manipulation operations

ISO8832-JTM DEFINITIONS IMPLICIT TAGS ::=
BEGIN
Transfer-manipulation ::=     CHOICE
   {set          [0] Tcr-set-operation     ,
    check        [1] Tcr-check-operation     ,
    display      [2] Tcr-display-operation     }

Tcr-set-operation ::=     SEQUENCE
   {set-by           [0] JTM-name     ,
    recipient        [1] JTM-name     ,
    control-space    [2] Control-specification     }

Tcr-check-operation ::= SEQUENCE
   {checking-by      [0] JTM-name     ,
    recipient        [1] JTM-name     ,
    control-spec     [2] Control-specification     }

Tcr-display-operation ::=     SEQUENCE
   {     CHOICE
      {destination     [0] JTM-name   ,
       all             [1] NULL       }    ,
    doc-name           [2] Graphic-string  }

Control-specification ::=     CHOICE
   {uncontrolled     [0] NULL     ,
    selection        [1] SEQUENCE OF Selector }

END

2.6.9 Report-manipulation-operations

ISO8832-JTM DEFINITIONS IMPLICIT TAGS ::=
BEGIN
Report-manipulation ::=     CHOICE
   {delete         [0] Report-selection     ,
    display        [1] SEQUENCE
      {selection         [0] Report-selection     ,
       docname           [1] Graphic String     } }

Report-selection ::= SEQUENCE
   {submission-constraint        [0] JTM-name              OPTIONAL ,
    initiator-constraint         [1] Identification        OPTIONAL ,
    reference-constraint         [2] GraphicString         OPTIONAL ,
    jobname-constraint           [3] GraphicString         OPTIONAL ,
    subjob-constraint            [4] Subjob-name-list      OPTIONAL ,
    type-constraint              [5] Subjob-type           OPTIONAL ,
    event-constraint             [6] Report-selector       OPTIONAL ,
    initiating-time-constraint   [7] SEQUENCE
      {starting-time                 [0] Time-stamp ,
       finishing-time                [1] Time-stamp }      OPTIONAL }

END

2.7 Work-display, report-display and tcr-display documents

2.7.1 Syntactic definitions

ISO8832-JTM DEFINITIONS IMPLICIT TAGS ::=
BEGIN
Work-display-doc ::= [APPLICATION 4] SEQUENCE OF SEQUENCE
   {displaying-system    [0] JTM-name     ,
    time                 [1] Time-stamp     ,
    display              [2] SEQUENCE OF CHOICE
      {                      [0] Brief-display     ,
                             [1] Full-display     }}

Brief-display ::=     SEQUENCE
   {details                      [0] SEQUENCE
      {osi-job-submission-system     [0] JTM-name             ,
       initiating-identification     [1] Identification       ,
       initiating-time               [2] Time-stamp           ,
       osi-job-name                  [3] GraphicString        ,
       osi-job-local-reference       [4] GraphicString        ,
       subjob-name-list              [5] Subjob-name-list     ,
       type                          [6] Subjob-type          }  ,
    status                       [1] SET OF Destination-status   }


Full-display ::=     SEQUENCE
   {header-list      [0] SEQUENCE OF Header          ,
    status           [1] SET OF Destination-status   }
Header ::=     SEQUENCE
   {osi-job-submission-system           [0] JTM-name     ,
    initiating-identification           [1] Identification     ,
    initiating-time                     [2] Time-stamp     ,
    osi-job-name                        [3] Graphic String     ,
    osi-job-local-reference             [4] Graphic String     ,
    primary-monitoring-specifications   [5] Monitoring-specification ,
    secondary-monitoring-specifications [6] SEQUENCE OF
                                            Monitoring-specification OPTIONAL,
    authorisations                      [7] SET OF Authorisation-element ,
    permissions                         [8] SET OF Permission-element ,
    accounts                            [9] SET OF Account-element ,
    security-parameters                [10] ANY OPTIONAL ,
    subjob-name-list                   [11] subjob-name-list     ,
    relays                             [12] SEQUENCE OF JTM-name OPTIONAL ,
    target                             [13] JTM-name OPTIONAL     ,
    urgency                            [14] Urgency OPTIONAL     ,
    holds                              [15] SEQUENCE OF Hold-element
                                            OPTIONAL ,
    error-action                       [16] Error-action OPTIONAL     ,
    type                               [17] Subjob-type OPTIONAL     ,
    se-list                            [18] SEQUENCE OF Se-identification
                                            OPTIONAL ,
    se-ref-list                        [19] SEQUENCE OF Document-se-reference
                                            OPTIONAL     ,
    source-list                        [20] SEQUENCE OF Source-identification
                                            OPTIONAL     ,
    source-ref-list                    [21] SEQUENCE OF
                                            Document-source-reference
                                            OPTIONAL     ,
    time-waiting                       [22] INTEGER     ,
    estimated-size                     [23] INTEGER     }

Destination-status ::=     SEQUENCE
   {destination        [0] CHOICE
      {recipient           [0] JTM-name     ,   
       source-agency       [1] CHOICE
         {agency               [0] Agency-name     ,
            ftam [1] FTAM-name } } ,
       se-agency           [2] CHOICE
         {agency               [0] Agency-name     ,
          ftam                 [1] FTAM-name     } ,
    status             [1] CHOICE
      {in-progress         [0] Message     ,
       accepted            [1] Message     ,
       waiting             [2] SEQUENCE
         {                    [0] Message     ,
                              [1] retry-later<CCR-diagnostics OPTIONAL } },
    time               [2] Time-stamp     }

Basic-work-display ::= [APPLICATION 4] SEQUENCE OF SEQUENCE
  { displaying-system [0] JTM-name ,
    time              [1] Time-stamp ,
    display           [2] SEQUENCE OF [0] SEQUENCE
      { details           [0] SEQUENCE
          { osi-job-submission-system    [0] JTM-name ,
            initiating-identification    [1] Identification ,
            initiating-time              [2] Time-stamp ,
            osi-job-name                 [3] GraphicString ,
            osi-job-local-reference      [4] GraphicString ,
            subjob-name-list             [5] Subjob-name-list ,
            type                         [6] Subjob-type } ,
        status            [1] SET OF SEQUENCE
          { destination     [0] CHOICE
              { recipient           [0] JTM-name ,
                source-agency       [1] [0] Agency-name ,
                se-agency           [2] [0] Agency-name } ,
            status          [1] CHOICE
              { in-progress         [0] Message ,
                accepted            [1] Message ,
                waiting             [2] SEQUENCE
                  {                     [0] Message ,
                                        [1] retry-later<CCR-diagnostics OPTIONAL } } ,
            time            [2] Time-stamp } } }

Report-display-doc ::= [APPLICATION 5] SEQUENCE OF Report-display

Report-display ::=     SEQUENCE
   {monitor-system           [0] JTM-name     ,
    time-of-display          [1] Time-stamp     ,
                             [2] SEQUENCE OF Single-report }

Tcr-display-doc ::= [APPLICATION 6] SEQUENCE OF SEQUENCE
   {displaying-system        [0] JTM-name     ,
    time-of-display          [1] Time-stamp     ,
    controls                 [2] SEQUENCE OF Transfer-control-record     }

Transfer-control-record ::= SEQUENCE
   {set-by                   [0] JTM-name     ,
    time                     [1] Time-stamp     ,
    recipient                [2] JTM-name     ,
    control-spec             [3] Control-specification     }
END

2.7.2 Semantic restrictions

A "status" of "accepted" shall not occur unless the "destination" is "se-agency" and "se-agency" is "agency".

2.8 Summary of datatypes

In this summary, datatypes are in alphabetical order and are separated by blank lines. Where conflicts arise between this clause and earlier clauses, the earlier clauses take precedence.

ISO8832-JTM DEFINITIONS IMPLICIT TAGS ::=
BEGIN
Account-element ::=  Authorisation-element

Account-value ::=     Authorisation-value

Accounting-information ::= SET OF Charging-information

Additional-authorisations ::=     SEQUENCE
   {agency-password         [0] GraphicString OPTIONAL     ,
    agency-account          [1] Account-element OPTIONAL     ,
    agency-authorisation    [2] Authorisation-element OPTIONAL     }

Additional-authorisations-value ::= Additional-authorisations

Agency-name ::= GraphicString

Agency-parameter  ::=     CHOICE
   {none                    [0] NULL ,
    store                   [1] NULL ,
    agency-format           [2] GraphicString }

Any-item ::=     [APPLICATION 2] NULL

Application-entity-title ::= ACSE-1.AE-title

Audit-element ::=     SEQUENCE
   {sender        [0] JTM-name     ,
    status        [1] CHOICE
      {unknown           [0] NULL     ,
       known             [1] NULL     ,
       authenticated     [2] NULL     } }

Authorisation-element ::=     SEQUENCE
   {id               [0] Identification           ,
    validation       [1] CHOICE
      {checked-index    [0] INTEGER (1..MAX)    ,
       password         [1] CHOICE
         {unset            [0] NULL           ,
          graphics         [1] GraphicString  ,
          binary           [2] OCTET STRING   } } }

Authorisation-value ::=     CHOICE
   {Any-item,
      SEQUENCE
      {id           [0] Identification-value ,
       validation     CHOICE
         {                       Any-item ,
          checked-index      [0] INTEGER ,
          password           [1] CHOICE
            {                        Any-item ,
             unset               [0] NULL ,
             graphics            [1] GraphicString ,
             binary              [2] OCTET STRING } } } }

Basic-CCR-diagnostics ::= CCR-Diagnostics
        ( WITH COMPONENTS {warning
              ( WITH COMPONENT ( WITH COMPONENTS {...,reason} ) ) }
        | WITH COMPONENTS {no-retry
              ( WITH COMPONENT ( WITH COMPONENTS {...,reason} ) ) }
        | WITH COMPONENTS {retry-later
              ( WITH COMPONENT ( WITH COMPONENTS {...,reason} ) ) }
        )

Basic-JTM-action-parameters ::= JTM-action-parameters
  ( WITH COMPONENTS {
         document-movement ( INCLUDES Basic-document-movement-operations
                               ( INCLUDES Basic-top-level-document-movement ) ) ,
         work-manipulation ( INCLUDES Basic-work-manipulation-operations )       ,
         report-movement   ( INCLUDES Basic-report-movement-operations )         } )

Basic-document-movement ::= Document-movement
         ( WITH COMPONENTS  { ... ,
               ses ( SIZE ( 1 ) )
                   ( WITH COMPONENT { jtm-se ( WITH COMPONENTS { se-name } ) } ) ,
               document-block ( INCLUDES Basic-single-form ) } )

Basic-document-movement-operations ::= Document-movement-operation
                         ( SIZE ( 1 ) )
                         ( WITH COMPONENT ( INCLUDES Basic-document-movement ) )

Basic-document-pointer ::= Document-pointer  ( WITH COMPONENTS { ... ,
       single-document-reference ( WITH COMPONENTS { ... ,
            source ( WITH COMPONENTS {
                 provider ,
                 jtm-source ( WITH COMPONENTS { source-name } ) } ) ,
            doc-name ( WITH COMPONENTS {
                 jtm-read-data ( WITH COMPONENTS { document-name } ) } ) ,
            embedded-diagnostics ( WITH COMPONENTS { embed } ) } ) } } )

Basic-monitoring-specification ::= Monitoring-specification
  ( WITH COMPONENTS { monitor-specification ( WITH COMPONENTS
          { monitor-relays ABSENT ,
            monitor-system-name ,
            disposal-instructions ( WITH COMPONENTS
                 { ... , disposal-data ( WITH COMPONENTS
                      { agency ( WITH COMPONENTS { se-name } ) ,
                        doc-name ( WITH COMPONENTS
                            { ... , se-access-parameter  add<SeȘaccess-parameter } )
                      } ) } ) } ) ,
        report-selector } )

Basic-proforma ::= Proforma
  ( WITH COMPONENTS { ... ,
         spawning-control-data ABSENT ,
         demand-spawning-handles ABSENT ,
         ( WITH COMPONENTS { proforma-body ( INCLUDES Basic-proforma-specification ) } )
   } )

Basic-proforma-specification ::= Proforma-specification
   (WITH COMPONENTS
      {...     ,
       relays             ABSENT     ,
       type               ( WITH COMPONENTS  { document-movement } ) ,
       urgency            ( WITH COMPONENTS { medium } ) ,
       error-action       ( WITH COMPONENTS { terminate } ) ,
       holds              ABSENT     ,
       actions            ( WITH COMPONENTS
            { document-movement ( INCLUDES Basic-document-movement-operations ) }
       } )

Basic-report-movement-operations ::= Report-movement-operation
  ( WITH COMPONENT ( WITH COMPONENTS
       { monitor-indices ( { 0 } ) ,
         report ( WITH COMPONENTS { ... ,
             event-identification ( WITH COMPONENTS {
                normal-termination,
                manipulation-termination,
                abnormal-termination,
                user-message } ) } ) } ) )

Basic-selector ::= SEQUENCE
  { selector-form [0] [0] NULL ,
    test [1] [1] SEQUENCE
      { header-one [0] [0] osi-job-submission-system-equals<Field-test ,
        header-two [1] [1] SEQUENCE
          { header-one [0] [0] osi-jobname-equals<Field-test ,
            header-two [1] [0] subjob-type-equals<Field-test } } }

Basic-single-form ::= [2] Single-form ( WITH COMPONENTS {
      doc-name ( WITH COMPONENTS { jtm-write-data ( WITH COMPONENTS {
            document-name ,
            se-access-parameter ( WITH COMPONENTS { normal, add } ) } ) } ) ,
      docs ( SIZE ( 1 ) ) ( WITH COMPONENT ( INCLUDES Basic-document-pointer ) ) } )

Basic-subjob-type ::= Subjob-type
  ( WITH COMPONENTS { ... , tcr-manipulation ABSENT ,
                            report-manipulation ABSENT } )

Basic-top-level-document-movement ::= Basic-document-movement
   ( WITH COMPONENTS { ... ,
        document-block ( WITH COMPONENTS { ... ,
           docs ( WITH COMPONENT ( WITH COMPONENTS
               { single-document-reference ( WITH COMPONENTS { ... ,
                     state ( WITH COMPONENTS { failed } ) } ) } ) ) } ) }
   | WITH COMPONENTS {
        type ( { iso standard 8832 document(4) text(1) }
             | { iso standard 8832 document(4) print(2) }
             | { iso standard 8832 document(4) work-display(4) } ) ,
        ses ,
        document-block ( WITH COMPONENTS { ... ,
             docs ( WITH COMPONENT { embedded } ) } ) } )

Basic-transfer-element ::= Transfer-element
   ( WITH COMPONENTS
      { ...                                                                ,
       primary-monitoring-specification (INCLUDES Basic-monitoring-specification) ,
       secondary-monitoring-specification   ABSENT                         ,
       accounts                             ABSENT                         ,
       security-parameters                  ABSENT                         ,
       relays                               ABSENT                         ,
       type                                 (INCLUDES Basic-subjob-type)   ,
       urgency                              (WITH COMPONENTS {medium })    ,
       error-action                         (WITH COMPONENTS {terminate})  ,
       holds                                ABSENT                         ,
       actions                     (INCLUDES Basic-JTM-action-parameters)  ,
       proforma-list        ( SIZE ( 0 .. 1 ) )
                            ( WITH COMPONENT ( INCLUDES Basic-proforma ) ) }
    )

Basic-work-display ::= [APPLICATION 4] SEQUENCE OF SEQUENCE
  { displaying-system [0] JTM-name ,
    time              [1] Time-stamp ,
    display           [2] SEQUENCE OF [0] SEQUENCE
      { details           [0] SEQUENCE
          { osi-job-submission-system    [0] JTM-name ,
            initiating-identification    [1] Identification ,
            initiating-time              [2] Time-stamp ,
            osi-job-name                 [3] GraphicString ,
            osi-job-local-reference      [4] GraphicString ,
            subjob-name-list             [5] Subjob-name-list ,
            type                         [6] Subjob-type } ,
        status            [1] SET OF SEQUENCE
          { destination     [0] CHOICE
              { recipient           [0] JTM-name ,
                source-agency       [1] [0] Agency-name ,
                se-agency           [2] [0] Agency-name } ,
            status          [1] CHOICE
              { in-progress         [0] Message ,
                accepted            [1] Message ,
                waiting             [2] SEQUENCE
                  {                     [0] Message ,
                                        [1] retry-later<CCR-diagnostics OPTIONAL } } ,
            time            [2] Time-stamp } } }

Basic-work-manipulation-operations ::= Work-manipulation-operations
        ( SIZE ( 2 ) ) ( WITH COMPONENT ( INCLUDES Basic-work-operation ) )

Basic-work-operation ::= Work-operation
  ( WITH COMPONENTS { ... , select ( INCLUDES Basic-selector ) ,
                            modify ABSENT ,
                            display ( WITH COMPONENTS { brief ( “DISPLAY” ) } ) } )

Brief-display ::=     SEQUENCE
   {details                      [0] SEQUENCE
      {osi-job-submission-system     [0] JTM-name             ,
       initiating-identification     [1] Identification       ,
       initiating-time               [2] Time-stamp           ,
       osi-job-name                  [3] GraphicString        ,
       osi-job-local-reference       [4] GraphicString        ,
       subjob-name-list              [5] Subjob-name-list     ,
       type                          [6] Subjob-type          }  ,
    status                       [1] SET OF Destination-status   }

C-BEGIN-USER-DATA ::=     SET
   {commitment-level        [0] INTEGER (0..2)          ,
    diagnostic-code-indicator        [1] SEQUENCE OF
          -- Zero, one or more in the SEQUENCE
                                         Code-specifier  }

C-READY-USER-DATA ::=     SET
   {commitment-level        [0] INTEGER (0..2)     ,
    warnings                [1] warning<CCR-diagnostics OPTIONAL ,
    accounting-info         [2] Accounting-information OPTIONAL }

C-ROLLBACK-RI-USER-DATA ::= SET
   {diagnostic         [0] CHOICE
      {                       retry-later<CCR-diagnostics  ,
                              no-retry<CCR-diagnostics     } ,
    accounting-info    [1] Accounting-information OPTIONAL    }

CCR-diagnostics ::=     CHOICE
   {warning          [0] SET OF SET
      {generator         [0] JTM-name     ,
       code              [1] JTM-code     ,
                           CHOICE
          {reason        [2] Message     ,
           ftam-outcome  [3] CHOICE
              { [2] IMPLICIT ISO8571-RFCI.ReadTransferOutcome ,
                [3] IMPLICIT ISO8571-RFCI.WriteTransferOutcome } } } ,
          -- one or more in the SET OF --  ,
    no-retry         [1] SET OF SET
      {generator         [0] JTM-name  ,
       code              [1] JTM-code  ,
                           CHOICE
          {reason        [2] Message     ,
           ftam-outcome  [3] CHOICE
              { [2] IMPLICIT ISO8571-RFCI.ReadTransferOutcome ,
                [3] IMPLICIT ISO8571-RFCI.WriteTransferOutcome } } } ,
          -- one or more in the SET OF --  ,
    retry-later      [2] SET
      {retry-timer       [0] INTEGER OPTIONAL  ,
       retry-reason      [1] SET OF SET
         {generator         [0] JTM-name     ,
          code              [1] JTM-code     ,
                           CHOICE
          {reason        [2] Message     ,
           ftam-outcome  [3] CHOICE
              { [2] IMPLICIT ISO8571-RFCI.ReadTransferOutcome ,
                [3] IMPLICIT ISO8571-RFCI.WriteTransferOutcome } } } ,
          -- one or more in the SET OF --       } }

Charging-information ::=     SEQUENCE
   {identification     [0] Identification    ,
    resource-name      [1] GraphicString     ,
    charging-unit      [2] GraphicString     ,
    charge             [3] INTEGER            }

Code-specifier ::=     CHOICE
   {any-characters   [0] IMPLICIT NULL     ,
    code-sets        [1] IMPLICIT SET OF
                  -- one or more in the SET OF
                         INTEGER     }

Control-specification ::=     CHOICE
   {uncontrolled     [0] NULL     ,
    selection        [1] SEQUENCE OF Selector }

Demand-spawning-handle ::= GraphicString

Destination-status ::=     SEQUENCE
   {destination        [0] CHOICE
      {recipient           [0] JTM-name     ,
       source-agency       [1] CHOICE
         {agency               [0] Agency-name     ,
            ftam [1] FTAM-name } } ,
       se-agency           [2] CHOICE
         {agency               [0] Agency-name     ,
          ftam                 [1] FTAM-name     } ,
    status             [1] CHOICE
      {in-progress         [0] Message     ,
       accepted            [1] Message     ,
       waiting             [2] SEQUENCE
         {                    [0] Message     ,
                              [1] retry-later<CCR-diagnostics OPTIONAL } },
    time               [2] Time-stamp     }

Diagnostic-information ::= SEQUENCE
   {generator-details    [0] CHOICE
      {source-details        [0] SEQUENCE
         {agency                 [0] Source-identification     ,
          doc-name               [1] Document-source-reference }  ,
       se-details            [1] SEQUENCE
         {agency                 [0] Se-identification         ,
          doc-name               [1] Document-se-reference     }  ,
       recipient-details     [2] JTM-name                         ,
       provider              [3] NULL                             }  ,
    when                 [1] Time-stamp                              ,
    diagnostics          [2] CCR-diagnostics                         }

Doc-se-reference-value ::=     CHOICE
   {                    Any-item     ,
    jtm-write-data   [0] SEQUENCE
      {document-name     CHOICE { Any-item , [0] Name-list} ,
       se-access-parameter     [1] Se-access-parameter OPTIONAL } ,
    ftam-write-data [1] [1] IMPLICIT
                         ISO8571-RFCI.WriteTransferSpecification }

Doc-source-reference-value ::= CHOICE
   {                 Any-item     ,
    jtm-read-data    [0] SEQUENCE
        {document-name     CHOICE { Any-item, [0] Name-list}     ,
         source-access-parameter      [1] Source-access-parameter OPTIONAL },
    ftam-read-data [1] [0] IMPLICIT ISO8571-RFCI.ReadTransferSpecification }

Document-movement ::=     SEQUENCE
   {type            [0] OBJECT IDENTIFIER     ,
    type-parameters  [4] ANY DEFINED BY type OPTIONAL
                         -- to be filled by the ASN.1 type defined for PARAMETERS in
                         -- the document type register entry identified by “type”
    ses              [1] SEQUENCE OF Se-identification     ,
    document-block     CHOICE
      {single-form   [2] Single-form     ,
       multiple-form [3] Multiple-form     }}

Document-movement-operations ::= SEQUENCE OF Document-movement

Document-pointer ::=     CHOICE
   {embedded                  [0] NULL     ,
    single-document-reference [1] SEQUENCE
      {action-open-system        [0] JTM-name     ,
       source                    [1] Source-identification          ,
       doc-name                  [2] Document-source-reference ,
       embedded-diagnostics      [3] Embedded-diagnostics ,
       state                     [4] CHOICE
         {not-attempted              [0] NULL     ,
          failed                     [1] SEQUENCE
            {time                        [0] Time-stamp     ,
             diagnostics                 [1] no-retry<CCR-diagnostics }}}}

Document-se-reference ::=     CHOICE
   {jtm-write-data        [0] SEQUENCE
      {document-name           [0] Name-list     ,
       se-access-parameter     [1] Se-access-parameter }               ,
    ftam-write-data       [1] [1] IMPLICIT ISO8571-RFCI.WriteTransferSpecification }

Document-separator ::= [APPLICATION 1] IMPLICIT NULL

Document-source-reference ::=     CHOICE
   {jtm-read-data      [0] SEQUENCE
      {document-name           [0]  Name-list     ,
       source-access-parameter [1] Source-access-parameter OPTIONAL     } ,
    ftam-read-data [1] [0] IMPLICIT ISO8571-RFCI.ReadTransferSpecification }

Embedded-diagnostics ::=     CHOICE
   {embed        [0] NULL     ,
    error        [1] NULL     }

Error-action ::= CHOICE
   {terminate     [0] NULL     ,
    hold          [1] INTEGER     }

Event-parameters ::=     SEQUENCE
   {text                 [0] Message                                          ,
    spawn-count          [1] INTEGER (0..MAX)                        OPTIONAL ,
    errors               [2] SET OF Diagnostic-information           OPTIONAL ,
    target-list          [3] SEQUENCE
      {relays                 [0] SEQUENCE OF JTM-name OPTIONAL ,
       target                 [1] JTM-name     }                     OPTIONAL ,
    security-data        [4] SEQUENCE
      {audit-trace            [0] SEQUENCE OF Audit-element     ,
                              COMPONENTS OF Subjob-identification }  OPTIONAL ,
    hold-state           [5] CHOICE
      {not-held               [0] NULL     ,
       held                   [1] NULL     }                         OPTIONAL ,
    stop-signal          [6] CHOICE
      {stopped                [0] NULL     ,
       modified               [1] NULL     }                         OPTIONAL ,
    accounting-info      [7] Accounting-information                  OPTIONAL }

FTAM-name ::= Application-entity-title

Field-test ::=     CHOICE
   {osi-job-submission-system-equals [0]  JTM-name                     ,
    initiating-identification-equals [3] Identification-value         ,
    osi-jobname-equals               [1]  GraphicString                ,
    osi-job-local-reference-equals   [4] GraphicString                ,
    audit-trace-equals               [5] SEQUENCE OF JTM-name-value   ,
    audit-trace-contains             [6] JTM-name                     ,
    audit-trace-first-of-list-is     [7] JTM-name                     ,
    audit-trace-last-of-list-is      [8] JTM-name                     ,
    primary-monitor-equals           [9] Monitoring-spec-value        ,
    secondary-monitors-equals        [10] SET OF Monitoring-spec-value ,
    secondary-monitors-contains      [11] Monitoring-spec-value        ,
    authorisations-equal             [12] SET OF Authorisation-value   ,
    authorisations-contain           [13] Authorisation-value          ,
    accounts-equal                   [14] SET OF Account-value         ,
    accounts-contain                 [15] Account-value                ,
    permissions-equal                [16] SET OF Permission-value      ,
    permissions-contain              [17] Permission-value             ,
    security-parms-equal             [18] ANY                          ,
    subjob-name-list-equals          [19] SEQUENCE OF Subjob-name-value,
    subjob-name-list-first-of-list   [20] Subjob-name-value            ,
    relays-equal                     [21] SEQUENCE OF JTM-name-value   ,
    relays-contain                   [22] JTM-name                     ,
    relays-first-of-list             [23] JTM-name                     ,
    relays-last-of-list              [24] JTM-name                     ,
    target-equals                    [25] JTM-name                     ,
    urgency-equals                   [26] Urgency                      ,
    holds-equals                     [27] SET OF Hold-element-value    ,
    holds-contain                    [28] Hold-element-value           ,
    subjob-type-equals               [2]  Subjob-type                  ,
    se-lists-equal                   [29] SEQUENCE OF Se-identification-value,
    se-lists-contain                 [30] Se-identification-value      ,
    se-ref-lists-equal               [31] SEQUENCE OF Doc-se-reference-value ,
    se-ref-lists-contain             [32] Doc-se-reference-value       ,
    source-lists-equal               [33] SEQUENCE OF Source-identification-value,
    source-lists-contain             [34] Source-identification-value ,
    source-ref-lists-equal           [35] SEQUENCE OF Doc-source-reference-value ,
    source-ref-lists-contain         [36] Doc-source-reference-value ,
    error-action-equals              [37] Error-action     ,
    time-waiting-equals              [38] INTEGER     ,
    time-waiting-gt                  [39] INTEGER     ,
    time-waiting-ge                  [40] INTEGER     ,
    time-waiting-lt                  [41] INTEGER     ,
    time-waiting-le                  [42] INTEGER     ,
    estimated-size-equals            [43] INTEGER     ,
    estimated-size-gt                [44] INTEGER     ,
    estimated-size-ge                [45] INTEGER     ,
    estimated-size-lt                [46] INTEGER     ,
    estimated-size-le                [47] INTEGER     }

Full-display ::=     SEQUENCE
   {header-list      [0] SEQUENCE OF Header          ,
    status           [1] SET OF Destination-status   }

Header ::=     SEQUENCE
   {osi-job-submission-system           [0] JTM-name     ,
    initiating-identification           [1] Identification     ,
    initiating-time                     [2] Time-stamp     ,
    osi-job-name                        [3] Graphic String     ,
    osi-job-local-reference             [4] Graphic String     ,
    primary-monitoring-specifications   [5] Monitoring-specification ,
    secondary-monitoring-specifications [6] SEQUENCE OF
                                            Monitoring-specification OPTIONAL,
    authorisations                      [7] SET OF Authorisation-element ,
    permissions                         [8] SET OF Permission-element ,
    accounts                            [9] SET OF Account-element ,
    security-parameters                [10] ANY OPTIONAL ,
    subjob-name-list                   [11] subjob-name-list     ,
    relays                             [12] SEQUENCE OF JTM-name OPTIONAL ,
    target                             [13] JTM-name OPTIONAL     ,
    urgency                            [14] Urgency OPTIONAL     ,
    holds                              [15] SEQUENCE OF Hold-element
                                            OPTIONAL ,
    error-action                       [16] Error-action OPTIONAL     ,
    type                               [17] Subjob-type OPTIONAL     ,
    se-list                            [18] SEQUENCE OF Se-identification
                                            OPTIONAL ,
    se-ref-list                        [19] SEQUENCE OF Document-se-reference
                                            OPTIONAL     ,
    source-list                        [20] SEQUENCE OF Source-identification
                                            OPTIONAL     ,
    source-ref-list                    [21] SEQUENCE OF
                                            Document-source-reference
                                            OPTIONAL     ,
    time-waiting                       [22] INTEGER     ,
    estimated-size                     [23] INTEGER     }

Header-test ::=     CHOICE
   {                  [0] Field-test     ,
    and-clause        [1] SEQUENCE
      {header-one           [0] Header-test     ,
       header-two           [1] Header-test     },
    not-clause        [2] Header-test     ,
    or-clause         [3] SEQUENCE
      {header-one           [0] Header-test     ,
       header-two           [1] Header-test     },
    success           [4] NULL     ,
    fail              [5] NULL     }

Hold-element ::=     SEQUENCE
   {location           [0] JTM-name     ,
                     CHOICE
      {reason            [1] Message        ,
       diagnostic-info   [2] Diagnostic-information },
    release-permission [3] Identification  OPTIONAL     ,
    release-time     CHOICE
      {date-time         [4] GeneralizedTime     ,
       time-of-day       [5] NumericString ( SIZE ( 4 ) ) ,
       time-interval     [6] INTEGER     }}

Hold-element-value ::= CHOICE
  { Any-item ,
    SEQUENCE
      { location CHOICE { Any-item , [0] JTM-name } ,
                     CHOICE
               {                       Any-item ,
               reason              [1] Message ,
               diagnostic-info     [2] Diagnostic-information } ,
        release-permission  [3] Identification OPTIONAL,
        release-time CHOICE
               {                     Any-item ,
                date-time       [4] GeneralizedTime ,
                time-of-day     [5] NumericString ( SIZE ( 4 ) ) ,
                time-interval   [6] INTEGER } } }

Identification ::=     CHOICE
   {open-system      [0] JTM-name     ,
    authority        [1] User-identification-authority ,
    user             [2] SEQUENCE
      {authority        [0] User-identification-authority ,
       id               [1] User-identification     }}

Identification-value ::=     CHOICE
   {                       Any-item     ,
    open-system        [0] JTM-name     ,
    authority          [1] User-identification-authority ,
    user               [2] SEQUENCE
      {authority           [0] CHOICE { Any-item , User-identification-authority } ,
       id                  [1] CHOICE { Any-item , User-identification } }

JTM-action-parameters ::=     CHOICE
   {document-movement         [0] Document-movement-operations ,
    work-manipulation         [1] Work-manipulation-operations ,
    report-movement           [2] Report-movement-operation    ,
    tcr-manipulation          [3] Transfer-manipulation        ,
    report-manipulation       [4] Report-manipulation          }

JTM-code ::=     SEQUENCE
   {jtm-user-code     CHOICE
      {absent                                [0]  NULL     ,
       user-defined                          [1]  EXTERNAL } ,
                      CHOICE
    {sf-not-supported                        [0]  NULL     ,
     ue-unauthorised-access                  [1]  NULL     ,
     ue-unauthorised-reporting               [2]  NULL     ,
     ue-no-document                          [3]  NULL     ,
     ue-agency-unknown                       [4]  NULL     ,
     ue-no-agency-document                   [5]  NULL     ,
     ue-no-authorisation-for-transfer        [6]  NULL     ,
     ue-site-unknown                         [7]  NULL     ,
     ue-disposal-error                       [8]  NULL     ,
     w-document-name-changed                 [9]  NULL     ,
     ua-killed-by-manipulation               [10] NULL     ,
     sf-protocol-error                       [11] NULL     ,
     sf-transmission-failure                 [12] NULL     ,
     sf-too-large                            [13] NULL     ,
     rl-incoming-concurrency-limit           [14] NULL     ,
     rl-timeout                              [15] NULL     ,
     rl-transmission-attempt                 [16] NULL     ,
     rl-access-to-agency-document            [17] NULL     ,
     rl-document-disposal                    [18] NULL     ,
     rl-manipulation-in-progress             [19] NULL     ,
     rl-agency-concurrency-limit             [20] NULL     ,
     rl-transmission-concurrency-limit       [21] NULL     ,
     rl-internally-busy                      [22] NULL     ,
     sf-repeated-retries                     [23] NULL     ,
     ue-monitor-site-unknown                 [24] NULL     ,
     sf-incorrect-report-routing             [25] NULL     ,
     sf-incorrect-monitor-name               [26] NULL     ,
     sf-context-not-available                [27] NULL     ,
     sf-transmission-error                   [28] NULL     ,
     ue-no-agency-activity                   [29] NULL     ,
     ue-document-already-exists              [30] NULL     ,
     ue-document-does-not-exist              [31] NULL     ,
     ue-empty-directory                      [32] NULL     ,
     ue-proforma-not-present                 [33] NULL     ,
     ue-site-basic-class-only                [34] NULL     ,
     ue-ftam-not-supported                   [35] NULL     ,
     ue-no-ftam-document                     [36] NULL     ,
     ue-ftam-disposal-error                  [37] NULL     ,
     w-ftam-warning                          [38] NULL     ,
     sf-monitor-point-storage-not-supported  [39] NULL     ,
     sf-transfer-control-not-supported       [40] NULL     ,
     sf-transfer-manipulation-not-supported  [41] NULL     ,
     ue-commitment-and-holds-incompatible    [42] NULL     ,
     ue-no-authority-to-remove-permission    [43] NULL     ,
     ue-wrong-number-se-lists                [44] NULL     ,
     ue-wrong-number-se-ref-lists            [45] NULL     ,
     ue-wrong-number-source-lists            [46] NULL     ,
     ue-wrong-number-source-ref-lists        [47] NULL     ,
     ue-invalid-modification                 [48] NULL     ,
     ue-no-tcr-authorisation                 [49] NULL     ,
     ue-document-reference-not-satisfied     [50] NULL     ,
     sf-implementation-failure               [51] NULL
                                                           } }

JTM-name ::= Application-entity-title

JTM-name-value ::=     CHOICE  {Any-item , JTM-name }

Message ::= SEQUENCE SIZE (1..MAX) OF GraphicString (SIZE (0..40))

Monitor-spec ::= SEQUENCE
   {monitor-relays        [20] SEQUENCE OF JTM-name OPTIONAL     ,
    monitor-system-name   [0] JTM-name     ,
    disposal-instructions           CHOICE
      {disposal-data      [1] SEQUENCE
         { agency             [0] jtm-se<Se-identification ,
           doc-name           [1] jtm-write-data<Document-se-reference     },
       keep               [2] NULL     } }

Monitor-spec-value ::=     SEQUENCE
   {monitor-system-name     CHOICE { Any-item , [0] JTM-name } ,
    disposal-instructions     CHOICE
          {                    Any-item     ,
            disposal-data  [1] SEQUENCE
               {agency     CHOICE { Any-item , [0] Se-identification } ,
                doc-name     CHOICE { Any-item , [1] Document-se-reference } } ,
            keep           [2] NULL } }

Monitoring-spec-value ::=     SEQUENCE
   {monitor-specification     CHOICE { Any-item , [0] Monitor-spec-value } ,
    report-selector     CHOICE { Any-item , [1] Report-selector } }

Monitoring-specification ::= SEQUENCE
   {monitor-specification   [0] Monitor-spec     ,
    report-selector         [1] Report-selector     }

Multiple-form  ::=  SEQUENCE
   {action-open-system        [0] JTM-name     ,
    doc-se-skeleton           [1] jtm-write-data<Document-se-reference ,
    source                    [2] jtm-source<Source-identification ,
    doc-source-skeleton       [3] jtm-read-data<Document-source-reference ,
    embed-diagnostics         [4] Embedded-diagnostics ,
    document-selector         [5] CHOICE
      {empty                      [0] NULL     ,
       local-string               [1] GraphicString     }}

Name-list ::= SEQUENCE OF GraphicString

Permission-element ::=     Identification

Permission-value ::=     Identification-value

Proforma ::=     SEQUENCE
   {proforma-name           [0] GraphicString                          ,
    spawning-control-data   [2] CHOICE
      {demand-only              [0] NULL     ,
       acceptance               [1] NULL     ,
       completion               [2] NULL     ,
       conditional              [3] NULL      } DEFAULT completion     ,
    demand-spawning-handles [3] SET OF Demand-spawning-handle OPTIONAL ,
                            CHOICE
      {proforma-reference   [4] GraphicString         ,
       proforma-body        [1] Proforma-specification }                }

Proforma-specification ::=     SEQUENCE
   {                    COMPONENTS OF Subjob-specification (WITH COMPONENTS
                          { ... , actions ( WITH COMPONENTS
                                 { ... , report-movement ABSENT } ) } ) ,
    proforma-list   [1] SEQUENCE OF Proforma                     }

Report-display ::=     SEQUENCE
   {monitor-system           [0] JTM-name     ,
    time-of-display          [1] Time-stamp     ,
                             [2] SEQUENCE OF Single-report }

Report-display-doc ::= [APPLICATION 5] SEQUENCE OF Report-display

Report-manipulation ::=     CHOICE
   {delete         [0] Report-selection     ,
    display        [1] SEQUENCE
      {selection         [0] Report-selection     ,
       docname           [1] Graphic String     } }

Report-movement-operation ::= SET OF SEQUENCE
   {monitor-indices     [0] SET OF INTEGER DEFAULT {0}     ,
    report              [1] Single-report     }

Report-selection ::= SEQUENCE
   {submission-constraint        [0] JTM-name              OPTIONAL ,
    initiator-constraint         [1] Identification        OPTIONAL ,
    reference-constraint         [2] GraphicString         OPTIONAL ,
    jobname-constraint           [3] GraphicString         OPTIONAL ,
    subjob-constraint            [4] Subjob-name-list      OPTIONAL ,
    type-constraint              [5] Subjob-type           OPTIONAL ,
    event-constraint             [6] Report-selector       OPTIONAL ,
    initiating-time-constraint   [7] SEQUENCE
      {starting-time                 [0] Time-stamp ,
       finishing-time                [1] Time-stamp }      OPTIONAL }

Report-selector ::= BIT STRING
   {normal-termination           (0)     ,
    manipulation-termination     (1)     ,
    abnormal-termination         (2)     ,
    user-message                 (3)     ,
    creation                     (4)     ,
    transfer                     (5)     ,
    spawning                     (6)     ,
    agency-acceptance            (7)     ,
    modification                 (8)     ,
    error-diagnostic             (9)     ,
    no-progress                  (10)    ,
    accounting-data              (11)    ,
    not-supported-termination    (12)    ,
    violation-attempt            (13)    ,
    warning-report               (14)    }

Se-access-parameter ::=     CHOICE
   {normal                    [0] NULL     ,
    add                       [1] NULL     ,
    new                       [2] NULL     ,
    old                       [3] NULL     ,
    append                    [4] NULL     }

Se-identification ::=     CHOICE
   {jtm-se                 [0] SEQUENCE
      {se-name                     [0] Agency-name     ,
       agency-parameter            [1] Agency-parameter  DEFAULT none     ,
       agency-activity-label       [2] GraphicString OPTIONAL     ,
       se-prefix                   [3] Name-list OPTIONAL     ,
       additional-authorisations   [4] Additional-authorisations OPTIONAL },
    ftam-sink              [1] FTAM-name     }

Se-identification-value ::=     CHOICE
   { Any-item     ,
     jtm-se        [0] SEQUENCE
         {se-name     CHOICE { Any-item , [0] Agency-name } ,
          agency-parameter             [1] Agency-parameter OPTIONAL ,
          agency-activity-label        [2] GraphicString OPTIONAL    ,
          se-prefix                    [3] Name-list OPTIONAL       ,
          additional-authorisations    [4] Additional-authorisations-value OPTIONAL },
    ftam-sink      [1] FTAM-name      }

Selector ::=               SEQUENCE
   {selector-form          [0] CHOICE
      {first-header-is           [0] NULL  ,
       contains-header           [1] NULL ,
       does-not-contain-header   [2] NULL ,
       header-is                 [3] NULL }     ,
    test                   [1] Header-test       }

Single-form ::=     SEQUENCE
   {doc-name                [0] Document-se-reference ,
    docs                    [1] SEQUENCE OF Document-pointer }

Single-report ::=     SEQUENCE
   {name-of-reporter        [0] JTM-name     ,
    time                    [1] Time-stamp     ,
                                COMPONENTS OF Subjob-identification ,
    event-identification    [9] CHOICE
      {normal-termination           [0] Event-parameters
                                       ( WITH COMPONENTS { text,spawn-count } ) ,
       manipulation-termination     [1] Event-parameters
                                       ( WITH COMPONENTS { text,spawn-count } ) ,
       abnormal-termination         [2] Event-parameters
                                       ( WITH COMPONENTS { text,spawn-count,errors
                                            ( WITH COMPONENT ( WITH COMPONENTS { ... ,
                                                   diagnostics ( WITH COMPONENTS { no-retry } )
                                        } ) ) } ) ,
       user-message                 [3] Event-parameters
                                       ( WITH COMPONENTS { text } ) ,
       creation                     [4] Event-parameters
                                       (WITH COMPONENTS {text,target-list,hold-state}) ,
       transfer                     [5] Event-parameters
                                       (WITH COMPONENTS {text,target-list,hold-state}) ,
       spawning                     [6] Event-parameters
                                       (WITH COMPONENTS {text,target-list,hold-state}) ,
       agency-acceptance            [7] Event-parameters
                                       (WITH COMPONENTS {text})     ,
       modification                 [8] Event-parameters
                                       (WITH COMPONENTS {text,target-list,hold-state,stop-signal}) ,
       error-diagnostic             [9] Event-parameters
                                       (WITH COMPONENTS {text,errors
                                            (WITH COMPONENT (WITH COMPONENTS {... ,
                                                 diagnostics (WITH COMPONENTS {no-retry}) })) } ) ,
       no-progress                 [10] Event-parameters
                                       (WITH COMPONENTS {text,errors
                                            (WITH COMPONENT (WITH COMPONENTS {... ,
                                                 diagnostics (WITH COMPONENTS {no-retry}) }))  }) ,
       accounting-data             [11] Event-parameters
                                       (WITH COMPONENTS {text,accounting-information}) ,
       not-supported-termination   [12] Event-parameters
                                       (WITH COMPONENTS {text,spawn-count}) ,
       violation-attempt           [13] Event-parameters
                                       (WITH COMPONENTS {text,security-data}) ,
       warning-report              [14] Event-parameters
                                       (WITH COMPONENTS {text,errors
                                            (WITH COMPONENT (WITH COMPONENTS {... ,
                                                  diagnostics (WITH COMPONENTS {warning}) })) }) }

Source-access-parameter ::=     CHOICE
   {move        [0] NULL     ,
    copy        [1] NULL     }

Source-identification ::=     CHOICE
   {provider          [0] NULL     ,
    jtm-source        [1] SEQUENCE
      {source-name               [0] Agency-name     ,
       agency-activity-label     [20] GraphicString OPTIONAL     ,
       agency-parameter          [21] Agency-parameter OPTIONAL     ,
       additional-authorisations [22] Additional-authorisations OPTIONAL },
    ftam-source      [21] FTAM-name}

Source-identification-value ::= CHOICE
   {                    Any-item     ,
    provider        [0] NULL     ,
    jtm-source      [1] SEQUENCE
       {source-name     CHOICE { Any-item, [0] Agency-name },
        agency-activity-label     [1] GraphicString OPTIONAL,
        agency-parameter          [2] Agency-parameter OPTIONAL ,
        additional-authorisations [3] Additional-authorisations-value  OPTIONAL },
    ftam-source     [2] FTAM-name}

Subjob-identification ::=     SEQUENCE
   {osi-job-submission-system   [2] JTM-name ,
    initiating-identification   [3] Identification ,
    initiating-time             [4] Time-stamp ,
    osi-job-name                [5] GraphicString ,
    osi-job-local-reference     [6] GraphicString ,
    subjob-name-list            [7] Subjob-name-list ,
    type                        [8] Subjob-type }

Subjob-name-list ::= SEQUENCE OF SEQUENCE
   {proforma-name            GraphicString     ,
    qualifying-integer       INTEGER (0..MAX)   }

Subjob-name-value ::=     SEQUENCE
   { proforma-name       CHOICE { Any-item , GraphicString } ,
     qualifying-integer  CHOICE { Any-item , INTEGER } }

Subjob-specification ::=     SEQUENCE
   {relays                    [25] SEQUENCE OF JTM-name OPTIONAL      ,
    target                    [20] JTM-name                           ,
    type                      [21] Subjob-type                        ,
    urgency                   [22] Urgency                            ,
    error-action              [23] Error-action                       ,
    holds                     [26] SEQUENCE OF Hold-element OPTIONAL  ,
    actions                   [24] JTM-action-parameters              }

Subjob-type ::=     CHOICE
   {document-movement         [0] NULL     ,
    work-manipulation         [1] NULL     ,
    report-movement           [2] NULL     ,
    tcr-manipulation          [3] NULL     ,
    report-manipulation       [4] NULL     }

Tcr-check-operation ::= SEQUENCE
   {checking-by      [0] JTM-name     ,
    recipient        [1] JTM-name     ,
    control-spec     [2] Control-specification     }

Tcr-display-doc ::= [APPLICATION 6] SEQUENCE OF SEQUENCE
   {displaying-system        [0] JTM-name     ,
    time-of-display          [1] Time-stamp     ,
    controls                 [2] SEQUENCE OF Transfer-control-record     }

Tcr-display-operation ::=     SEQUENCE
   {     CHOICE
      {destination     [0] JTM-name   ,
       all             [1] NULL       }    ,
    doc-name           [2] Graphic-string  }

Tcr-set-operation ::=     SEQUENCE
   {set-by           [0] JTM-name     ,
    recipient        [1] JTM-name     ,
    control-space    [2] Control-specification     }

Time-stamp ::=     CHOICE
   {not-available    [0] NULL     ,
    time             [1] GeneralizedTime     }

Transfer-control-record ::= SEQUENCE
   {set-by                   [0] JTM-name     ,
    time                     [1] Time-stamp     ,
    recipient                [2] JTM-name     ,
    control-spec             [3] Control-specification     }

Transfer-element ::= [APPLICATION 0] SEQUENCE
   {osi-job-submission-system          [0] JTM-name                      ,
    initiating-identification          [1] Identification                ,
    initiating-time                    [2] Time-stamp                    ,
    osi-job-name                       [3] GraphicString                 ,
    osi-job-local-reference            [4] GraphicString                 ,
    audit-trace                        [5] SEQUENCE OF Audit-element     ,
    primary-monitoring-specification   [6] Monitoring-specification      ,
    secondary-monitoring-specification [11] SEQUENCE OF
                                            Monitoring-specification OPTIONAL ,
    authorisations                     [7] SET OF Authorisation-element    ,
    permissions                        [8] SET OF Permission-element       ,
    accounts                           [12] SET OF Account-element OPTIONAL ,
    security-parameters                [13] ANY OPTIONAL                    ,
    subjob-name-list                   [9] Subjob-name-list
                     (WITH COMPONENT (WITH COMPONENTS {..., qualifying-integer (1..MAX)})) ,
                                            COMPONENTS OF
                                            Subjob-specification           ,
    proforma-list                      [10] SEQUENCE OF Proforma           }

Transfer-manipulation ::=     CHOICE
   {set          [0] Tcr-set-operation     ,
    check        [1] Tcr-check-operation     ,
    display      [2] Tcr-display-operation     }

Update ::=     CHOICE
   {primary-monitor-set-to    [0] Monitoring-specification              ,
    secondary-monitors-set-to [1] SET OF Monitoring-specification       ,
    secondary-monitors-add    [2] Monitoring-specification              ,
    secondary-monitors-remove [3] Monitoring-specification-value        ,
    authorisations-add        [4] Authorisation-element ( WITH COMPONENTS
          { ... , validation ( WITH COMPONENTS { ... , checked-index ABSENT } ) } ) ,
    permissions-add           [5] Permission-element                    ,
    permissions-remove        [6] Permission-element                    ,
    accounts-add              [7] Account-element ( WITH COMPONENTS
          { ... , validation ( WITH COMPONENTS { ... , checked-index ABSENT } ) } ) ,
    relays-set-to             [8] SEQUENCE OF JTM-name                  ,
    target-set-to             [9] JTM-name                              ,
    urgency-set-to           [10] Urgency                               ,
    holds-set-to             [11] SET OF Hold-element ( WITH COMPONENTS
                             { ... , ( WITH COMPONENTS { ... , diagnostic-info ABSENT } ) } ) ,
    holds-add                [12] Hold-element ( WITH COMPONENTS
                             { ... , ( WITH COMPONENTS { ... , diagnostic-info ABSENT } ) } ) ,
    holds-remove             [13] Hold-element-value                    ,
    se-lists-set-to          [14] SEQUENCE OF Se-identification         ,
    se-ref-lists-set-to      [15] SEQUENCE OF Document-se-reference     ,
    source-lists-set-to      [16] SEQUENCE OF Source-identification     ,
    source-ref-lists-set-to  [17] SEQUENCE OF Document-source-reference ,
    error-action-set-to      [18] Error-action                          }

Urgency ::= CHOICE
   {low        [0] NULL     ,
    medium     [1] NULL     ,
    high       [2] NULL     }

User-identification ::= GraphicString

User-identification-authority ::= Application-entity-title

Work-display-doc ::= [APPLICATION 4] SEQUENCE OF SEQUENCE
   {displaying-system    [0] JTM-name     ,
    time                 [1] Time-stamp     ,
    display              [2] SEQUENCE OF CHOICE
      {                      [0] Brief-display     ,
                             [1] Full-display     }}

Work-manipulation-operations ::= SEQUENCE OF Work-operation

Work-operation ::=     CHOICE
   {select        [0] Selector     ,
    kill          [1] NULL     ,
    stop          [2] NULL     ,
    modify        [4] Update     ,
    display             CHOICE
      { brief [3] GraphicString ,
        full  [5] GraphicString } }

END
Forward to Section 3 : JTM procedures Return to top of Section 2 : JTM datatypes Up to contents Warning on status of this document