Index: src/test/java/org/ow2/petals/binding/rest/exchange/incoming/AbstractTestEnvironment.java
===================================================================
--- workspace/petals-trunk/components-sls/components/petals-bc-rest/petals-bc-rest/src/test/java/org/ow2/petals/binding/rest/exchange/incoming/AbstractTestEnvironment.java	(revision 43416)
+++ workspace/petals-trunk/components-sls/components/petals-bc-rest/petals-bc-rest/src/test/java/org/ow2/petals/binding/rest/exchange/incoming/AbstractTestEnvironment.java	(working copy)
@@ -20,7 +20,10 @@
 import static org.awaitility.Awaitility.await;
 
 import java.net.URI;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
 import java.util.concurrent.Callable;
 import java.util.concurrent.Future;
 import java.util.concurrent.Semaphore;
@@ -57,7 +60,7 @@
     private static final Logger LOG = Logger.getLogger(AbstractTestEnvironment.class.getName());
 
     /**
-     * Send asynchronously a REST request to the component under test
+     * Send asynchronously a REST request to the component under test.
      * 
      * @param httpMethod
      *            The HTTP method to use
@@ -76,7 +79,38 @@
     protected ResourceInvoked invokeAsyncResource(final String httpMethod, final WebTarget uriBase,
             final String uriPath, final Semaphore lock, final boolean replyAsXml, final Entity<?> body)
             throws InterruptedException {
-        final WebTarget resource = uriBase.path(uriPath);
+
+        return this.invokeAsyncResource(httpMethod, uriBase, uriPath, new HashMap<>(), lock, replyAsXml, body);
+    }
+
+    /**
+     * Send asynchronously a REST request to the component under test.
+     * 
+     * @param httpMethod
+     *            The HTTP method to use
+     * @param uriBase
+     *            The base URI
+     * @param uriPath
+     *            The Path of the resource
+     * @param queryParameters
+     *            The query parameters. Not {@code null}.
+     * @param lock
+     *            A semaphore that will be unlock when HTTP request will be completed (with or without error)
+     * @param replyAsXml
+     *            {@code true} to accept a reply as XML, {@code false} to accept a reply as JSON
+     * @param body
+     *            The HTTP body. Can be {@code null}
+     * @return
+     */
+    protected ResourceInvoked invokeAsyncResource(final String httpMethod, final WebTarget uriBase,
+            final String uriPath, final Map<String, String> queryParameters, final Semaphore lock,
+            final boolean replyAsXml, final Entity<?> body) throws InterruptedException {
+        assert queryParameters != null;
+
+        WebTarget resource = uriBase.path(uriPath);
+        for (final Entry<String, String> queryParameter : queryParameters.entrySet()) {
+            resource = resource.queryParam(queryParameter.getKey(), queryParameter.getValue());
+        }
         lock.acquire();
         final AsyncInvoker resourceRequest = resource.request().header(HttpHeader.ACCEPT.toString(),
                 replyAsXml ? MediaType.APPLICATION_XML : MediaType.APPLICATION_JSON).async();
Index: src/test/java/org/ow2/petals/binding/rest/exchange/incoming/SchoolCafeteriaEnvironment.java
===================================================================
--- workspace/petals-trunk/components-sls/components/petals-bc-rest/petals-bc-rest/src/test/java/org/ow2/petals/binding/rest/exchange/incoming/SchoolCafeteriaEnvironment.java	(revision 43416)
+++ workspace/petals-trunk/components-sls/components/petals-bc-rest/petals-bc-rest/src/test/java/org/ow2/petals/binding/rest/exchange/incoming/SchoolCafeteriaEnvironment.java	(working copy)
@@ -98,6 +98,11 @@
     protected static final QName GET_PROC_INSTS_OPERATION = new QName(SCHOOL_CAFETERIA_REGISTRATION_NS,
             GET_PROC_INSTS_OPERATION_NAME);
 
+    private static final String SEARCH_PROC_INSTS_OPERATION_NAME = "searchProcessInstances";
+
+    protected static final QName SEARCH_PROC_INSTS_OPERATION = new QName(SCHOOL_CAFETERIA_REGISTRATION_NS,
+            SEARCH_PROC_INSTS_OPERATION_NAME);
+
     private static final String ADD_CHILD_OPERATION_NAME = "addChild";
 
     protected static final QName ADD_CHILD_OPERATION = new QName(SCHOOL_CAFETERIA_REGISTRATION_NS,
@@ -346,6 +351,81 @@
                                 }
                             }
 
