RPA Workflows

RPA Workflows — Konrad Chmielinski
Engineering Blog · Konrad Chmielinski

Designing, building, and maintaining enterprise-grade automation workflows — from first process analysis to long-term production stability.

RPA Engineering Python · Jenkins · AA A360 End-to-end delivery Katowice, PL · Remote OK

Building an RPA bot is straightforward. Building one that runs reliably in production for months, handles every edge case, recovers from failures without human intervention, and stays maintainable as business rules evolve — that is the actual job.

I have designed and delivered end-to-end automation workflows across two large enterprises, three RPA platforms, and a wide range of process types — from financial data consolidation to HR contract generation to compliance reporting. This post covers my full workflow methodology: how I scope, design, build, test, deploy, and maintain production RPA solutions.

30+
production bots designed and delivered across both employers
3+
RPA platforms: Python + Jenkins (AM), AA A360 / A11 + SAIO (ING), UiPath (certified)
5yr
end-to-end RPA delivery experience
Global
bots serving teams in PL, LU, IN, FR, NL, BE, CA, US, BR, AR, SK across worldwide

The full bot lifecycle

how I work

Every bot I deliver goes through the same lifecycle — whether it is a two-day Python script or a multi-week AA A360 workflow spanning multiple systems.

Discover
process analysis
Design
flow + exceptions
Build
develop + unit test
UAT
business sign-off
Deploy
CI/CD + schedule
Monitor
logs + alerts
Maintain
adapt + improve

Process discovery & scoping

before one line of code

The most important work in any RPA project happens before development starts. A poorly scoped process leads to bots that handle 80% of cases and break on the other 20% — which in production means the business users still do manual work, just with less predictability.

My scoping approach: walk the process end-to-end with the process owner, document every decision point and exception path, identify all input formats and edge cases, and define the exception handling strategy before writing any code. The output is a Process Definition Document (PDD) that the business signs off on before development begins.

Process Definition Document (PDD) Exception path mapping Input format inventory Business stakeholder interviews Process flow diagramming Edge case documentation Automation feasibility assessment ROI estimation

Workflow design patterns

architecture decisions

Not every process should be a single linear bot. Complex workflows are modular — split into reusable components with clean interfaces, so individual modules can be tested, updated, and reused across projects. I apply the following design patterns consistently across all platforms.

Pattern
Dispatcher — Performer
Separate queue-feeding logic from processing logic. Enables parallel execution and clean retry handling.
Pattern
Modular components
Reusable sub-workflows for common operations: login, file download, data validation, report generation.
Pattern
Exception lanes
Every workflow has an explicit exception path — failed items go to a human review queue, never silently dropped.
Pattern
Idempotent design
Bots can be safely re-run on the same input without duplicating output — critical for financial and HR processes.

Error handling & resilience

production reality

Production bots fail. SAP sessions time out. Web portals return unexpected page states. Excel files arrive with missing columns. The difference between a demo bot and a production bot is how gracefully it handles these failures — and how quickly it recovers without human intervention.

01
Retry with backoff — transient failures (network timeouts, locked files) are retried automatically with exponential backoff before escalating to an exception.
02
Session recovery — long-running bots detect session expiry (SAP, web portals) and re-authenticate automatically without restarting the full workflow.
03
Partial completion tracking — large batch processes track which items completed successfully, so a mid-run failure only retries the remaining items, not the full batch.
04
Structured logging — every action, decision, and exception is written to a structured log. Post-run reports are automatically generated and sent to process owners.
05
Human exception queue — items the bot cannot process are routed to a human review queue with context, never silently skipped or dropped.
# Retry with backoff pattern used in production bots
import time, logging

def with_retry(fn, retries=3, backoff=2):
   for attempt in range(retries):
     try :
       return fn()
     except Exception as e:
      logging.warning( f”Attempt {attempt+1} failed: {e}” )
       if attempt + 1 == retries:
         raise
      time.sleep(backoff ** attempt)

CI/CD & deployment

shipping bots safely

Bot deployments at ArcelorMittal run entirely on Python + Jenkins CI/CD pipelines — code review, automated testing, and staged rollout before production promotion. Bots are triggered in three ways: on a scheduled basis via Jenkins cron, manually on demand, or automatically via an inbound email containing input data or via Microsoft API (Power BI integration). At ING, Automation Anywhere A360 / A11 handled orchestration — used to trigger and manage both AA bots and Python-based standalone bots running on the SAIO platform.

Jenkins CI/CD Python standalone bots Git branching strategy Staged rollout Email trigger (inbound data) Microsoft API / Power BI trigger Scheduled cron (Jenkins) Manual on-demand trigger Environment config management Rollback procedures Deployment documentation Code review gates

Monitoring & maintenance

keeping bots alive

A deployed bot without monitoring is a liability. I instrument every production bot with structured logging, run-level reporting, and alerting on failure. Process owners receive automated summary emails after each run — items processed, exceptions raised, and actions required. This keeps the business informed without requiring them to dig into technical logs.

Layer Tool What it covers
Orchestration (AM) Jenkins Scheduling, run history, deployment pipeline, cron & trigger management
Orchestration (ING) AA A360 Control Room Bot health, queue status, credential management for AA & Python bots
Logging Python logging / custom Structured per-item logs, exception traces, timing data
Alerting Email via Graph API / SMTP Run summary to process owner, failure alerts to dev team
Trigger — email Inbound email parser Bot triggered automatically when email with input data arrives
Trigger — API Microsoft API / Power BI Bot triggered via MS API integration from Power BI reports
Version control Git Full history of all bot code, rollback capability

Technical documentation

the part most skip

