MainframeMaster

CICS Business Transaction Services (BTS) Management

Business Transaction Services (BTS) is a CICS feature that enables the management of long-running business processes that may span multiple transactions, tasks, or even system boundaries. It provides a framework for building reliable, stateful business applications.

What is BTS?

BTS extends traditional CICS transaction processing by supporting:

  • Long-running business processes
  • Persistent storage across transactions
  • Automatic recovery and compensation
  • Workflow orchestration
  • Event-driven processing

Unlike traditional CICS transactions that are typically short-lived, BTS business processes can run for minutes, hours, or even days, maintaining state throughout their execution.

Key BTS Concepts

Business Process (BP)

A business process is a formal description of a business activity that involves multiple steps, participants, and decision points. It defines the flow of work and data through a business operation.

Activity

An activity is a single unit of work within a business process. Activities can be:

  • Synchronous - completes before continuing
  • Asynchronous - starts and continues independently
  • Manual - requires human intervention
  • Compensating - undoes a previous activity

Persistent Containers

BTS provides persistent containers that survive task termination and can be shared across different activities and processes. These store intermediate results and state information.

Processing Context

Each activity runs within a processing context that includes:

  • Business process instance identifier
  • Activity instance identifier
  • Processing state information
  • Compensation and recovery data

BTS Commands

Activity Management

Create and manage business process activities:

cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
* Create an activity EXEC CICS DEFINE ACTIVITY('PROCESS-ORDER') END-EXEC. * Start an activity EXEC CICS ACTIVITY('PROCESS-ORDER') PROCESS('ORDER-BP') ACTIVITYID('ORD-001') END-EXEC. * Connect to an existing activity EXEC CICS CONNECT PROCESS('ORDER-BP') ACTIVITYID('ORD-001') END-EXEC. * Delete an activity EXEC CICS DELETE ACTIVITY('PROCESS-ORDER') END-EXEC.

Container Operations in BTS

Work with persistent containers in BTS:

cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
* Create a BTS container EXEC CICS PUT CONTAINER('ORDER-DATA') FROM(WS-CUSTOMER-ORDER) FLENGTH(LENGTH OF WS-CUSTOMER-ORDER) BTS(BTS-CONTEXT) END-EXEC. * Retrieve a BTS container EXEC CICS GET CONTAINER('ORDER-DATA') INTO(WS-CUSTOMER-ORDER) BTS(BTS-CONTEXT) END-EXEC. * Delete a BTS container EXEC CICS DELETE CONTAINER('ORDER-DATA') BTS(BTS-CONTEXT) END-EXEC.

Business Process Lifecycle

1. Process Definition

Business processes are defined in CSD using CEDA commands:

cobol
1
2
3
4
5
CEDA DEFINE PROC(BUSINESS-BP) GROUP(BTS-GROUP) DEFINE ACTIVITY(PROCESS-DATA) PROGRAM(DATA-PROG) DEFINE ACTIVITY(SEND-MESSAGE) PROGRAM(NOTIFY-PROG) DEFINE ACTIVITY(COMPENSATE-ORDER) PROGRAM(REVERSE-PROG) CEDA INSTALL GROUP(BTS-GROUP)

2. Process Instance Creation

Individual instances of a business process are created when the process is started:

cobol
1
2
3
4
EXEC CICS START PROCESS('ORDER-BUSINESS-BP') FROM('ORDER-CREATION-START') CHANNEL('BP-CHANNEL') END-EXEC.

3. Activity Execution

Activities execute within the business process context, accessing shared state and containers:

cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
PROGRAM DIVISION. LINAGE SECTION. USING BTS-CONTEXT. PROCEDURE DIVISION. * Access BTS context SET CONTAINER-FUNCTION TO TRUE * Retrieve process data PERFORM GET-ORDER-DATA * Process business logic PERFORM PROCESS-ORDER * Store results PERFORM PUT-RESULTS * Signal completion or failure PERFORM SIGNAL-EVENT.

4. Process Completion

Processes complete when all activities finish or when explicit termination occurs:

cobol
1
2
3
EXEC CICS SIGNAL EVENT('ORDER-PROCESSED') BTS(BTS-CONTEXT) END-EXEC.

BTS Programming Model

BTS-Aware Programs

Programs that participate in business processes must be BTS-aware:

cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
PROGRAM-ID. ORDER-PROCESSOR IS PROCESSING PROGRAM. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT CUSTOMER-FILE ASSIGN TO CUSTOMER. WORKING-STORAGE SECTION. 01 WS-BTS-FLAGS. 02 BTS-FUNCTION PIC X(1). 88 CONTAINER-FUNCTION VALUE 'Y'. 88 SIGNAL-FUNCTION VALUE 'S'. 88 COMPENSATE-FUNCTION VALUE 'C'. 01 WS-BTS-CONTEXT PIC X(200). PROCEDURE DIVISION USING WS-BTS-FLAGS WS-BTS-CONTEXT. IF BTS-FUNCTION PERFORM PROCESS-BTS-REQUEST EXEC CICS RETURN END-EXEC END-IF. PROCESS-BTS-REQUEST. PERFORM HANDLE-CONTAINER-REQUEST PERFORM HANDLE-SIGNAL-REQUEST PERFORM HANDLE-COMPENSATE-REQUEST.