+                            // ********************************************
+                            // Operation: search process instances
+                            // ********************************************
+                            {
+                                final Element operationElt = addElement(jbiDocument, mappingElt,
+                                        new QName(NAMESPACE_SU_PARAM, OperationBuilder.XML_TAG_NAME));
+                                operationElt.setAttribute(OPERATION_NAME,
+                                        consumes.lookupPrefix(SCHOOL_CAFETERIA_REGISTRATION_NS) + ":"
+                                                + SEARCH_PROC_INSTS_OPERATION_NAME);
+
+                                // ***************************
+                                // REST Request configuration
+                                // ***************************
+                                final Element httpMethodElt = addElement(jbiDocument, operationElt,
+                                        new QName(NAMESPACE_SU_PARAM, HTTP_METHOD));
+                                httpMethodElt.setTextContent(HttpMethod.GET.asString());
+                                final Element httpPathTemplateElt = addElement(jbiDocument, operationElt,
+                                        new QName(NAMESPACE_SU_PARAM, PATH));
+                                httpPathTemplateElt
+                                        .setTextContent("/school-cafeteria/process-instances?requester={requester}");
+                                final Element xmlTemplateElt = addElement(jbiDocument, operationElt,
+                                        new QName(NAMESPACE_SU_PARAM, XML_TEMPLATE));
+                                final Element xmlPayloadRootElt = addElement(jbiDocument, xmlTemplateElt,
+                                        new QName(SCHOOL_CAFETERIA_REGISTRATION_NS, "searchProcessInstances"));
+                                final Element xmlPayloadRequesterElt = addElement(jbiDocument, xmlPayloadRootElt,
+                                        new QName("requester"));
+                                xmlPayloadRequesterElt.setTextContent("{requester}");
+
+                                // ****************************
+                                // REST Response configuration
+                                // ****************************
+                                final Element onJBIResponseElt = addElement(jbiDocument, operationElt,
+                                        new QName(NAMESPACE_SU_PARAM, OnJBIResponseBuilder.XML_TAG_NAME));
+                                // Default OUT
+                                {
+                                    final Element onDefaultOutElt = addElement(jbiDocument, onJBIResponseElt,
+                                            new QName(NAMESPACE_SU_PARAM, OnDefaultOut.XML_TAG_NAME));
+                                    final Element transformationElt = addElement(jbiDocument, onDefaultOutElt,
+                                            new QName(NAMESPACE_SU_PARAM, Transformation.XML_TAG_NAME));
+                                    final Element xslElt = addElement(jbiDocument, transformationElt,
+                                            new QName(NAMESPACE_SU_PARAM, XslTransformation.XML_TAG_NAME));
+                                    xslElt.setTextContent("searchProcessesInstancesResponse.xsl");
+                                    final Element httpResponseElt = addElement(jbiDocument, onDefaultOutElt,
+                                            new QName(NAMESPACE_SU_PARAM, HttpResponse.XML_TAG_NAME));
+                                    httpResponseElt.setAttribute(HttpResponse.HTTP_CODE_ATTR_NAME,
+                                            String.valueOf(HttpStatus.OK_200));
+                                    final Element httpBodyToVirtRootElt = addElement(jbiDocument, httpResponseElt,
+                                            new QName(NAMESPACE_SU_PARAM, HTTP_BODY_TO_JSON_VIRTUAL_ROOT));
+                                    httpBodyToVirtRootElt.setTextContent("process-instances");
+                                    final Element httpBodyToAutoArrayRootElt = addElement(jbiDocument, httpResponseElt,
+                                            new QName(NAMESPACE_SU_PARAM, HTTP_BODY_TO_JSON_AUTO_ARRAY));
+                                    httpBodyToAutoArrayRootElt.setTextContent("true");
+                                    final Element headerAccessCtrlOriginElt = addElement(jbiDocument, httpResponseElt,
+                                            new QName(NAMESPACE_SU_PARAM, HttpHeadersBuilder.HEADER_XML_TAG_NAME));
+                                    headerAccessCtrlOriginElt.setAttribute(HttpHeadersBuilder.HEADER_NAME_XML_ATTR_NAME,
+                                            HTTP_HEADER_ACCESS_CONTROL_ALLOW_ORIGIN);
+                                    final Element headerAccessCtrlOriginValElt = addElement(jbiDocument,
+                                            headerAccessCtrlOriginElt,
+                                            new QName(NAMESPACE_SU_PARAM, ConstantValueExtractor.XML_TAG_NAME));
+                                    headerAccessCtrlOriginValElt
+                                            .setTextContent(HTTP_HEADER_ACCESS_CONTROL_ALLOW_ORIGIN_VALUE);
+                                    final Element headerAccessCtrlAllowHeadersElt = addElement(jbiDocument,
+                                            httpResponseElt,
+                                            new QName(NAMESPACE_SU_PARAM, HttpHeadersBuilder.HEADER_XML_TAG_NAME));
+                                    headerAccessCtrlAllowHeadersElt.setAttribute(
+                                            HttpHeadersBuilder.HEADER_NAME_XML_ATTR_NAME,
+                                            HTTP_HEADER_ACCESS_CONTROL_ALLOW_HEADERS);
+                                    final Element headerAccessCtrlAllowHeadersValElt = addElement(jbiDocument,
+                                            headerAccessCtrlAllowHeadersElt,
+                                            new QName(NAMESPACE_SU_PARAM, ConstantValueExtractor.XML_TAG_NAME));
+                                    headerAccessCtrlAllowHeadersValElt
+                                            .setTextContent(HTTP_HEADER_ACCESS_CONTROL_ALLOW_HEADERS_VALUE);
+                                }
+                            }
+
                             // *******************************************************
                             // Operation: add child to request for school cafeteria
                             // ******************************************************
