# Diagnosing service port issues

**Issue:** When starting up the OpenIZ immunization management service, the service interfaces appear to be unavailable.

**Applies To:**

* OpenIZ Immunization Management Service

**Symptoms:**

* OpenIZ Host Process does not start with one of the following errors:
  * Port reservation for <http://+:8080/> failed
  * WCF Exception - Port is in use
* OpenIZ Host Process starts when configured for HTTPS however the service is not accessible.

**Cause:** Typically these symptoms are caused by improper security settings on the server environment or from a server port conflict. Usually OpenIZ hosts will run on port 8080 when not secured and 8443 when secured by SSL.

**Solution:**

If you encounter the issue regarding conflicting port numbers, try changing the port:

1. Open **C:\Program Files (x86)\Mohawk College\OpenIZ\openiz.exe.config** in a text editor
2. Navigate to the **\<system.serviceModel>** section and locate the **\<service>** entry which is causing the issue, change the **baseAddress** and **address** attributes to a different port number.

   ```
   <service name="OpenIZ.Authentication.OAuth2" behaviorConfiguration="oauth2_behavior">
     <host>
       <baseAddresses>
         <add baseAddress="http://0.0.0.0:8080/auth"/>
       </baseAddresses>
     </host>
     <endpoint address="http://0.0.0.0:8080/auth" binding="webHttpBinding" name="OpenIZ.Authentication.OAuth2" contract="OpenIZ.Authentication.OAuth2" bindingConfiguration="oauth2_binding"/>
   </service>
   ```
3. Restart the OpenIZ host process with
   * **net stop openiz**
   * **net start openiz**

If you encounter an error indicating port reservation failed, reserve the port for the service user which OpenIZ host process is running on:

1. Open a command prompt as a Windows Administrative user.
2. Type the following command substituting **user** with the user under which the OpenIZ host process operates and the **url** parameter with the URL reservation from the error code.

   ```
   netsh http add urlacl url=http://+:8080/imsi user=myser
   ```
3. Attempt to start the OpenIZ Host process again with
   * **net start openiz**

If the OpenIZ host process starts successfully, however you cannot access the service and are using HTTPS, enable your registered SSL certificate for the endpoint.

1. Open **C:\Program Files (x86)\Mohawk College\OpenIZ\openiz.exe.config** in a text editor
2. Navigate to the **\<system.serviceModel>** section and locate the **\<service>** entry which is causing the issue, note the port on which the service is running and the **behaviorConfiguration** attribute.
3. Navigate to the **\<behaviors>** section and locate the behavior entry noted in the **behaviorConfiguration** and copy the **findValue** attribute.

   ```
   <behavior name="ami_behavior">
    <serviceCredentials>
       <serviceCertificate storeLocation="LocalMachine" storeName="My" x509FindType="FindByThumbprint" findValue="certificate thumbprint"/>
       </serviceCredentials>
   ```
4. Open a command prompt as a Windows Administrative user.
5. Generate a random UUID for your registry entry (you can use <https://www.uuidgenerator.net/>)
6. Run the following command to reserve the SSL certificate substituting **ipport** with the public IP of the machine (or 0.0.0.0 for all IP addresses) and port the service is listening on, substituting **certhash** with the copied **findValue** from step #3.

   ```
   netsh http add sslcert ipport=0.0.0.0:8443 certhash=certificate_thumbprint appid={uuid}
   ```
7. Restart the OpenIZ host process with
   * **net stop openiz**
   * **net start openiz**


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://help.santesuite.org/knowledgebase/sdb-kb/kb012-diagnosing-service-port-issues.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