Every bot I deliver includes a full technical documentation package: Process Definition Document, Solution Design Document, operational runbook, and handover notes. This is not optional — undocumented bots become unmaintainable the moment the original developer leaves the team. At ArcelorMittal, documentation is a delivery requirement, not an afterthought.

Process Definition Document (PDD) Solution Design Document (SDD) Operational runbook Exception handling guide Deployment checklist Handover documentation Change log Confluence / SharePoint

Key production deployments

largest & most impactful
ING Hubs Poland (GKYC) — CDD Financial Risk Analysis Report Automation
Production bot generating financial risk analysis reports on entities as part of Customer Due Diligence (CDD) processes. Data sourced from a dedicated CDD database compiled from banking intelligence and government sources. Bot queries, aggregates, and processes the available data to produce structured risk reports supporting compliance analysts in assessing the financial risk profile of investigated entities.
ING Hubs Poland (GKYC) — Account & Entity Holder Intelligence Report Automation
Production bot aggregating data from multiple heterogeneous sources — internal databases, banking systems, and restricted bank-grade resources — to generate comprehensive KYC intelligence reports on account holders and proxy holders of accounts and legal entities. Reports cover estimated asset holdings and financial capacity, as well as a structured assessment of the relationship type between the holder and the entity. Designed to handle data inconsistencies across sources and produce audit-ready output for compliance and due diligence workflows.
ArcelorMittal BCoE Poland — Global Invoice Duplicate Detection
Designed and built an automated workflow analysing over five years of historical invoice data from ArcelorMittal entities worldwide to identify potential duplicates and prevent approval of future duplicate payments. The dataset spans global operations across all business units and regions. Idempotent design critical — re-runs must never create false duplicate flags on already-processed transactions.
ArcelorMittal BCoE Poland — Global Market Forecasting
Bot consolidating Excel data from all global business units into a centralised database for multi-year market trend prediction and investment profitability analysis. Dispatcher—Performer pattern with per-unit exception handling, automated reporting, and web application write-back.
ArcelorMittal BCoE Poland — SAP Invoice Processing Automation
Production bot automating the processing and entry of invoice data into SAP. Reads structured invoice data from Excel source files, validates records, and performs the corresponding SAP data entry operations. Designed with robust error handling to manage inconsistent input data and ensure reliable, auditable processing across high invoice volumes.
ArcelorMittal BCoE Poland — VBA to Python Migration: Cylindrical Products Order & Invoice Processing
Migration of a legacy VBA script to a production-grade standalone Python solution handling order entry and invoice data processing for cylindrical steel products. Rewrote business logic in Python with proper error handling, structured logging, and maintainable architecture — eliminating the fragility and maintenance overhead of the original macro-based approach.
ArcelorMittal Luxembourg — REX Portal: Statistical Damage Assessment Automation
Production bot automating data entry and operations in the REX compliance portal, focused on purely statistical incident data. Handles input, validation, and manipulation of quantitative records including damage assessment scores and financial loss estimations. High data accuracy critical — statistical outputs feed into group-level safety analysis and investment decisions.
ArcelorMittal Luxembourg — SARA Portal: Incident Report Automation
Production bot automating data entry into the SARA compliance portal for workplace incident and accident reporting. Processes descriptive incident data alongside photographic evidence and supporting attachments documenting each event. Bot handles structured form population, photo upload, and document attachment — ensuring complete and consistent incident records across all reporting entities.
ArcelorMittal BCoE Poland — HRS Employee Suspension Automation
Production bot automating the suspension of employee functions within SAP. Processes suspension requests, applies the relevant status changes and access restrictions across HR records, and generates the required documentation. Designed with idempotent logic — re-runs on the same case cannot produce duplicate or conflicting record states.
ArcelorMittal BCoE Poland — HRS Employee Offboarding Contract Automation
Production bot automating generation of employment termination contracts and related HR documents. Processes entity and financial data, populates SAP records, and generates the full document package required to close an employee’s contract. End-to-end delivery: process scoping with global HR stakeholders → PDD → bot development → UAT → Jenkins deployment → documentation handover.
ArcelorMittal BCoE Poland — HRS Employee Onboarding Contract Automation
Production bot automating generation of employment commencement contracts for new hires. Extracts data from HR and financial source documents, creates SAP entries, and produces the full onboarding contract package. Designed to handle multiple entity types and country-specific contract variations across global business units.
ArcelorMittal BCoE Poland — HRS Training Agreement Automation
Production bot automating generation of employee training agreements. Processes training data inputs, generates the required agreement documents, and updates SAP accordingly. Modular design allows independent handling of different training types and contract templates across regions.
ING Hubs Poland (GKYC) — SAIO GUI Bot & Platform Promotion
Designed and implemented a desktop automation bot distributed directly to end-user physical machines via ING’s proprietary SAIO platform — running on analysts’ own computers rather than virtual machines or dedicated automation servers. With a single click, the bot prepared the user’s desktop environment for a specific task — launching and arranging the required applications, navigating to the correct screens, and partially pre-filling data to reduce manual input. Eliminated repetitive setup steps at the start of each work item, allowing analysts to focus immediately on the task itself. Also actively promoted SAIO adoption within the team — prepared and delivered training sessions and best-practice documentation to upskill colleagues in RPA workflow design.

Full stack

everything I use
Python (standalone bots) Jenkins CI/CD Git Automation Anywhere A360 Automation Anywhere A11 SAIO (ING proprietary) UiPath (certified, no production) AA Control Room AA Credential Vault Pydantic (data contracts) Pandas (data processing) Microsoft Graph API (alerting & triggers) Power BI API integration Inbound email trigger SAP GUI Scripting Selenium Process Definition Document Solution Design Document Dispatcher—Performer pattern Exception lane design Structured logging Retry with backoff

About the Author

Leave a Reply

Your email address will not be published. Required fields are marked *

You may also like these