logo_smallAxellero.io

SOAP

Execute SOAP web service operations with WSDL discovery and WS-Security authentication.

SOAP Node

Call SOAP (Simple Object Access Protocol) web services with automatic WSDL parsing, operation discovery, and security support in Axellero workflows.

Features

  • WSDL Import & Discovery: Automatic service and operation detection
  • Operation Auto-completion: Suggestions for available SOAP operations
  • WS-Security Support: Username/password tokens, digital signatures, encryption
  • Envelope Generation: Automatic SOAP envelope construction with headers
  • Fault Handling: SOAP fault processing and error reporting
  • Authentication Methods: Basic Auth, WS-Security, custom headers

Enterprise Integration

SOAP nodes are designed for enterprise integration scenarios with legacy systems, government services, and formal web service contracts requiring strict protocol compliance.

Quick Navigation

WSDL Configuration

Configure your SOAP service by importing WSDL (Web Service Definition Language) documents:

ParameterTypeRequiredDescription
wsdlUrlTEXTYesURL to the WSDL document (e.g., https://api.example.com/service?wsdl)
serviceNameTEXTNoSpecific service name if WSDL contains multiple services
portNameTEXTNoSpecific port/endpoint name for the service
soapVersionENUMNoSOAP version (1.1 or 1.2) - auto-detected from WSDL
timeoutINTNoRequest timeout in milliseconds (default: 60000)

Basic WSDL Import

{
  "wsdlUrl": "https://webservices.oorsprong.org/websamples.countryinfo/CountryInfoService.wso?WSDL",
  "serviceName": "CountryInfoService",
  "portName": "CountryInfoServiceSoap"
}

Local WSDL File

{
  "wsdlUrl": "file:///path/to/service.wsdl",
  "serviceName": "MyEnterpriseService",
  "soapVersion": "1.2"
}

Enterprise Service Configuration

{
  "wsdlUrl": "https://enterprise.company.com/services/CustomerService?wsdl",
  "serviceName": "CustomerManagementService",
  "portName": "CustomerServiceHttpsPort",
  "timeout": 120000
}

Security & Authentication

Security Requirements

Enterprise SOAP services often require strict security compliance. Use HTTPS endpoints and proper authentication mechanisms for production environments.

WS-Security Username Token

Standard WS-Security username/password authentication:

{
  "wsdlUrl": "https://secure-service.example.com/service?wsdl",
  "security": {
    "type": "wsse-username-token",
    "username": "{{ctx.consts.SOAP_USERNAME}}",
    "password": "{{ctx.consts.SOAP_PASSWORD}}",
    "passwordType": "PasswordDigest"
  }
}

Basic HTTP Authentication

{
  "wsdlUrl": "https://api.example.com/soap?wsdl",
  "authentication": {
    "type": "basic",
    "username": "{{ctx.consts.SERVICE_USER}}",
    "password": "{{ctx.consts.SERVICE_PASSWORD}}"
  }
}

Custom Security Headers

{
  "wsdlUrl": "https://government.service.gov/soap?wsdl",
  "headers": {
    "SOAPAction": "\"urn:GetCitizenData\"",
    "Authorization": "Bearer {{ctx.consts.GOV_TOKEN}}",
    "X-API-Key": "{{ctx.consts.API_KEY}}"
  }
}

WS-Security with Certificates

{
  "wsdlUrl": "https://bank.example.com/payments?wsdl",
  "security": {
    "type": "wsse-binary-security-token",
    "certificate": "{{ctx.consts.CLIENT_CERT}}",
    "privateKey": "{{ctx.consts.PRIVATE_KEY}}",
    "signatureAlgorithm": "http://www.w3.org/2000/09/xmldsig#rsa-sha1"
  }
}

Operation Execution

Simple Data Queries

Execute SOAP operations with parameter mapping from workflow context:

Operation Configuration:

  • Operation Name: GetCountryByCode
  • Service: Country Information Service

Parameters:

{
  "sCountryISOCode": "{{ctx.vars.countryCode}}"
}

Full Request Example:

{
  "operation": "GetCountryByCode",
  "parameters": {
    "sCountryISOCode": "US"
  },
  "soapAction": "http://www.oorsprong.org/websamples.countryinfo/GetCountryByCode"
}

Complex Parameter Binding

Execute operations with nested objects and arrays:

Operation: CreateCustomer

{
  "operation": "CreateCustomer",
  "parameters": {
    "customer": {
      "personalInfo": {
        "firstName": "{{ctx.nodes.customerForm.outputs.firstName}}",
        "lastName": "{{ctx.nodes.customerForm.outputs.lastName}}",
        "dateOfBirth": "{{ctx.nodes.customerForm.outputs.birthDate}}",
        "socialSecurityNumber": "{{ctx.consts.SSN}}"
      },
      "contactInfo": {
        "email": "{{ctx.nodes.customerForm.outputs.email}}",
        "phone": "{{ctx.nodes.customerForm.outputs.phone}}",
        "address": {
          "street": "{{ctx.vars.address.street}}",
          "city": "{{ctx.vars.address.city}}",
          "zipCode": "{{ctx.vars.address.zip}}",
          "country": "{{ctx.user.attrs.country}}"
        }
      },
      "preferences": {
        "language": "{{ctx.user.attrs.preferredLanguage}}",
        "currency": "{{ctx.workspace.currency}}",
        "notifications": "{{ctx.vars.emailOptIn}}"
      }
    },
    "createdBy": "{{ctx.user.login}}",
    "workspaceId": "{{ctx.workspace_id}}"
  }
}

Array Parameters

Handle array/list parameters in SOAP operations:

Operation: ProcessBulkOrders

{
  "operation": "ProcessBulkOrders",
  "parameters": {
    "orders": "{{ctx.nodes.orderProcessor.outputs.orderList}}",
    "processingOptions": {
      "validateInventory": true,
      "applyDiscounts": "{{ctx.vars.applyBulkDiscount}}",
      "expediteShipping": false
    },
    "requestId": "{{ctx.nodes.idGenerator.outputs.requestId}}"
  }
}

Workflow Context Integration

📖 Reference

For context documentation, see the Workflow Context reference.

Dynamic Operation Selection

Choose operations based on workflow conditions:

{
  "operation": "{{ctx.vars.operationType === 'create' ? 'CreateRecord' : 'UpdateRecord'}}",
  "parameters": {
    "recordData": "{{ctx.nodes.dataValidator.outputs.validatedData}}",
    "recordId": "{{ctx.vars.operationType === 'update' ? ctx.vars.existingId : null}}",
    "userId": "{{ctx.user.id}}",
    "timestamp": "{{ctx.nodes.timer.outputs.currentTime}}"
  }
}

Conditional Parameters

Include parameters based on user roles or workflow state:

{
  "operation": "GetUserProfile",
  "parameters": {
    "userId": "{{ctx.vars.targetUserId}}",
    "includePrivateData": "{{ctx.user.roles.includes('admin')}}",
    "includeBillingInfo": "{{ctx.user.roles.includes('billing')}}",
    "workspaceFilter": "{{ctx.workspace_slug}}"
  }
}

Response Processing

Success Response Format

{
  "soapResponse": {
    "body": {
      "GetCountryByCodeResponse": {
        "GetCountryByCodeResult": {
          "sISOCode": "US",
          "sName": "United States",
          "sCapitalCity": "Washington",
          "sCurrencyISOCode": "USD",
          "sPhoneCode": "1",
          "sContinentCode": "NA"
        }
      }
    },
    "headers": {
      "Content-Type": "text/xml; charset=utf-8",
      "SOAPAction": "http://www.oorsprong.org/websamples.countryinfo/GetCountryByCode"
    }
  },
  "statusCode": 200,
  "success": true
}

SOAP Fault Response

{
  "soapFault": {
    "faultcode": "soap:Client",
    "faultstring": "Invalid country code provided",
    "faultactor": "http://www.oorsprong.org/websamples.countryinfo",
    "detail": {
      "errorCode": "INVALID_COUNTRY_CODE",
      "errorMessage": "The country code 'XX' is not valid",
      "validFormats": ["ISO 3166-1 alpha-2", "ISO 3166-1 alpha-3"]
    }
  },
  "statusCode": 500,
  "success": false,
  "error": "SOAP Fault: Invalid country code provided"
}

Complex Response with Nested Data

{
  "soapResponse": {
    "body": {
      "GetCustomerDetailsResponse": {
        "customer": {
          "customerId": "12345",
          "personalInfo": {
            "firstName": "John",
            "lastName": "Doe",
            "email": "john.doe@example.com"
          },
          "orders": [
            {
              "orderId": "ORD-001",
              "orderDate": "2024-01-15T10:30:00Z",
              "totalAmount": 299.99,
              "status": "Shipped"
            }
          ],
          "accountStatus": "Active"
        }
      }
    }
  },
  "success": true
}

Fault Handling

Standard SOAP Faults

Fault Types

SOAP defines standard fault types: Client (invalid request), Server (service error), MustUnderstand (required headers), and VersionMismatch (SOAP version issues).

Common Fault Patterns:

{
  "operation": "GetAccountBalance",
  "parameters": {
    "accountId": "{{ctx.vars.accountId}}"
  },
  "faultHandling": {
    "onClientFault": "continue",
    "onServerFault": "retry",
    "retryAttempts": 3,
    "retryDelay": 5000
  }
}

Custom Error Processing

{
  "operation": "TransferFunds",
  "parameters": {
    "fromAccount": "{{ctx.vars.fromAccount}}",
    "toAccount": "{{ctx.vars.toAccount}}",
    "amount": "{{ctx.vars.transferAmount}}"
  },
  "errorMapping": {
    "INSUFFICIENT_FUNDS": {
      "action": "notify_user",
      "message": "Insufficient funds for transfer"
    },
    "ACCOUNT_LOCKED": {
      "action": "redirect_to_support",
      "message": "Account temporarily locked"
    },
    "DAILY_LIMIT_EXCEEDED": {
      "action": "suggest_alternative",
      "message": "Daily transfer limit exceeded"
    }
  }
}

Editor Features

SOAP Editor Capabilities:

  • WSDL-based Auto-completion: Operation names, parameters, and data types from imported WSDL
  • Parameter Schema Validation: Real-time validation against WSDL parameter definitions
  • Envelope Preview: Live preview of generated SOAP envelope
  • Security Template: Pre-configured WS-Security and authentication templates
  • Fault Analysis: Detailed SOAP fault breakdown and troubleshooting hints

For complete editor details, see Code Editing & Schema Reference.

WSDL Explorer

Service Discovery

The SOAP editor includes a WSDL explorer showing all available operations, their parameters, and return types with documentation.

Explorer Features:

  • Operation Browser: Navigate through all SOAP operations and bindings
  • Parameter Inspection: View parameter types, constraints, and documentation
  • Sample Generation: Auto-generate sample requests from WSDL definitions
  • Binding Information: View SOAP binding details and endpoint configurations

Advanced Features

Custom SOAP Headers

Add custom headers to SOAP envelopes:

{
  "operation": "ProcessPayment",
  "parameters": {
    "paymentData": "{{ctx.nodes.paymentForm.outputs.data}}"
  },
  "customHeaders": {
    "Authentication": {
      "username": "{{ctx.consts.SERVICE_USER}}",
      "timestamp": "{{ctx.nodes.timer.outputs.currentTime}}",
      "signature": "{{ctx.nodes.signer.outputs.requestSignature}}"
    },
    "TrackingInfo": {
      "sessionId": "{{ctx.vars.sessionId}}",
      "userId": "{{ctx.user.id}}",
      "workspaceId": "{{ctx.workspace_id}}"
    }
  }
}

Multiple Endpoints

Handle services with multiple endpoints:

{
  "wsdlUrl": "https://api.example.com/service?wsdl",
  "endpoints": {
    "production": "https://api.example.com/prod/service",
    "staging": "https://staging.example.com/service",
    "development": "https://dev.example.com/service"
  },
  "activeEndpoint": "{{ctx.vars.environment || 'production'}}"
}

Transaction Management

Handle transactional SOAP operations:

{
  "operation": "BeginTransaction",
  "parameters": {
    "transactionScope": "ReadCommitted",
    "timeout": 300
  },
  "transactionHandling": {
    "autoCommit": false,
    "onError": "rollback",
    "transactionId": "{{ctx.vars.transactionId}}"
  }
}

Performance Optimization

Connection Pooling

Performance

SOAP connections are automatically pooled and reused for better performance when calling the same service multiple times within a workflow.

{
  "wsdlUrl": "https://api.example.com/service?wsdl",
  "connectionPooling": {
    "enabled": true,
    "maxConnections": 10,
    "connectionTimeout": 30000,
    "keepAlive": true
  }
}

Compression & Optimization

{
  "wsdlUrl": "https://api.example.com/service?wsdl",
  "optimization": {
    "enableCompression": true,
    "compressionLevel": "gzip",
    "enableHttpKeepAlive": true,
    "chunkingThreshold": 8192
  }
}

Security Best Practices

SOAP Security Guidelines

  • Use HTTPS for SOAP service communications
  • Validate certificates in production environments
  • Use WS-Security for sensitive operations
  • Implement message-level security for high-security requirements
  • Log security events without exposing sensitive data

Production Security Configuration

{
  "wsdlUrl": "https://secure-api.bank.com/services?wsdl",
  "security": {
    "transport": {
      "protocol": "https",
      "certificateValidation": "strict",
      "minimumTlsVersion": "1.2"
    },
    "message": {
      "type": "wsse-username-token",
      "username": "{{ctx.consts.SECURE_USERNAME}}",
      "password": "{{ctx.consts.SECURE_PASSWORD}}",
      "passwordType": "PasswordDigest",
      "includeNonce": true,
      "includeTimestamp": true
    }
  },
  "auditLogging": {
    "enabled": true,
    "logLevel": "security_events",
    "excludeSensitiveData": true
  }
}

Getting Started

  1. Obtain WSDL URL: Get the WSDL document URL from your service provider
  2. Import WSDL: Configure the SOAP node with the WSDL URL for service discovery
  3. Configure Authentication: Set up required security credentials and authentication
  4. Select Operation: Choose the SOAP operation you want to execute
  5. Map Parameters: Bind workflow data to operation parameters
  6. Handle Responses: Process successful responses and SOAP faults
  7. Test Integration: Validate the integration with sample data

Resources