@@ -464,6 +544,12 @@
                             getProcessesInstancesResponseXslUrl);
                     serviceConfiguration.addResource(getProcessesInstancesResponseXslUrl);
 
+                    final URL searchProcessesInstancesResponseXslUrl = Thread.currentThread().getContextClassLoader()
+                            .getResource(SU_SCHOOL_CAFETERIA_HOME + "searchProcessesInstancesResponse.xsl");
+                    assertNotNull("Output XSL 'searchProcessesInstancesResponse.xsl' not found",
+                            searchProcessesInstancesResponseXslUrl);
+                    serviceConfiguration.addResource(searchProcessesInstancesResponseXslUrl);
+
                     serviceConfiguration.setParameter(new QName(NAMESPACE_SU_PARAM, SERVICE_BASE_PATH),
                             ADMINISTRATIVE_PROCEDURE_BASE_PATH);
 
Index: src/test/java/org/ow2/petals/binding/rest/exchange/incoming/SchoolCafeteriaTest.java
===================================================================
--- workspace/petals-trunk/components-sls/components/petals-bc-rest/petals-bc-rest/src/test/java/org/ow2/petals/binding/rest/exchange/incoming/SchoolCafeteriaTest.java	(revision 43416)
+++ workspace/petals-trunk/components-sls/components/petals-bc-rest/petals-bc-rest/src/test/java/org/ow2/petals/binding/rest/exchange/incoming/SchoolCafeteriaTest.java	(working copy)
@@ -17,9 +17,11 @@
  */
 package org.ow2.petals.binding.rest.exchange.incoming;
 
+import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Locale;
+import java.util.Map;
 import java.util.concurrent.Semaphore;
 import java.util.concurrent.TimeUnit;
 import java.util.logging.LogRecord;
@@ -39,6 +41,8 @@
 import org.city.administrative_procedures.school_cafeteria_registration._1.NewResponse;
 import org.city.administrative_procedures.school_cafeteria_registration._1.ProcessInstance;
 import org.city.administrative_procedures.school_cafeteria_registration._1.ProcessInstances;
+import org.city.administrative_procedures.school_cafeteria_registration._1.SearchProcessInstances;
+import org.city.administrative_procedures.school_cafeteria_registration._1.SearchProcessInstancesResponse;
 import org.city.administrative_procedures.school_cafeteria_registration._1.UnknownRequester;
 import org.city.administrative_procedures.school_cafeteria_registration._1.Update;
 import org.city.administrative_procedures.school_cafeteria_registration._1.Validate;
@@ -85,7 +89,8 @@
      * </p>
      * <ul>
      * <li>HTTP Method: POST,</li>
