Customizing Email Notification Templates
CloudShell email notifications are based on HTML templates, which can be customized as appropriate.
Make backup copies of any templates you want to customize just in case you need to revert back. Upgrading CloudShell will override any custom templates you have so make sure to keep backups.
To avoid this, keep your templates outside the installation directory using the EmailTemplatesDirectory key.
After modifying these files, restart the Quali Server service for the changes to take effect.
These templates reside on the Quali Server machine at C:\Program Files (x86)\QualiSystems\CloudShell\Server\EmailTemplates and use a combination of text and CloudShell variables that pass information from CloudShell.
Storing templates outside the installation directory
Starting with CloudShell 2024.1.0.2529, the templates directory is configurable. Pointing it outside the CloudShell installation directory keeps your customized templates from being overwritten when you upgrade.
To change it, add the following key to customer.config in the Quali Server installation directory and restart the Quali Server service:
<add key="EmailTemplatesDirectory" value="D:\CloudShellCustom\EmailTemplates"/>
- When the key is absent or empty, CloudShell uses the default
EmailTemplatesfolder under the Quali Server installation directory. - The directory you point to must contain the full set of template files that CloudShell expects — it replaces the default directory rather than layering on top of it. Copy the default
EmailTemplatesfolder to the new location before setting the key, then customize the copy.
For example, the "Sandbox Ending" email template:

The "Sandbox Ending" email notification:

Email templates
Job templates:
- JobExecutionEnded: Emailed when a job's execution has finished.
- JobExecutionEnding: Emailed when a job's blueprint reaches overtime.
- JobExecutionStarted: Emailed when a job's execution starts.
- JobSuiteEnded: Emailed when all of a suite's jobs have finished their execution.
- JobSuiteStarted: Emailed when a suite's execution starts.
Reservation templates:
-
MultipleServersAreUsingTheDatabase: When Quali Server detects that another Quali Server is already using the Quali SQL database, CloudShell sends this email and disables itself to prevent data consistency issues.
-
PermittedUserAddedToReservation: Emailed to users when they are added as permitted users to an a sandbox.
-
ReservationCanceled: Emailed when the sandbox is canceled.
-
ReservationEnded: Emailed when the sandbox is torn down. Corresponds to the On end email notification defined on the sandbox.
-
ReservationEnding: Emailed before a sandbox begins teardown. Corresponds to the Before end email notification defined on the sandbox.
-
ReservationPending: Emailed when a future sandbox is reserved.
-
ReservationRescheduled: Emailed when a sandbox's duration has been modified.
-
ReservationSetupCompleted: Emailed when a sandbox's setup phase completes. Corresponds to the On setup complete email notification defined on the sandbox.
-
ReservationStarted: Emailed when a sandbox is reserved. Corresponds to the On start email notification defined on the sandbox.
License templates:
- LicenseExtendedReservationLimitExceeded: Emailed to users when their reservation request is rejected because they have reached their concurrent reservations limit.
- LicensePoolLimitExceeded: Emailed to users when their reservation request is rejected because the domain's concurrent reservations limit has been reached.
- LicenseReservationLimitExceeded: Emailed to users who have reached their concurrent reservations limit.
Available variables
Reservation variables:
-
Now: Time at which the email notification was sent.
-
ReservationName: Sandbox name.
-
ReservationStartTime: Time at which the sandbox was reserved.
-
TimeZone
-
ReservationMainTopology: Blueprint on which the sandbox is based.
-
ReservationLink / ReservationLinkHelp: Used in the link to the sandbox workspace. For example:
<a href="{{ReservationLink}}">{{ReservationLinkHelp}}</a> -
ReservationOwner: Owner of the reservation. Reservation creator by default.
-
ReservationId: Sandbox ID
-
ReservationEndTimeWithTimeZoneOrPersistent: Planned end time. "No end time" is displayed for persistent sandboxes.
-
ReservationDescription: Sandbox description.
-
ReservationResources: Details of the sandbox's resources.
-
ReservationNumberOfResources: Number of resources in the sandbox.
-
ReservationConflicts: Resource conflicts that occurred when reserving the sandbox.
Job variables:
For some of these variables, the information provided depends on the type of execution - job or suite.
-
SuiteName: Automation suite name.
-
JobName
-
StartDate: Job/suite execution start date, depending on the notification.
-
EndDate: Job/suite execution end date, depending on the notification.
-
Result: Job/suite execution result, depending on the notification.
-
Owner: Owner of the job or suite.
-
TriggeredBy: Indicates how the Automation Suite was triggered: Manual ("User”), API or Scheduled.
-
Description
-
TopologyName: Blueprint attached to the job.
-
TotalNumberOfTests: Number of tests in the job.
-
State: Job's completion state.
-
Result: Job/suite execution result. For details, see Viewing Test, Job and Suite Execution Results.
-
FailureReason
-
JobSuitePage: Link to the suite's execution page.
-
JobPageLink: Used to build the link to the job''s execution page. For example:
To view job progress <a href="{{JobPageLink}}">click here</a>
License variables:
- MessageTitle: Title of the email notification. For example: "Reservations Limit Exceeded".
- ReservationOwner
- ReservationName
- LimitExceededDate: Date at which the concurrent reservation limit was reached.
- LimitExceededTime: Time at which the concurrent reservation limit was reached.
- TimeZone
- Domain: Domain in which the limit was reached.
- LicensePoolName: Name of the domain's license pool, which indicates the domain's number of allowed concurrent reservations.