# What is ESP?

ESP is a software suite built by ESS and sold to customers. It is deployed on a **per-customer basis** — similar to TMC (another internal product) but with fewer applications in the suite.

Key traits:

  - Customers only have the apps **they use** — not every customer gets everything
  - Customers may have multiple environments (e.g. TEST and PROD)
  - Test and PROD instances may live on the **same server** — this is a risk to be mindful of during deployment

# Application Categories

ESP applications fall into three categories:

## 1\. Databases

| Application | Type       | Notes                                       |
| ----------- | ---------- | ------------------------------------------- |
| EspBroker   | SQL Server | The core ESP database. Deployed via dacpac. |

See [[ESP Database]] for Dacpac detail.

## 2\. Windows Services

[[Windows Services]] are background processes that run on a Windows server. They have no UI — they start, run, and are managed via the Windows Service Manager (or PowerShell commands like `Stop-Service`, `Start-Service`).

| Service Name    | Notes                             |
| --------------- | --------------------------------- |
| DLService       | Unknown specific function (TBC)   |
| EmailService    | Likely handles outbound emails    |
| ExPlService     | Unknown specific function (TBC)   |
| MISService      | Unknown specific function (TBC)   |
| OutboundService | Likely handles outbound messaging |
| ULService       | Unknown specific function (TBC)   |

### Working with Windows Services in PowerShell

``` powershell
# Stop a service
Stop-Service -Name "DLService" -Force

# Start a service
Start-Service -Name "DLService"

# Check service status
Get-Service -Name "DLService"

# Wait for a service to stop
(Get-Service -Name "DLService").WaitForStatus('Stopped', '00:01:00') 
```

### Why Services Must Be Stopped Before Deployment

When deploying a new version, the old service process holds file locks on its [[DLL's]]. You cannot overwrite a locked file on Windows. Therefore the sequence is:

1.  Stop the service
2.  Swap the files (old → new)
3.  Start the service

## 3\. Citrix Applications

Citrix is a technology that **streams desktop applications** to users remotely - the app runs on a server but the user sees it on their machine, similar to a remote desktop but on a per-app basis.

| Application   | Notes                        |
| ------------- | ---------------------------- |
| VPlanner      | Main planning application    |
| VPlannerAdmin | Admin interface for VPlanner |
| ImportApp     | Data import application      |

### Citrix Deployment Considerations

Citrix apps are more complex to deploy than Windows Services because:

  - **Active user sessions** may be running — you can't just swap files
  - You must **notify users** of the upcoming upgrade and give a grace period
  - After the grace period, **kill any remaining sessions**
  - The actual upgrade mechanism is **still TBC** — believed to be a file copy with handling for locked executables built in
  - Post-deploy **cycle checks** require navigating Citrix UI — hard to automate

# Per-Customer App Lists

Unlike TMC (where presumably all customers get everything), ESP is a subset deployment. This means:

  - The manifest (see [[ESP Manifest]]) must define **which apps each customer has**
  - The deployment scripts must skip apps not applicable to a given customer
  - There is no universal "deploy everything" - each customer's list must be explicitly defined and maintained

# Completeness of This List

The handover document states this list is believed complete but **has not been confirmed**. Treat it as a working assumption, not a guarantee. Validate against actual customer environments when possible.