-     * <li>Without URI parameters,</li>
+     * <li>Without URI path parameters,</li>
+     * <li>Without URI query parameters,</li>
      * <li>Payload: JSON.</li>
      * </ul>
      */
@@ -157,7 +162,8 @@
      * </p>
      * <ul>
      * <li>HTTP Method: POST,</li>
-     * <li>With URI parameters,</li>
+     * <li>With URI path parameters,</li>
+     * <li>Without URI query parameters,</li>
      * <li>Payload: JSON.</li>
      * </ul>
      */
@@ -219,6 +225,7 @@
      * <ul>
      * <li>HTTP Method: PUT,</li>
      * <li>With URI parameters,</li>
+     * <li>Without URI query parameters,</li>
      * <li>Payload: JSON.</li>
      * </ul>
      */
@@ -312,7 +319,8 @@
      * </p>
      * <ul>
      * <li>HTTP Method: GET,</li>
-     * <li>With URI parameters,</li>
+     * <li>With URI path parameters,</li>
+     * <li>Without URI query parameters,</li>
      * <li>No payload,</li>
      * <li>HTTP Reply: data returned
      * <ul>
@@ -453,7 +461,8 @@
      * </p>
      * <ul>
      * <li>HTTP Method: GET,</li>
-     * <li>With URI parameters,</li>
+     * <li>With URI path parameters,</li>
+     * <li>Without URI query parameters,</li>
      * <li>No payload,</li>
      * <li>HTTP Reply: fault returned
      * <ul>
@@ -525,8 +534,115 @@
      * Check the processing of the following REST request:
      * </p>
      * <ul>
