IBM webMethods Hybrid Integration

IBM webMethods Hybrid Integration

Join this online group to communicate across IBM product users and experts by sharing advice and best practices with peers and staying up to date regarding product enhancements.



#Automation

 View Only
  • 1.  Conditional routing in Active Transfer

    Posted Fri April 24, 2026 07:39 AM
    Edited by Johan Holmberg Fri April 24, 2026 07:50 AM

    Hi,

    I'm working in IBM webMethods Active Transfer 10.15 onPrem and trying to build a conditional file routing flow using Actions.

    My setup:

    ·       I have an Execute Integration Service action that calls an IS flow service finding a value in a file that I picked up using action Find.

    ·       The flow service returns a String variable called via pipeline output

    ·       I map this output in the Output Mapping of the Execute Integration Service action

    What I want to achieve:

    ·       After the IS service runs, I want to Move the file to different FTP depending on that variable.

    My problem:

    ·       I'm not sure if its possible to use this variable somehow to route the file with different actions, maybe using filer? I know my variable is in the AT pipeline since i send this information as an email using that variable in the body. 

    Specific questions:

    1.     What is the correct Output Mapping configuration to make the IS output available in subsequent actions?

    2.     What is the correct Run Condition syntax to evaluate the variable in 10.15?

    3.     Is it possible to use such a variable in the File Filter field of a Move action, or should I skip AT in this case and use IS only?

    Any help or working examples appreciated!



    ------------------------------
    Johan Holmberg
    ------------------------------



  • 2.  RE: Conditional routing in Active Transfer

    Posted Mon April 27, 2026 06:37 AM

    Hi Johan,

    I assume that you can achieve this by accessing your specific "outputParameters" by this syntax: [outputParameter]. (if I remember correctly)

    But maybe it is easier to call a different scheduled action from your IS Flow by using: WxATUtils.pub.event:executeATEvent

    Kind regards,

    Simon



    ------------------------------
    Simon Hanisch
    ------------------------------



  • 3.  RE: Conditional routing in Active Transfer

    Posted Mon April 27, 2026 07:16 AM

    1. Correct Output Mapping Configuration

    In the Execute Integration Service action's Output Mapping:

    Left side (IS Service Output): Map from your service's output signature

    • Example: via (your String variable from the IS service)

    Right side (AT Pipeline Variable): Create/map to an AT pipeline variable

    • Example: routingDestination or via

    Configuration:

    IS Service Output → AT Pipeline Variable
    via               → ${via}
    

    The syntax ${variableName} makes it available in the AT action pipeline for subsequent actions.

    2. Correct Run Condition Syntax in 10.15

    Active Transfer 10.15 uses JavaScript expressions for Run Conditions. Here's the correct syntax:

    For a Move action that should run conditionally:

    In the Run Condition field of your Move action:

    ${via} == "FTP_A"
    

    Or for multiple conditions:

    ${via} == "FTP_A" || ${via} == "FTP_PRIMARY"
    

    Important Notes:

    • Use == for equality comparison (not =)
    • String values need quotes: "value"
    • Numeric values don't need quotes: ${via} == 123
    • Boolean operators: && (AND), || (OR), ! (NOT)

    3. Using Variables in File Filter vs. Move Action

    Short Answer: You cannot use pipeline variables directly in the File Filter field of a Move action. File Filters are pattern-based (wildcards like *.txt) and don't support dynamic variable substitution.

    Recommended Approach: Use Run Conditions on multiple Move actions instead.

    Step-by-Step Configuration

    Step 1: Execute Integration Service Action

    Output Mapping:

    IS Output Field: via
    AT Pipeline Variable: ${via}
    

    Step 2: Create Multiple Move Actions (one per destination)

    Move Action 1 - To FTP_A:

    • Run Condition: ${via} == "FTP_A"
    • Destination: Your FTP_A server configuration
    • Source File: ${file} (from Find action)

    Move Action 2 - To FTP_B:

    • Run Condition: ${via} == "FTP_B"
    • Destination: Your FTP_B server configuration
    • Source File: ${file}

    Move Action 3 - To FTP_C:

    • Run Condition: ${via} == "FTP_C"
    • Destination: Your FTP_C server configuration
    • Source File: ${file}

    Alternative: Default/Fallback Routing

    If you want a default destination for unmatched values:

    Move Action (Default):

    • Run Condition: ${via} != "FTP_A" && ${via} != "FTP_B" && ${via} != "FTP_C"
    • Destination: Your default/error FTP location

    Troubleshooting Tips

    1. Verify Variable in Pipeline:

      • You mentioned you can see it in email body - good sign!
      • Add a Log action before Move actions: Routing to: ${via}
    2. Check Variable Type:

      • Ensure your IS service returns a String (not Document or other type)
      • Trim whitespace in IS: pub.string:trim before returning
    3. Test Run Conditions:

      • Start with simple condition: ${via} != null
      • Then add specific value checks
    4. Common Issues:

      • Case sensitivity: "FTP_A"  "ftp_a"
      • Extra spaces: "FTP_A "  "FTP_A"
      • Null values: Add null check: ${via} != null && ${via} == "FTP_A"

    Should You Use IS Only Instead?

    Use AT when:

    • You need AT's built-in FTP/SFTP management
    • You want visual action-based configuration
    • Multiple teams manage different parts (AT admins vs. IS developers)
    • You need AT's monitoring and retry capabilities

    Use IS only when:

    • Complex conditional logic (nested if/else)
    • Need to call multiple external systems
    • Require transaction management
    • AT's action-based approach becomes too cumbersome

    For your use case with 2-3 destinations, AT with Run Conditions is perfectly suitable and keeps the routing logic visible in the AT interface.

    Example IS Service Output Structure

    Your IS service should return:

    Output Signature:
      via (String)
    

    Sample IS flow logic:

    1. Read file content
    2. Parse/extract routing info
    3. Map to 'via' output variable
    4. Return (via will be in pipeline output)


    ------------------------------
    Shashank Mitra
    ------------------------------



  • 4.  RE: Conditional routing in Active Transfer

    Posted Mon April 27, 2026 08:38 AM

    Hi,

    Run Condition sounds like a perfect solution, but from what I can see, there is no such option in the Move action. Only File Filter.


    ------------------------------
    Johan Holmberg
    ------------------------------



  • 5.  RE: Conditional routing in Active Transfer

    Posted Tue May 05, 2026 09:20 AM

    Hi Johan,

    I have done something similar, but used the virtual folders as variables for the connections. Then within my action I could use a variable containing the names of these virtual folders to select which endpoint it needed to be send to. So, instead of directly doing the Move task to the remote FTP endpoint in your case, using the virtual folder which matches with the required endpoint.

    Kind regards,
    Oscar



    ------------------------------
    Oscar Baelde
    ------------------------------



  • 6.  RE: Conditional routing in Active Transfer

    Posted Thu May 07, 2026 09:16 AM

    Hi Johan,

    I implemented a similar scenario earlier. In the service variable where you receive the output, you can rename the filenames with a prefix specific to the destination. Using that prefix, you can then apply a filename regex in subsequent actions to route the files to the appropriate destination.

    Hope this helps.

    Regards,
    Satish



    ------------------------------
    Satish Aruchamy
    Sr Solution Architect
    Tata Consultancy Services
    Minneapolis MN
    ------------------------------