sqlplus Exit 0 Lies to AutoSys — Wrapper Pattern Fix
sqlplus returns exit 0 on SQL syntax errors while your database sits unchanged for months.
20+ years shipping production infrastructure and CI/CD at scale. Drawn from code that ran under real load.
- ✓Deep production experience
- ✓Understanding of internals and trade-offs
- ✓Experience debugging complex systems
- SAP integration uses job_type: s and the SAPXPBP interface. Requires XBP user with S_XBP_ADM and S_BTCH_ADM authorisations.
- Oracle EBS integration uses job_type: o to submit concurrent programs. Requires EBS agent and concurrent manager setup.
- Oracle Database integration uses CMD + sqlplus. The trap: sqlplus exits 0 even on SQL errors. Add 'WHENEVER SQLERROR EXIT SQL.SQLCODE'.
- The 5-step pattern: File Watcher → Database load → Stored proc → SAP job → Email report. AutoSys orchestrates across all systems.
- Production failure: SAP XBP user locked after password expiry. Jobs stay PENDING. No error in AutoSys logs. Always involve Basis team in user management.
This article addresses a specific, insidious failure mode in enterprise job scheduling: when an AutoSys job wrapping an Oracle sqlplus call or an SAP process exits with code 0 despite the underlying work failing. The core problem is that sqlplus, by default, returns exit code 0 even when a SQL script encounters a runtime error (like a constraint violation or a PL/SQL exception) unless you explicitly trap and propagate the error.
AutoSys, which relies on exit codes to determine job success or failure, sees the 0 and marks the job as successful — a 'silent saboteur' that lets data corruption or incomplete processing fly under the radar for hours or days.
In the SAP/Oracle integration space, this pattern is especially dangerous. AutoSys communicates with SAP via the SAPXPBP interface (a C-based program that wraps SAP's external program interface), and with Oracle through its native database job type or generic command jobs.
Both interfaces inherit the same exit-code vulnerability: a failed SAP transaction or a hung Oracle session can produce a zero exit code if the wrapper script doesn't explicitly check for application-level success. The article walks through practical integration patterns — like wrapping sqlplus calls with WHENEVER SQLERROR EXIT SQL.SQLCODE and implementing a 'Dead Man's Trigger' pattern in AutoSys that uses a sentinel file or a status table to verify actual completion, not just process exit.
You'll also see why AutoSys can't kill stuck Oracle sessions it can't see — because the job already exited 0, the session lives on as an orphan. The fix involves restructuring your AutoSys job definitions to use a wrapper script that performs explicit error checking, logs to a monitored file, and only exits 0 after confirming the work is done.
This is not theoretical; it's a pattern used in production environments at Fortune 500 companies running SAP on Oracle with AutoSys as the scheduler, where a single uncaught sqlplus error can cascade into a multi-hour data reconciliation nightmare.
SAP and Oracle are the big enterprise ERP systems where payroll, finance, and HR live. AutoSys can reach into these systems and trigger processes inside them — like pressing a button inside SAP from outside SAP — and then wait for them to finish before doing the next thing.
AutoSys orchestrates across SAP, Oracle, file systems, and databases in one workflow. That's the value proposition.
The mechanics are simple: special job types for SAP ('s') and Oracle EBS ('o'), plus regular CMD jobs for sqlplus. But the failure modes are not obvious.
sqlplus exits 0 even when your SQL has a syntax error. SAP XBP users expire and jobs silently wait. Oracle EBS concurrent programs return 'Success' even when the program logic failed. This article covers the integration patterns and the gotchas that don't appear in the docs.
Why sqlplus Exit 0 Is a Silent Saboteur in AutoSys SAP/Oracle Jobs
AutoSys integration with SAP and Oracle typically relies on sqlplus to run database scripts. The core mechanic: AutoSys treats exit code 0 as success. But sqlplus returns exit code 0 even when a SQL script fails — if the failure is inside the script (e.g., a PL/SQL exception caught by an exception handler, or a DML error that doesn't abort the session). This means a job can report success in AutoSys while the database operation actually failed.
In practice, sqlplus only returns non-zero for connection failures or fatal errors before script execution begins. Once the script runs, sqlplus exits 0 regardless of SQL errors unless you explicitly check SQLCODE or SQL%ROWCOUNT. This is not a bug — it's by design. The consequence: AutoSys sees exit 0, marks the job green, and downstream processes proceed with corrupted data or incomplete state.
Use this wrapper pattern when you need AutoSys to accurately reflect the true outcome of an Oracle operation. It matters in any SAP/Oracle integration where a failed SQL step must halt the workflow — financial reconciliations, inventory updates, or batch job chains. Without it, you get silent data drift that surfaces hours later as a production incident.
AutoSys and SAP — the SAPXPBP interface
AutoSys integrates with SAP R/3 and S/4HANA through the SAP XBP (External Background Processing) interface, also called SAPXPBP. This allows AutoSys to: - Submit SAP background jobs (ABAP programs, reports) - Monitor SAP job status and intercept completion events - Chain SAP jobs with non-SAP jobs in the same workflow
The SAP agent (a specialised AutoSys agent) handles the communication with the SAP application server. Behind the scenes, it uses RFC calls to the XBP function module.
Critical: The XBP user account must have specific authorisations (S_XBP_ADM, S_BTCH_ADM). If the password expires or the account locks, AutoSys jobs will stay PENDING forever with no error in AutoSys logs. The only signal is 'job not starting'.
/* SAP job type — triggers an ABAP program in SAP */ insert_job: PRD_SAP_FI_EOD_CLOSE job_type: s /* 's' = SAP job type */ sap_server_name: PRDSAP /* SAP system/instance name */ sap_report_name: RFBIBL00 /* ABAP report to run */ sap_report_variant: EOD_VARIANT /* variant (parameter set) */ sap_client: 100 /* SAP client number */ machine: sap-agent-server-01 /* machine with SAP agent installed */ owner: sapbatch date_conditions: 1 days_of_week: mon-fri start_times: "18:00" condition: success(PRD_TRADING_LOAD_DAILY) /* runs after trading load */ alarm_if_fail: 1 description: "SAP FI end-of-day period close" /* SAP job with external command (optional) */ sap_external_command: Y_AUTOSYS_CALLBACK /* RFC callback after completion */
AutoSys and Oracle — database job types
AutoSys can trigger Oracle stored procedures, SQL scripts, and Oracle E-Business Suite (EBS) concurrent programs. The approach depends on whether you're calling Oracle Database directly or Oracle ERP application layer.
For Oracle Database: The most common method is a CMD job calling sqlplus. But sqlplus has a fatal flaw: it returns exit code 0 even on SQL errors. You cannot trust its exit code alone.
For Oracle EBS: Use job_type: 'o' to submit concurrent programs directly. This sends the request to Oracle EBS concurrent manager. AutoSys tracks submission success, but not execution success. The concurrent program can fail after start and AutoSys will still show SUCCESS.
/* Method 1: CMD job calling sqlplus with proper error handling */ insert_job: PRD_ORA_RECONCILE_DAILY job_type: CMD command: "/usr/bin/sqlplus_wrapper.sh batchuser/pass@ORCL /scripts/oracle/reconcile.sql" machine: db-server-01 owner: orabatch condition: success(PRD_TRADING_LOAD_DAILY) alarm_if_fail: 1 std_out_file: /logs/autosys/PRD_ORA_RECONCILE_DAILY.out std_err_file: /logs/autosys/PRD_ORA_RECONCILE_DAILY.err /* sqlplus_wrapper.sh content */ #!/bin/bash sqlplus -s $1 @$2 > sqlplus.out 2>&1 if grep -qi 'ORA-\|SP2-\|PLS-' sqlplus.out; then echo "SQL error detected" cat sqlplus.out exit 1 fi exit 0 /* Method 2: Oracle E-Business Suite concurrent program */ insert_job: PRD_ORA_EBS_PAYROLL job_type: o /* 'o' = Oracle EBS job type */ oebs_server_name: PRDEBS oebs_responsibility: GL_SUPER_USER oebs_program_short_name: XLAFSNAPR oebs_argument1: 2026 oebs_argument2: 03 machine: oebs-agent-server owner: ebsbatch alarm_if_fail: 1 std_out_file: /logs/autosys/PRD_ORA_EBS_PAYROLL.out
Practical integration patterns
The most common enterprise AutoSys flow that involves SAP and Oracle typically looks like this: 1. File Watcher detects upstream data file (trade file from external counterparty) 2. CMD jobs load data into staging database (Oracle external table or SQL*Loader) 3. Oracle stored procedure processes data, validates, transforms 4. SAP job runs the period-close or posting ABAP report (using validated data) 5. CMD job generates confirmation report and emails finance team
All five steps are orchestrated by AutoSys with dependency conditions between each step — if any step fails, everything downstream stops and the team is alerted.
Production pattern: Add a validation job after each ERP call. For SAP, check that the XBP user is active before submitting. For Oracle, verify that the stored procedure actually processed rows (check output table counts). Never assume success.
/* Complete 5-step enterprise workflow */ /* Step 1: File Watcher */ insert_job: FW_WATCH_TRADE_FILE job_type: FW watch_file: /data/inbound/trades_*.csv min_file_size: 1024 machine: landing-server run_window: "06:00 - 20:00" /* Step 2: Load to staging */ insert_job: CMD_LOAD_STAGING job_type: CMD command: /scripts/load_trades_to_staging.sh machine: db-server condition: success(FW_WATCH_TRADE_FILE) /* Step 3: Oracle stored procedure */ insert_job: ORA_VALIDATE_TRADES job_type: CMD command: /scripts/oracle_wrapper.sh @/sql/validate_trades.sql machine: db-server condition: success(CMD_LOAD_STAGING) std_out_file: /logs/validate_trades.out /* Step 4: SAP month-end close */ insert_job: SAP_MONTH_CLOSE job_type: s sap_server_name: PRDSAP sap_report_name: Z_MONTH_CLOSE sap_client: 100 machine: sap-agent condition: success(ORA_VALIDATE_TRADES) /* Step 5: Confirmation email */ insert_job: CMD_SEND_REPORT job_type: CMD command: /scripts/send_confirmation.sh machine: mail-server condition: success(SAP_MONTH_CLOSE) alarm_if_fail: 1 on all jobs
The 'Dead Man's Trigger' Pattern — Why Your SAP Job Failed Silently (And How to Fix It)
Your AutoSys SAP job exits 0 but the data is trash. The warehouse report is wrong. Nobody knows until Monday. You just got burned by the dead man's trigger pattern.
SAP's CPI-C listener doesn't crash when the R/3 layer chokes. It holds the connection open and returns a clean termination code. AutoSys sees exit 0 and marks the job SUCCESS. No alert fires.
The fix is brutal but simple: wrap every SAPXPBP job with a control file that the post-processing step must validate. Before the SAP release, write a sentinel timestamp into a scratch table. When the batch completes, write another. Your downstream job checks that both exist and the delta is under 300 seconds.
Don't trust SAP's return code. Trust a handshake you control. I've seen this burn teams at three different SAP shops. On the fourth, I wrote the pattern below. It's held clean for 18 months.
// io.thecodeforge — devops tutorial // Pre-job: write start sentinel pre_sentinel: command: "sqlplus batch/sync@ORCL @write_sentinel.sql START" exit_codes: [0] timeout: 30 // Main SAP job via SAPXPBP sap_extract: job_type: SAPXPBP sap_job_name: Z_DAILY_GEN_REPORT sap_server: PROD_AP_SERVER sap_client: "800" max_retries: 1 ok_codes: [0, 1] // trap partial exit // Post job: validate handshake post_sentinel: command: "sqlplus batch/sync@ORCL @check_sentinel_pulse.sql" exit_codes: [0] timeout: 60 on_failure: "force_fail"
Oracle Stuck Sessions — AutoSys Can't Kill What It Can't See
Your AutoSys job times out after four hours. The Oracle session is still alive, holding a lock on S_BRANCH_TX. The next run deadlocks. Your only option is login, find the SID, kill it. That's a 3 AM wakeup.
AutoSys sees the OS child process die. But Oracle's listener is still talking to a zombie session on the DB side. The job agent reports 'cancelled by timeout', but the database server never got the signal.
Solution: embed a kill session guard in the job wrapper. Before the job starts, query v$session for any sessions with the same job name and module active for > 30 minutes. Kill them. Then run your script. On timeout, the wrapper logs the SID, captures the blocking chain, and kills it before exiting.
This pattern cut my pager duty incidents by 40% at a previous client. The wrapper is the bouncer. Never let a dead job's ghost session hold your tables hostage.
// io.thecodeforge — devops tutorial // Pre-job cleanup — kill old sessions pre_cleanup: command: | sqlplus -s admin/rover@pdb1 <<'EOF' BEGIN FOR r IN ( SELECT sid, serial# FROM v$session WHERE module = 'BATCH_PAYROLL' AND status = 'INACTIVE' AND last_call_et > 1800 ) LOOP EXECUTE IMMEDIATE 'ALTER SYSTEM KILL SESSION ''' || r.sid || ',' || r.serial# || ''' IMMEDIATE'; END LOOP; END; / exit_codes: [0, 1] ignore_failure: true main_job: command: "/scripts/run_payroll_pkg.sh" timeout: 3600 on_timeout: - command: "sqlplus admin/rover@pdb1 @kill_blocking_sessions.sql" - command: "echo 'Timeout triggered. Cleanup executed.'"
Training That Doesn't Teach You How to Fail — AutoSys + SAP/Oracle Bootcamps Worth Your Time
Most training on AutoSys integration with SAP and Oracle is vendor fluff — click-ops tutorials that dodge the real failures. You don't need to know how to submit a job; you need to know why it silently died at 3 AM. That requires hands-on debugging of sqlplus exit codes, SAPXPBP interface quirks, and Oracle session kill logic.
Skip the generic AutoSys admin courses. Focus on training that includes a live SAP system with testable XPBP triggers and an Oracle RAC environment where you can reproduce stuck sessions. The best programs force you to trace job failures end-to-end — from the jil file to the database alert log — and explain the kernel-level behaviors behind each failure mode.
Look for training from Broadcom's official curriculum or vendor-neutral deep-dives from people who've run production SAP/Oracle for at least five years. If the instructor hasn't personally debugged a Dead Man's Trigger failure, walk away. The only training worth your time is the kind that breaks things first, then teaches you to fix them.
// io.thecodeforge — devops tutorial criteria: - vendor: "Broadcom" course: "AutoSys Workload Automation for SAP" depth: "Covers SAPXPBP error handling, not just job submission" - live_lab: true includes: - Oracle RAC with stuck session scenarios - SAP system with intentional XPBP failure triggers - failure_debugging: true topics: - sqlplus exit codes beyond 0/1 - Dead Man's Trigger pattern - session kill cascade failures - red_flags: - "No live Oracle database access" - "Only shows happy path job submission" - "Instructor has no production SAP/Oracle experience"
Certification That Actually Tells Recruiters You Can Fix a Dead Job — Not Just Click a GUI
The AutoSys certification market is crowded with paper certs that test your ability to memorize jil syntax. If you're integrating SAP and Oracle, you need the certification that proves you understand process chain interactions, not just job scheduling. Broadcom's AutoSys Workload Automation certification (exam 250-561) is the only one that tests on advanced scenarios like XPBP timeout handling and Oracle job type internals.
For SAP-specific credibility, pair it with the SAP Certified Application Associate — SAP S/4HANA or SAP BW/4HANA certification. That combo shows you can navigate SM37 to trace job failures and understand why an AutoSys-triggered SAP job returns a cryptic XPBP return code. For Oracle, get the Oracle Database 19c OCP. It forces you to know session management, which is exactly what you need when AutoSys gets stuck on a hanging Oracle job.
Don't waste money on generic ITIL or PMP certifications for this work. They won't help you debug a stuck Oracle session at 2 AM. The three certs that matter: Broadcom 250-561, SAP S/4HANA, and Oracle 19c OCP. Anything else is padding on your resume, not evidence of skill.
// io.thecodeforge — devops tutorial certifications: - primary: "Broadcom 250-561" focus: "AutoSys Workload Automation — advanced SAP/Oracle job types" exam_topics: - XPBP interface failure handling - Oracle job type exit code analysis - Dead Man's Trigger configuration - sap: "SAP Certified Application Associate - S/4HANA" reason: "Can trace XPBP failures via SM37 and SM21" - database: "Oracle Database 19c OCP" why: "Teaches session management, lock troubleshooting, and kill operations" - skip: - "ITIL Foundation" - "PMP" - "Generic AutoSys Administrator (no SAP/Oracle focus)"
The sqlplus 'Success' That Was Actually a Syntax Error
sqlplus user/pass@DB @/scripts/update_proc.sql. The SQL script had a syntax error — a missing semicolon. sqlplus parsed the script, printed 'SP2-0042: unknown command', then exited with code 0. AutoSys saw code 0 and marked the job SUCCESS.
The database never executed the stored procedure call because the script didn't parse. No rows were updated. The DBA team never saw an error because the job 'succeeded' from AutoSys's perspective.WHENEVER SQLERROR EXIT SQL.SQLCODE
WHENEVER OSERROR EXIT 9
2. Also check for parsing errors: WHENEVER SQLERROR EXIT SQL.SQLCODE catches runtime errors. For syntax errors, sqlplus exits 0 unless you use -r option? Actually, syntax errors still return 0. The real fix: wrap sqlplus in a shell script that checks for 'ORA-' or 'SP2-' in the output and exits non-zero.
3. Example wrapper:
``bash
sqlplus -s user/pass@DB @script.sql > sqlplus.out 2>&1
if grep -qi 'ORA-\|SP2-' sqlplus.out; then
echo "SQL error detected"
exit 1
fi
`
4. Always set std_out_file and std_err_file` in the job definition to capture sqlplus output.- sqlplus returns 0 on success AND on SQL errors. Never trust it alone.
- Wrap sqlplus in a script that checks output for error patterns.
- WHENEVER SQLERROR EXIT SQL.SQLCODE helps but doesn't catch syntax errors.
- Capture stdout and stderr to files and inspect them in monitoring.
autoping -m sap-agentCheck with SAP Basis: SUIM → User → XBP user statuscat $AUTOUSER/std_out_files/JOBNAME.outgrep -i 'ORA-\|SP2-' $AUTOUSER/std_out_files/JOBNAME.out# On EBS app server: ls -la $APPLCSF/$APPLLOG/*.logtail -100 $APPLCSF/$APPLLOG/request_<request_id>.logtelnet sap-app-server 3300Check SM59 → RFC destination in SAP GUI| Integration target | Job type code | What AutoSys can do | Failure detection | Prerequisite |
|---|---|---|---|---|
| SAP R/3 / S/4HANA | s (SAP) | Submit ABAP jobs, monitor completion via RFC | Silent — PENDING if XBP user fails | SAP agent + XBP user with S_XBP_ADM |
| Oracle EBS | o (Oracle) | Submit concurrent programs, monitor request ID | Partial — tracks submission, not execution | Oracle EBS agent installed |
| Oracle Database (sqlplus) | CMD (sqlplus) | Run SQL scripts, call stored procs | Broken — sqlplus returns 0 on errors | sqlplus client + wrapper script |
| Oracle Database (wrapper) | CMD (custom) | Run SQL with error checking | Full — exits non-zero on ORA- | Wrapper script + AutoSys std_out capture |
| File | Command / Code | Purpose |
|---|---|---|
| sap_job.jil | /* SAP job type — triggers an ABAP program in SAP */ | AutoSys and SAP |
| oracle_job.jil | /* Method 1: CMD job calling sqlplus with proper error handling */ | AutoSys and Oracle |
| integration_pattern.jil | /* Complete 5-step enterprise workflow */ | Practical integration patterns |
| SAPDeadMansTrigger.yml | pre_sentinel: | The 'Dead Man's Trigger' Pattern |
| OracleSessionKiller.yml | pre_cleanup: | Oracle Stuck Sessions |
| autosys-bootcamp-checklist.yml | criteria: | Training That Doesn't Teach You How to Fail |
| certification-roadmap.yml | certifications: | Certification That Actually Tells Recruiters You Can Fix a Dead Job |
Key takeaways
Common mistakes to avoid
5 patternsCalling sqlplus directly without error checking wrapper
Not coordinating SAP XBP user lifecycle with Basis team
Assuming Oracle EBS concurrent program success means business logic succeeded
Not capturing sqlplus stdout/stderr in AutoSys files
Chaining SAP job directly after Oracle job without validation
Interview Questions on This Topic
How does AutoSys integrate with SAP?
What is the SAP XBP interface?
What job type code is used for SAP jobs in JIL?
insert_job: SAP_MONTH_CLOSE
job_type: s
sap_server_name: PRDSAP
sap_report_name: Z_MONTH_CLOSE
sap_report_variant: STANDARD
sap_client: 100
machine: sap-agent-server
``
Other ERP job types: 'o' for Oracle EBS concurrent programs, 'c' for PeopleSoft (legacy), and standard 'CMD' for database sqlplus calls.How do you call an Oracle stored procedure from AutoSys?
bash
#!/bin/bash
sqlplus -s user/pass@DB <<EOF > sqlplus.out 2>&1
WHENEVER SQLERROR EXIT SQL.SQLCODE;
BEGIN
my_stored_proc(:param1, :param2);
COMMIT;
END;
/
EXIT;
EOF
if grep -qi 'ORA-' sqlplus.out; then
echo "Database error detected"
cat sqlplus.out
exit 1
fi
exit 0
``
Critical: sqlplus returns exit code 0 even on SQL errors. Always wrap it with error detection. The wrapper must grep for ORA-, SP2-, PLS- patterns and exit non-zero when found.What is the gotcha with sqlplus and exit codes in AutoSys?
WHENEVER SQLERROR EXIT SQL.SQLCODE in SQL scripts, but note this only catches runtime errors, not syntax errors.How do you handle cross-system failure cascades in an AutoSys workflow?
Frequently Asked Questions
AutoSys integrates with SAP R/3 and S/4HANA through the SAP XBP (External Background Processing) interface. A specialised SAP agent on the AutoSys side communicates with SAP via RFC/BAPI calls to submit ABAP background jobs and monitor their completion.
Job type: 's' in JIL. Prerequisites: SAP agent installed, XBP user with S_XBP_ADM and S_BTCH_ADM authorisations, RFC destination configured in SAP (transaction SM59).
Failure mode: If XBP user password expires, jobs stay PENDING with no AutoSys error. Coordinate user lifecycle with SAP Basis team.
Use job_type: s (lowercase 's') for SAP jobs. This job type requires the SAP agent to be installed on the specified machine and the SAP XBP interface to be configured in the SAP system.
Attributes specific to SAP jobs include: sap_server_name (SAP system ID), sap_report_name (ABAP program name), sap_report_variant (parameter set), sap_client (client number), and optionally sap_external_command for RFC callbacks.
The simplest method is a CMD job that invokes sqlplus via a wrapper script. Example wrapper:
``bash #!/bin/bash sqlplus -s user/pass@DB @/scripts/call_proc.sql > sqlplus.out 2>&1 if grep -qi 'ORA-' sqlplus.out; then exit 1 fi exit 0 ``
Critical: sqlplus returns exit code 0 even on SQL errors. Never call sqlplus directly. Always wrap it with error detection that checks output for ORA- patterns.
By design, sqlplus returns exit code 0 for successful parsing and execution attempts, even if SQL statements inside the script fail. It only returns non-zero for fatal errors like cannot connect to database, cannot open SQL file, or out of memory.
This means an AutoSys job calling sqlplus directly will show SUCCESS even when your stored procedure raises ORA-00942 (table not found).
Fix: Add WHENEVER SQLERROR EXIT SQL.SQLCODE to SQL scripts to catch runtime errors. For syntax errors, wrap sqlplus in a shell script that greps the output for error patterns. The wrapper pattern is mandatory for production jobs.
The SAP user (typically a technical Basis user) needs XBP authorisations including: - S_XBP_ADM (XBP Administration — allows external scheduling) - S_BTCH_ADM (Background Processing Administration — allows job submission) - S_RFC (RFC access to XBP function modules)
The exact profile should be set up by your SAP Basis team following SAP Note guidance for XBP. The user should have password never expire (or secure rotation via credential manager) and should be monitored for lock status.
Step-by-step debugging for PENDING SAP jobs:
- Check SAP agent connectivity:
autoping -m sap-agent-server. If INACTIVE, agent is down or network blocked. - Check XBP user status in SAP: transaction SUIM → User → Display. Look for locked or expired password.
- Check SAP system availability: from agent machine,
telnet sap-app-server 3300(default RFC port). - Check SAP job scheduling log: In SAP transaction SM37, look for the scheduled background job. If it's not there, XBP submission failed.
- Check AutoSys event_demon.log:
grep SAP_JOB_NAME $AUTOUSER/out/event_demon.$AUTOSERV. Look for RFC error messages.
Most common issue: XBP user password expired. Work with Basis team to reset and unlock. Add monitoring for PENDING duration > 30 minutes to alert before business impact.
JIL syntax, sendevent, autorep, box jobs, file watchers, scheduling, HA, security, cloud workload automation, and 22 interview questions — the definitive AutoSys reference for production engineers.
20+ years shipping production infrastructure and CI/CD at scale. Drawn from code that ran under real load.
That's AutoSys. Mark it forged?
5 min read · try the examples if you haven't