function spooler_process() {

  try {
    var order = spooler_task.order;
    var operation;
    var request;

    try { // to retrieve the web service operation
      operation = order.web_service_operation;
    } catch (e) {
      spooler_log.warn( "error occurred processing web service operation: " + String(e) );
      throw String(e);
    }

    try { // to retrieve the web service request
      var xml_document;
      request = operation.request;
      spooler_log.debug3( "content of web service request:\n" + request.string_content );

      // should the request be previously transformed ...
      if (spooler_task.params.value("request_stylesheet") != null && spooler_task.params.value("request_stylesheet").length > 0) {
        var stylesheet = spooler.create_xslt_stylesheet();
        stylesheet.load_file(spooler_task.params.value("request_stylesheet"));
        xml_document = String(stylesheet.apply_xml(request.string_content));
        spooler_log.debug3( "content of request transformation:\n" + xml_document );
      } else {
        xml_document = request.string_content;
      }

      // Javascript has no XML support, so we use a helper class for XPath expressions
      var xpath = new sos.xml.SOSXMLXPath(new java.lang.StringBuffer(xml_document));
      // add order parameters from request xml element /params
      var params = spooler.create_variable_set();
      params.xml = String(xpath.selectDocumentText("//params"));
      order.payload = params;

      // altenatively you could add any xml structure of the request to the xml payload of this order
      // order.xml_payload = String(xpath.selectDocumentText("//xml_payload/*"));

      spooler_log.info( "web service request accepted for order \"" + order.id() + "\"" );
    } catch (e) {
      spooler_log.warn( "error occurred processing web service request: " + String(e) );
      throw String(e);
    }

    return true;
  } catch (e) {
    spooler_log.warn( String(e) );
    return false;
  }
}