+     * <li>HTTP Method: GET,</li>
+     * <li>With URI path parameters,</li>
+     * <li>With URI query parameters,</li>
+     * <li>No payload,</li>
+     * <li>HTTP Reply: data returned
+     * <ul>
+     * <li>HTTP code: 200,</li>
+     * <li>Payload: JSON,</li>
+     * <li>with headers.</li>
+     * </ul>
+     * </li>
+     * </ul>
+     */
+    @Test
+    public void getWithQueryParameter() throws Exception {
+
+        final String expectedRequester = "jdoe";
+        final String expectedProcInst1 = "AZER";
+        final String expectedProcInst2 = "REZA";
+
+        // Invoke REST resource
+        final Semaphore lock = new Semaphore(1);
+        final Map<String, String> queryParameters = new HashMap<>();
+        queryParameters.put("requester", expectedRequester);
+        final ResourceInvoked resourceInvoked = this.invokeAsyncResource(HttpMethod.GET.asString(), this.uriBase,
+                "school-cafeteria/process-instances", queryParameters, lock, false, null);
+
+        final RequestMessage request = COMPONENT_UNDER_TEST.pollRequestFromConsumer();
+
+        // Check the request
+        assertNotNull(request);
+        assertNotNull("No XML payload in request", request.getPayload());
+        assertEquals(0, request.getInAttachmentNames().size());
+        final Object requestBeanObj = UNMARSHALLER.unmarshal(request.getPayload());
+        assertTrue(requestBeanObj instanceof SearchProcessInstances);
+        final SearchProcessInstances requestBean = (SearchProcessInstances) requestBeanObj;
+        assertEquals(expectedRequester, requestBean.getRequester());
+
+        final SearchProcessInstancesResponse responseBean = new SearchProcessInstancesResponse();
+        responseBean.getProcessInstanceId().add(expectedProcInst1);
+        responseBean.getProcessInstanceId().add(expectedProcInst2);
+
+        final ResponseToConsumerMessage responseMsg = new ResponseToConsumerMessage(request, responseBean, MARSHALLER);
+        COMPONENT_UNDER_TEST.pushResponseToConsumer(responseMsg);
+
+        // Wait the Rest response
+        assertTrue(lock.tryAcquire(Component.DEFAULT_TIMEOUT, TimeUnit.MILLISECONDS));
+
+        final StatusMessage statusMsg = COMPONENT_UNDER_TEST.pollStatusFromConsumer();
+        assertEquals(ExchangeStatus.DONE, statusMsg.getStatus());
+
+        // Check the returned text
+        final Response response = resourceInvoked.getResponseFuture().get();
+        assertEquals(HttpStatus.OK_200, response.getStatus());
+        assertEquals(HTTP_HEADER_ACCESS_CONTROL_ALLOW_ORIGIN_VALUE,
+                response.getHeaderString(HTTP_HEADER_ACCESS_CONTROL_ALLOW_ORIGIN));
+        assertEquals(HTTP_HEADER_ACCESS_CONTROL_ALLOW_HEADERS_VALUE,
+                response.getHeaderString(HTTP_HEADER_ACCESS_CONTROL_ALLOW_HEADERS));
+        final String responseStr = response.readEntity(String.class);
+        final JsonElement responseJson = new JsonParser().parse(responseStr);
+        assertTrue(responseJson.isJsonObject());
+        final JsonElement procInstsJson = responseJson.getAsJsonObject().get("process-instance");
+        assertNotNull(procInstsJson);
+        assertTrue(procInstsJson.isJsonArray());
+        final JsonArray procInstsArrayJson = procInstsJson.getAsJsonArray();
+        assertNotNull(procInstsArrayJson);
+        assertEquals(2, procInstsArrayJson.size());
+        boolean procInst1_found = false;
+        boolean procInst2_found = false;
+        final Iterator<JsonElement> procInstJsonEltIt = procInstsArrayJson.iterator();
+        while (procInstJsonEltIt.hasNext()) {
+            final JsonElement procInstJsonElt = procInstJsonEltIt.next();
+            assertTrue(procInstJsonElt.isJsonObject());
+            final String procInstId = procInstJsonElt.getAsJsonObject().get("id").getAsString();
+            if (procInstId.equals(expectedProcInst1)) {
+                procInst1_found = true;
+            } else if (procInstId.equals(expectedProcInst2)) {
+                procInst2_found = true;
+            } else {
+                fail("Unexpected process instance id");
+            }
+        }
+        assertTrue(procInst1_found);
+        assertTrue(procInst2_found);
+
+        // Wait the last MONIT trace that is printed after the HTTP response is sent
+        final int expectedNbMONITLogs = 4;
+        waitLastMONITTrace(expectedNbMONITLogs);
+
+        // Check MONIT traces
+        final List<LogRecord> monitLogs = IN_MEMORY_LOG_HANDLER.getAllRecords(Level.MONIT);
+        assertEquals(expectedNbMONITLogs, monitLogs.size());
+        final FlowLogData beginFlowLogData = assertMonitRestConsumerBeginLog(HttpMethod.GET.asString(),
+                resourceInvoked.getResource().getUri(), monitLogs.get(0));
+        final FlowLogData beginExtFlowLogData = assertMonitProviderBeginLog(beginFlowLogData,
+                SCHOOL_CAFETERIA_REGISTRATION_ITF, SCHOOL_CAFETERIA_REGISTRATION_SVC, SCHOOL_CAFETERIA_REGISTRATION_EDP,
+                SEARCH_PROC_INSTS_OPERATION, monitLogs.get(1));
+        assertMonitProviderEndLog(beginExtFlowLogData, monitLogs.get(2));
+        assertMonitConsumerExtEndLog(beginFlowLogData, monitLogs.get(3));
+    }
+
+    /**
+     * <p>
+     * Check the processing of the following REST request:
+     * </p>
+     * <ul>
      * <li>HTTP Method: PATCH,</li>
-     * <li>Without URI parameters,</li>
+     * <li>Without URI path parameters,</li>
+     * <li>Without URI query parameters,</li>
      * <li>Payload: JSON.</li>
      * </ul>
      */
Index: src/test/resources/su/school-cafeteria/school-cafeteria.wsdl
===================================================================
--- workspace/petals-trunk/components-sls/components/petals-bc-rest/petals-bc-rest/src/test/resources/su/school-cafeteria/school-cafeteria.wsdl	(revision 43416)
+++ workspace/petals-trunk/components-sls/components/petals-bc-rest/petals-bc-rest/src/test/resources/su/school-cafeteria/school-cafeteria.wsdl	(working copy)
@@ -97,6 +97,23 @@
             </xsd:complexType>
          </xsd:element>
 