Activity Programs

Activity programs handle specific business logic within a process:

cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
PROGRAM-ID. ORDER-VALIDATOR IS PROCESSING PROGRAM. WORKING-STORAGE SECTION PIC X(200). 01 BTS-CONTEXT. PROCEDURE DIVISION USING BTS-CONTEXT. * Validate customer order PERFORM VALIDATE-CUSTOMER-ID PERFORM VALIDATE-PRODUCT-AVAILABILITY PERFORM CHECK-PAYMENT-METHOD IF VALIDATION-SUCCESS EXEC CICS RETURN VALUE DFHRESP(NORMAL) END-EXEC ELSE EXEC CICS GETMAIN SET(WS-MESSAGE-PTR) LENGTH(100) END-EXEC EXEC CICS RETURN VALUE DFHRESP(ABEND) END-EXEC END-IF.

Error Handling and Recovery

Compensation

BTS provides automatic compensation capabilities to undo completed activities:

cobol
1
2
3
4
5
6
7
8
9
PROGRAM-ID. ORDER-REVERSE IS PROCESSING PROGRAM. PROCEDURE DIVISION USING POLICY-NAME BTS-CONTEXT. * This program runs automatically if a subsequent activity fails PERFORM REVERSE-CUSTOMER-CHARGES PERFORM RESTORE-INVENTORY-LEVELS PERFORM SEND-CANCELLATION-NOTICE EXEC CICS RETURN VALUE DFHRESP(NORMAL) END-EXEC.

Recovery

BTS supports graceful recovery from failures:

  • Automatic retry with exponential backoff
  • Human intervention for manual activities
  • Compensation for completed activities
  • Restart from the last successful checkpoint

BTS vs Traditional CICS

FeatureTraditional CICSBTS
Transaction DurationSeconds to minutesMinutes to days
State PersistenceTask-scopedProcess-scoped
Failure HandlingManual restartAutomatic compensation
Data SharingCOMMAREA/ChannelsPersistent Containers
ComplexitySimpleHigher

Best Practices

1. Design for Compensation

Every activity that modifies external systems should have a corresponding compensating activity to undo that work.

2. Use Checkpoints Wisely

Set appropriate checkpoint intervals to balance recovery time with processing overhead:

cobol
1
2
3
EXEC CICS DEFINE ACTIVITY('UPDATE-INV' CHECKPOINT('AFTER-EACH-ITEM') END-EXEC.

3. Minimize State Complexity

Keep BTS containers simple and focused. Avoid complex nested structures that are difficult to recover.

4. Design Idempotent Activities

Activities should be safe to restart or re-run without causing duplicate effects:

cobol
1
2
3
4
5
6
7
8
9
10
* Check if work was already completed EXEC CICS GET CONTAINER('WORK-COMPLETED') INTO(WS-STATUS-FLAG) BTS(BTS-CONTEXT) RESP(WS-RESPONSE) END-EXEC. IF WS-RESPONSE = DFHRESP(NORMAL) AND WS-STATUS-FLAG = 'Y' EXEC CICS RETURN END-EXEC * Already done END-IF.

5. Handle Long-Running Processes

For processes that run hours or days:

  • Use asynchronous activities where possible
  • Implement proper timeout handling
  • Monitor process progress
  • Provide manual intervention capabilities

Monitoring BTS

CICS Explorer BTS Views

CICS Explorer provides specialized views for monitoring BTS:

  • Business Process List - View running and completed processes
  • Activity Summary - Show activity execution status
  • Container Browser - Examine process data
  • Error Logs - Troubleshoot problems

CEMT BTS Commands

Use CEMT to monitor and control BTS:

cobol
1
2
3
CEMT INQUIRE BP(BUSINESS-PROCS) STATUS(RUNNING) CEMT INQUIRE ACTIVITY(*) STATUS(ACTIVE) CEMT DISCARD BP(ALL-DEFINED)

Common BTS Patterns

Order Processing Pattern

Typical order processing business process:

  1. Validate Order Data
  2. Check Inventory Availability
  3. Reserve Inventory
  4. Charge Customer
  5. Ship Order
  6. Update Records

Approval Pattern

Business process requiring human approval:

cobol
1
2
3
4
5
6
7
* Activity requiring manual intervention EXEC CICS DEFINE ACTIVITY('APPROVE-EXPENSE') TYPE(MANUAL) END-EXEC. * Human reviews expense in CICS Explorer * When approved or rejected, activity signals completion

Saga Pattern

Distributed transaction pattern implemented in BTS:

  1. Execute multiple system operations
  2. If any operation fails, compensate all completed operations
  3. Ensure business consistency without distributed locking

Troubleshooting BTS

Common Issues

Process Hanging

When business processes fail to progress:

  • Check for failed activities using CEMT INQUIRE ACTIVITY
  • Review BTS error messages in log
  • Verify all required containers are present
  • Ensure activity programs are available and accessible

Container Issues

Troubleshooting container-related problems:

cobol
1
2
CEMT INQUIRE CONTAINER(*) * Shows all accessible containers for current context

Recovery Problems

When automatic recovery fails:

  • Check compensation program availability
  • Verify external system status
  • Manually restart or compensate activities
  • Review checkpoint frequency