Výchozí struktura nastavení akcí je rozšířena takto:
(+) (*) (+) ... (+)
Toto rozšíření je základem pro obsluhu služeb. Pro soap tedy není podstatné, až napár vyjmenovaných výjimek, nastavení kroku step, ale nastavení jednotlivých substep uzlů. Důležité je, že ne každý action-step má transformační význam. V nastaveních action-steps jsou některé krokyjako zadávací, které se poznají podle atributů input-only a input-and-apply, ale hlavně pak podle toho, že nemají mít žádné uzly substep. Právě existence těchto uzlů je pro zpracování na serveru určující.
Popis substepu je následující:
substep
input (+) @from = {#stepNo}-{#substepNo} |content @temp = {file-name}.xsl @temp-form = {file-name}.xsl @send = true | false @status = true | false @avoid-response-check = true | false @skip-empty = true | false
Uzel substep je vždy o transformaci. Vždy jde o transformaci XML to XML, kde výstupní XML musí být vždy platné,tj. obsahovat alespoň kmenový uzel. V opačném případě je to považováno za chybu serveru (viz. kategorizace v řešení chyb).
Vstup do transformace je dán uzlem input (viz. popis dále), provedení transformace je dáno šablonou v souboru umístěném ve složce buildu, jehožnázev je obsahem atributu @temp. Pokud jde však o volání typu form (viz. popis existence služby), je třeba použít šablonu uvedenou v atributu @temp-form. Je to jediné místo, kde má typ volání vliv.
Výstupem ze substepu je buď přímo výsledek transformace (@send = false)nebo až odpověď serveru (@send = true) - na server flexideo je v tomto případě odesílán výstup z transformace jako požadavek v obálce request. Je zaručeno, že uzel request je v takovém případě vždy uveden a to jako kmenový uzel XML vystupujícího z transformace. Ošetření prázdného uzlu request,prázdné odpovědi nebo chyby v odpovědi ze serveru viz. řešení chyb.
Každá transformace definovaná uzlem substep může obsahovat mechanismus kontroly založený na uvedení atributu status u kmenového uzlu výsledku. Atribut @status=true indikuje výskyt tohoto mechanismu vtransformaci a je třeba ověřovat aplikační status. V případě, že @status není uveden nebo obsahuje false, není kontrola prováděna (více viz. řešení chyb).
Další potenciální chybou je prázdný výsledek. Pokud je na výstupu prázdný kmenový tag, dojde k vyvolání chyby,pokud v uzlu substep není uvedeno @skip-empty=true.
Pro správné ošetření chyby má specifický význam atribut avoid-response-check. Toto nastavení má význam pouze u substepů, kde je výstup z transformace odesílán na server, tedy při nastavenísend='true'. Server v takovém případě totiž automaticky zjišťuje, zda v jeho odpovědi na požadavek vystupující z transformace nenastala chyba a pokud ano, generuje sám soap:Fault odpověď klientovi. To je samozřejmě dobré až do chvíle, kdy nastanepotřeba bližší identifikace vznnikajících chyb a její předávání klientovi. Ten automatický soap:Fault je totiž jen velmi obecný. Nastavení avoid-response-check='true' zajistí vypnutí této obecné kontroly a poskytne tak prostor pro specializovanoukontrolu odpovědi serveru dalším substepem. Tj. při vypnutí automatické kontroly pomocí avoid-response-check by měl následovat další substep, jehož vstupem bude právě výstup z předchozího a šablona bude uzpůsobena jeho kontrole. Tento další návazný substep by pak měl mítnastaven status='true', aby v případě, že šablona identifikuje chybu mohla tuto skutečnost zaznamenat do kmenového atributu status výstupního XML a bližší popis pak mohl být zabalen do výstupu prostřednictvím soap-error.xsl,kterou server následně při nalezení error hodnoty ve statusu použije. Při tvorbě soap-error.xsl pak většinou stačí jen importovat stejnojmennou šablonu v nadřazené složce _transforms.