+         <xsd:element name="searchProcessInstances">
+            <xsd:complexType>
+               <xsd:sequence>
+                  <xsd:element name="requester" type="xsd:string" minOccurs="1" maxOccurs="1" />
+               </xsd:sequence>
+            </xsd:complexType>
+         </xsd:element>
+
+         <xsd:element name="searchProcessInstancesResponse">
+            <xsd:complexType>
+               <xsd:sequence>
+                  <xsd:element name="process-instance-id" type="xsd:string" maxOccurs="unbounded"
+                     minOccurs="1" />
+               </xsd:sequence>
+            </xsd:complexType>
+         </xsd:element>
+
          <xsd:element name="addChild">
             <xsd:complexType>
                <xsd:sequence>
@@ -171,6 +188,12 @@
    <wsdl:message name="getProcessInstancesResponse">
       <wsdl:part name="getProcessInstancesResponse" element="registration:getProcessInstancesResponse" />
    </wsdl:message>
+   <wsdl:message name="searchProcessInstancesRequest">
+      <wsdl:part name="searchProcessInstancesRequest" element="registration:searchProcessInstances" />
+   </wsdl:message>
+   <wsdl:message name="searchProcessInstancesResponse">
+      <wsdl:part name="searchProcessInstancesResponse" element="registration:searchProcessInstancesResponse" />
+   </wsdl:message>
    <wsdl:message name="addChild">
       <wsdl:part name="parameters" element="registration:addChild" />
    </wsdl:message>
@@ -203,6 +226,10 @@
          <wsdl:output message="registration:getProcessInstancesResponse" />
          <wsdl:fault message="registration:unknownRequester" name="unknownRequester" />
       </wsdl:operation>
+      <wsdl:operation name="searchProcessInstances">
+         <wsdl:input message="registration:searchProcessInstancesRequest" />
+         <wsdl:output message="registration:searchProcessInstancesResponse" />
+      </wsdl:operation>
       <wsdl:operation name="addChild">
          <wsdl:input message="registration:addChild" />
          <wsdl:fault message="registration:requestUnknown" name="requestUnknown" />
@@ -244,6 +271,15 @@
             <soap:fault name="unknownRequester" use="literal" />
          </wsdl:fault>
       </wsdl:operation>
+      <wsdl:operation name="searchProcessInstances">
+         <soap:operation soapAction="http://city.org/administrative-procedures/scholl-cafeteria-registration/1.0/searchProcessInstances" />
+         <wsdl:input>
+            <soap:body use="literal" />
+         </wsdl:input>
+         <wsdl:output>
+            <soap:body use="literal" />
+         </wsdl:output>
+      </wsdl:operation>
       <wsdl:operation name="addChild">
          <soap:operation soapAction="http://city.org/administrative-procedures/scholl-cafeteria-registration/1.0/addChild" />
          <wsdl:input>
Index: src/test/resources/su/school-cafeteria/searchProcessesInstancesResponse.xsl
===================================================================
--- workspace/petals-trunk/components-sls/components/petals-bc-rest/petals-bc-rest/src/test/resources/su/school-cafeteria/searchProcessesInstancesResponse.xsl	(nonexistent)
+++ workspace/petals-trunk/components-sls/components/petals-bc-rest/petals-bc-rest/src/test/resources/su/school-cafeteria/searchProcessesInstancesResponse.xsl	(working copy)
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2019 Linagora
+ 
+ This program/library is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as published by
+ the Free Software Foundation, either version 2.1 of the License, or (at your
+ option) any later version.
+ 
+ This program/library is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
+ for more details.
+ 
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program/library; If not, see http://www.gnu.org/licenses/
+ for the GNU Lesser General Public License version 2.1.
+-->
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+   xmlns:registration="http://city.org/administrative-procedures/school-cafeteria-registration/1.0">
+
+   <xsl:output method="xml" encoding="UTF-8" omit-xml-declaration="no"/>
+
+   <xsl:template match="/">
+      <xsl:apply-templates select="registration:searchProcessInstancesResponse" />
+   </xsl:template>
+   
+   <xsl:template match="registration:searchProcessInstancesResponse">
+      <xsl:element name="process-instances">
+         <xsl:apply-templates select="process-instance-id" />
+      </xsl:element>
+   </xsl:template>
+   
+   <xsl:template match="process-instance-id">
+      <xsl:element name="process-instance">
+         <xsl:element name="id"><xsl:value-of select="text()"/></xsl:element>
+      </xsl:element>
+   </xsl:template>
+
+</xsl:stylesheet>
