Skip to content

Notifications

When a notification is removed from a release, its database row is not deleted automatically. Run waldur load_notifications <file> --prune to report and remove notifications whose key is no longer listed below, along with any of their templates that no other notification declares and that have no operator-customised content. Customised template content is never deleted automatically.

WALDUR_CORE.STRUCTURE

structure.change_email_request

A notification sent out when an email change is requested. Recipient is the old email address.

Templates

1
    Verify new email address.
1
    To confirm the change of email address from {{ request.user.email }} to {{ request.email }}, follow the {{ link }}.
1
    <p>To confirm the change of email address from {{ request.user.email }} to {{ request.email }}, follow the <a href="{{ link }}">link</a>.</p>

structure.notification_project_end_date_change_request_approved

Notifies the requester when their project end date change request is approved.

Templates

1
    Project end date change request for {{ project_end_date_change_request.project.name }} has been approved
1
2
3
4
5
6
7
8
    Hello!

    Your request to change the end date of project {{ project_end_date_change_request.project.name }} to {{ project_end_date_change_request.requested_end_date }} has been approved.

    You can view the project here:
    {{ project_url }}

    Thank you!
1
2
3
4
    <p>Hello!</p>
    <p>Your request to change the end date of project <strong>{{ project_end_date_change_request.project.name }}</strong> to <strong>{{ project_end_date_change_request.requested_end_date }}</strong> has been approved.</p>
    <p>You can <a href="{{ project_url }}">view the project here</a>.</p>
    <p>Thank you!</p>

structure.notification_project_end_date_change_request_created

Notifies organization owners when a project member requests to change project end date.

Templates

1
    Project end date change request for {{ project_end_date_change_request.project.name }}
1
2
3
4
5
6
7
8
    Hello!

    {{ project_end_date_change_request.created_by.full_name }} has requested to change the end date of project {{ project_end_date_change_request.project.name }} from {{ project_end_date_change_request.project.end_date }} to {{ project_end_date_change_request.requested_end_date }}.

    Please review and approve or reject the request:
    {{ project_url }}

    Thank you!
1
2
3
4
    <p>Hello!</p>
    <p>{{ project_end_date_change_request.created_by.full_name }} has requested to change the end date of project <strong>{{ project_end_date_change_request.project.name }}</strong> to <strong>{{ project_end_date_change_request.requested_end_date }}</strong>.</p>
    <p>Please <a href="{{ project_url }}">review and approve or reject the request</a>.</p>
    <p>Thank you!</p>

structure.notification_project_end_date_change_request_rejected

Notifies the requester when their project end date change request is rejected.

Templates

1
    Project end date change request for {{ project_end_date_change_request.project.name }} has been rejected
1
2
3
4
5
6
7
8
    Hello!

    Your request to change the end date of project {{ project_end_date_change_request.project.name }} to {{ project_end_date_change_request.requested_end_date }} has been rejected.

    You can view the project here:
    {{ project_url }}

    Thank you!
1
2
3
4
    <p>Hello!</p>
    <p>Your request to change the end date of project <strong>{{ project_end_date_change_request.project.name }}</strong> to <strong>{{ project_end_date_change_request.requested_end_date }}</strong> has been rejected.</p>
    <p>You can <a href="{{ project_url }}">view the project here</a>.</p>
    <p>Thank you!</p>

structure.notifications_profile_changes_operator

A notification sent to Waldur operators when a user's profile is updated.

Templates

1
    Owner details have been updated
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
    Owner of
    {% for o in organizations %}
        {{ o.name }} {% if o.abbreviation %} ({{ o.abbreviation }}){% endif %}{% if not forloop.last %}, {% endif %}
    {% endfor %}

    {{user.full_name}} (id={{ user.id }}) has changed

    {% for f in fields %}
        {{ f.name }} from {{ f.old_value }} to {{ f.new_value }}{% if not forloop.last %}, {% else %}.{% endif %}
    {% endfor %}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
    Owner of
    {% for o in organizations %}
        {{ o.name }} {% if o.abbreviation %} ({{ o.abbreviation }}){% endif %}{% if not forloop.last %}, {% endif %}
    {% endfor %}

    {{user.full_name}} (id={{ user.id }}) has changed

    {% for f in fields %}
        {{ f.name }} from {{ f.old_value }} to {{ f.new_value }}{% if not forloop.last %}, {% else %}.{% endif %}
    {% endfor %}

structure.project_digest

Periodic project summary digest sent to project members.

Templates

1
    {% load i18n %}{% blocktrans with org=organization_name %}Project Summary - {{ org }}{% endblocktrans %}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
    {% load i18n %}{% trans "Project Summary" %} - {{ organization_name }}
    {% trans "Period" %}: {{ period_label }}

    {% for project in projects %}
    {{ project.name }}
    {% for section in project.sections %}
    {{ section.title }}
    {{ section.text_content }}
    {% endfor %}
    ---
    {% endfor %}

    {% blocktrans with org=organization_name %}This is an automated digest from {{ org }}.{% endblocktrans %}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
    {% load i18n %}
    <!DOCTYPE html>
    <html>
    <body style="font-family: Arial, sans-serif; max-width: 800px; margin: 0 auto; padding: 20px;">
      <h1 style="color: #333;">{% trans "Project Summary" %} - {{ organization_name }}</h1>
      <p style="color: #666;">{% trans "Period" %}: {{ period_label }}</p>

      {% for project in projects %}
        <h2 style="color: #444; border-bottom: 1px solid #ddd; padding-bottom: 8px;">{{ project.name }}</h2>
        {% for section in project.sections %}
          <h3 style="color: #555;">{{ section.title }}</h3>
          {{ section.html_content|safe }}
        {% endfor %}
        <hr style="border: none; border-top: 1px solid #eee; margin: 20px 0;">
      {% endfor %}

      <p style="color: #999; font-size: 12px;">
        {% blocktrans with org=organization_name %}This is an automated digest from {{ org }}.{% endblocktrans %}
      </p>
    </body>
    </html>

structure.structure_role_granted

A notification sent out when a role is granted. The recipient is the user who received the role.

Templates

1
    Role granted.
1
    Role {{ permission.role }}  for {{ structure }} has been granted.
1
    <p>Role {{ permission.role }}  for {{ structure }} has been granted.</p>

WALDUR_CORE.USERS

users.call_invitation_created

Sent to a user invited to a call for proposals so they can accept the invitation.

Templates

1
2
3
4
5
    {% if reminder %}
    REMINDER: Invitation to the call "{{ name }}"
    {% else %}
    Invitation to the call "{{ name }}"
    {% endif %}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
    Hello!

    {{ sender }} has invited you to take part in the call for proposals "{{ name }}"{% if organizer_name %} organised by {{ organizer_name }}{% endif %} as {{ role }}.

    Please visit the link below to sign up and accept your invitation:
    {{ link }}

    Please note: this invitation expires at {{ invitation.get_expiration_time|date:'d.m.Y H:i' }}!
    {% if scope_link %}
    Once you have accepted it, the call is available at:
    {{ scope_link }}
    {% endif %}
    {{ extra_invitation_text }}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
    <html>
    <head lang="en">
        <meta charset="UTF-8">
        <title>Invitation to the call "{{ name }}"</title>
    </head>
    <body>
    <p>
        Hello!
    </p>
    <p>
        {{ sender }} has invited you to take part in the call for proposals
        "<strong>{{ name }}</strong>"{% if organizer_name %} organised by {{ organizer_name }}{% endif %}
        as {{ role }}.<br>
        Please visit <a href="{{ link }}">this page</a> to sign up and accept your invitation.
        Please note: this invitation expires at {{ invitation.get_expiration_time|date:'d.m.Y H:i' }}!
    </p>
    {% if scope_link %}
    <p>
        Once you have accepted it, the call is available <a href="{{ scope_link }}">here</a>.
    </p>
    {% endif %}
    <p>
        {{ extra_invitation_text }}
    </p>
    </body>
    </html>

users.invitation_approved

Sent to a new user after their invitation is approved and a new account is created for them.

Templates

1
    Account has been created
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
    Hello!

    {{ sender }} has invited you to join {{ name }} {{ type }} in {{ role }} role.
    Please visit the link below to sign up and accept your invitation:
    {{ link }}

    Your credentials are as following.

    Username is {{ username }}

    Your password is {{ password }}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
    <html>
    <head lang="en">
        <meta charset="UTF-8">
        <title>Account has been created</title>
    </head>
    <body>
    <p>
        Hello!
    </p>
    <p>
        {{ sender }} has invited you to join {{ name }} {{ type }} in {{ role }} role.<br>
        Please visit <a href="{{ link }}">this page</a> to sign up and accept your invitation.
    </p>
    <p>
      Your credentials are as following.
    </p>
    <p>
      Your username is {{ username }}
    </p>
    <p>
      Your password is {{ password }}
    </p>
    </body>
    </html>

users.invitation_created

Sent to an invited user so they can accept the invitation.

Templates

1
2
3
4
5
    {% if reminder %}
    REMINDER: Invitation to {{ name }} {{ type }}
    {% else %}
    Invitation to {{ name }} {{ type }}
    {% endif %}
1
2
3
4
5
6
    Hello!

    {{ sender }} has invited you to join {{ name }} {{ type }} in {{ role }} role.
    Please visit the link below to sign up and accept your invitation:
    {{ link }}
    {{ extra_invitation_text }}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
    <html>
    <head lang="en">
        <meta charset="UTF-8">
        <title>Invitation to {{ name }} {{ type }}</title>
    </head>
    <body>
    <p>
        Hello!
    </p>
    <p>
        {{ sender }} has invited you to join {{ name }} {{ type }} in {{ role }} role.<br>
        Please visit <a href="{{ link }}">this page</a> to sign up and accept your invitation.
        Please note: this invitation expires at {{ invitation.get_expiration_time|date:'d.m.Y H:i' }}!
    </p>
    <p>
        {{ extra_invitation_text }}
    </p>
    </body>
    </html>

users.invitation_expired

Sent to the invitation creator to inform them that an invitation has expired.

Templates

1
    Invitation has expired
1
2
3
4
    Hello!

    An invitation to {{ invitation.email }} has expired.
    This invitation expires at {{ invitation.get_expiration_time|date:'d.m.Y H:i' }}.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
    <html>
    <head lang="en">
        <meta charset="UTF-8">
        <title>Invitation to {{ invitation.email }} has expired</title>
    </head>
    <body>
    <p>
        Hello!
    </p>
    <p>
        An invitation to {{ invitation.email }} has expired <br>
        An invitation to {{ invitation.email }} has expired at {{ invitation.get_expiration_time|date:'d.m.Y H:i' }}.

    </p>
    </body>
    </html>

users.invitation_rejected

Sent to the invitation creator to inform them that their invitation has been rejected.

Templates

1
    Invitation has been rejected
1
2
3
4
5
6
7
8
9
    Hello!

    The following invitation has been rejected.

    Full name: {{ invitation.full_name }}

    Target: {{ name }} {{ type }}

    Role: {{ role }}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
    <html>
    <head lang="en">
        <meta charset="UTF-8">
        <title>Invitation to {{ name }} {{ type }}</title>
    </head>
    <body>
    <p>
        Hello!
    </p>
    <p>
      The following invitation has been rejected.
    </p>

    <p>
      Full name: {{ invitation.full_name }}
    </p>

    <p>
      Target: {{ name }} {{ type }}
    </p>

    <p>
      Role: {{ role }}
    </p>
    </body>
    </html>

users.invitation_requested

Sent to staff users so they can approve or reject a pending invitation.

Templates

1
    Invitation request
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
    Hello!

    {{ sender }} has created invitation request for the following user
    to join {{ name }} {{ type }} in {{ role }} role.

    {% if invitation.civil_number %}
    Civil number: {{ invitation.civil_number }}
    {% endif %}

    {% if invitation.phone_number %}
    Phone number: {{ invitation.phone_number }}
    {% endif %}

    E-mail: {{ invitation.email }}

    {% if invitation.full_name %}
    Full name: {{ invitation.full_name }}
    {% endif %}

    {% if invitation.native_name %}
    Native name: {{ invitation.native_name }}
    {% endif %}

    {% if invitation.organization %}
    Organization: {{ invitation.organization }}
    {% endif %}

    {% if invitation.job_title %}
    Job title: {{ invitation.job_title }}
    {% endif %}

    Please visit the link below to approve invitation: {{ approve_link }}

    Alternatively, you may reject invitation: {{ reject_link }}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
    <html>
    <head lang="en">
      <meta charset="UTF-8">
      <title>Invitation request</title>
    </head>
    <body>
    <p>
      Hello!
    </p>
    <p>
      {{ sender }} has created invitation request for the following user
      to join {{ name }} {{ type }} in {{ role }} role.
    </p>

    {% if invitation.civil_number %}
      <p>
        Civil number: {{ invitation.civil_number }}
      </p>
    {% endif %}

    {% if invitation.phone_number %}
      <p>
        Phone number: {{ invitation.phone_number }}
      </p>
    {% endif %}

    <p>
      E-mail: {{ invitation.email }}
    </p>

    {% if invitation.full_name %}
      <p>
        Full name: {{ invitation.full_name }}
      </p>
    {% endif %}

    {% if invitation.native_name %}
      <p>
        Native name: {{ invitation.native_name }}
      </p>
    {% endif %}

    {% if invitation.organization %}
      <p>
        Organization: {{ invitation.organization }}
      </p>
    {% endif %}

    {% if invitation.job_title %}
      <p>
        Job title: {{ invitation.job_title }}
      </p>
    {% endif %}

    <p>
      Please <a href="{{ approve_link }}">approve</a> or <a href="{{ reject_link }}">reject</a> invitation.
    </p>
    </body>
    </html>

users.permission_request_rejected

Sent to the user who submitted a permission request to inform them that their request has been rejected.

Templates

1
    Your permission request has been rejected
1
2
3
4
5
6
    Hello!

    Your permission request for {{ permission_request.invitation }} has been rejected.
    {% if permission_request.review_comment %}
    Reviewer comment: {{ permission_request.review_comment }}
    {% endif %}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
    <html>
    <head lang="en">
      <meta charset="UTF-8">
      <title>Your permission request has been rejected</title>
    </head>
    <body>
    <p>
      Hello!
    </p>
    <p>
      Your permission request for {{ permission_request.invitation }} has been rejected.
    </p>
    {% if permission_request.review_comment %}
    <p>
      Reviewer comment: {{ permission_request.review_comment }}
    </p>
    {% endif %}
    </body>
    </html>

users.permission_request_submitted

Sent about a submitted permission request to the organization owners and managers who can approve it, and to the organization's contact and notification emails. Falls back to staff when none of these are available.

Templates

1
    Permission request has been submitted.
1
2
3
4
5
    Hello!

    User {{ permission_request.created_by }} with email {{ permission_request.created_by.email }} created permission request for {{ permission_request.invitation }}.

    Please visit the link below to approve or reject permission request: {{ requests_link }}.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
    <html>
    <head lang="en">
      <meta charset="UTF-8">
      <title>Permission request has been submitted.</title>
    </head>
    <body>
    <p>
      Hello!
    </p>
    <p>
      User {{ permission_request.created_by }} with email {{ permission_request.created_by.email }} created permission request for {{ permission_request.invitation }}.
    </p>
    <p>
      Please visit the <a href="{{ requests_link }}">link</a> to approve or reject permission request.
    </p>
    </body>
    </html>

users.proposal_invitation_created

Sent to a user invited to a proposal team so they can accept the invitation.

Templates

1
2
3
4
5
    {% if reminder %}
    REMINDER: Invitation to the proposal "{{ name }}"
    {% else %}
    Invitation to the proposal "{{ name }}"
    {% endif %}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
    Hello!

    {{ sender }} has invited you to join the team of the proposal "{{ name }}"{% if call_name %} submitted to the call for proposals "{{ call_name }}"{% endif %} as {{ role }}.
    {% if round_cutoff_time %}
    The submission deadline of the round is {{ round_cutoff_time|date:'d.m.Y H:i' }}.
    {% endif %}
    Please visit the link below to sign up and accept your invitation:
    {{ link }}

    Please note: this invitation expires at {{ invitation.get_expiration_time|date:'d.m.Y H:i' }}!
    {% if scope_link %}
    Once you have accepted it, the proposal is available at:
    {{ scope_link }}
    {% endif %}
    {{ extra_invitation_text }}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
    <html>
    <head lang="en">
        <meta charset="UTF-8">
        <title>Invitation to the proposal "{{ name }}"</title>
    </head>
    <body>
    <p>
        Hello!
    </p>
    <p>
        {{ sender }} has invited you to join the team of the proposal
        "<strong>{{ name }}</strong>"{% if call_name %} submitted to the call for proposals
        "{{ call_name }}"{% endif %} as {{ role }}.<br>
        {% if round_cutoff_time %}The submission deadline of the round is {{ round_cutoff_time|date:'d.m.Y H:i' }}.<br>{% endif %}
        Please visit <a href="{{ link }}">this page</a> to sign up and accept your invitation.
        Please note: this invitation expires at {{ invitation.get_expiration_time|date:'d.m.Y H:i' }}!
    </p>
    {% if scope_link %}
    <p>
        Once you have accepted it, the proposal is available <a href="{{ scope_link }}">here</a>.
    </p>
    {% endif %}
    <p>
        {{ extra_invitation_text }}
    </p>
    </body>
    </html>

WALDUR_MASTERMIND.BOOKING

booking.notification

Sent to users to notify them about their upcoming bookings.

Templates

1
    Reminder about upcoming booking.
1
2
3
4
5
6
    Hello!

    Please do not forget about upcoming booking:
    {% for resource in resources %}
        {{ resource.name }}{% if not forloop.last %}, {% endif %}
    {% endfor %}.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
    <html>
    <head lang="en">
        <meta charset="UTF-8">
        <title>Reminder about upcoming booking.</title>
    </head>
    <body>
    <p>
        Hello!
    </p>
    <p>
        Please do not forget about upcoming booking: <br />
        {% for resource in resources %}
            {{ resource.name }}
            {% if not forloop.last %}
                <br />
            {% endif %}
        {% endfor %}
    </p>
    </body>
    </html>

WALDUR_MASTERMIND.INVOICES

invoices.notification

Sent to organization owners with a new invoice. Includes the invoice as an HTML attachment.

Templates

1
    {{ customer }}'s invoice for {{ month }}/{{ year }}
1
2
3
4
    Hello,

    Please follow the link below to see {{ customer }}'s accounting information for {{ month }}/{{ year }}:
    {{ link }}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
    <html xmlns="http://www.w3.org/1999/html">
    <head lang="en">
        <meta charset="UTF-8">
        <title>{{ customer }}'s invoice for {{ month }}/{{ year }}</title>
    </head>
    <body>
    <p>
        Dear Sir or Madam,
    </p>
    <p>
        Attached is invoice for services consumed by {{ customer }}'s during {{ month }}/{{ year }}.
    </p>
    </body>
    </html>

invoices.upcoming_ends_notification

Notifies organization owners about an upcoming fixed-price contract ending.

Templates

1
    {{ organization_name }}'s fixed price contract {{ contract_number }} is coming to an end
1
2
3
    Hello,

    this is a reminder that {{ organization_name }}'s fixed price contract {{ contract_number }} is ending on {{ end }}.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
    <html>
    <head lang="en">
        <meta charset="UTF-8">
        <title>{{ organization_name }}'s fixed price contract {{ contract_number }} is coming to an end.</title>
    </head>
    <body>
    <p>
        Hello,
        <br/>
        this is a reminder that {{ organization_name }}'s fixed price contract {{ contract_number }} is ending on {{ end }}.
    </p>
    </body>
    </html>

WALDUR_MASTERMIND.MARKETPLACE

marketplace.marketplace_resource_create_failed

A notification of a failed resource creation

Templates

1
    Resource {{ resource_name }} creation has failed.
1
2
3
    Hello!

    Resource {{ resource_name }} creation has failed.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
    <html>
    <head lang="en">
        <meta charset="UTF-8">
        <title>Resource {{ resource_name }} creation has failed.</title>
    </head>
    <body>
    <p>
        Hello!
    </p>
    <p>
        Resource {{ resource_name }} creation has failed.
    </p>
    </body>
    </html>

marketplace.marketplace_resource_create_succeeded

A notification of a successful resource creation

Templates

1
    Resource {{ resource_name }} has been created.
1
2
3
    Hello!

    Resource {{ resource_name }} has been created.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
    <html>
    <head lang="en">
        <meta charset="UTF-8">
        <title>Resource {{ resource_name }} has been created.</title>
    </head>
    <body>
    <p>
        Hello!
    </p>
    <p>
        Resource {{ resource_name }} has been created.
    </p>
    </body>
    </html>

marketplace.marketplace_resource_terminate_failed

A notification of a failed resource termination

Templates

1
    Resource {{ resource_name }} deletion has failed.
1
2
3
    Hello!

    Resource {{ resource_name }} deletion has failed.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
    <html>
    <head lang="en">
        <meta charset="UTF-8">
        <title>Resource {{ resource_name }} deletion has failed.</title>
    </head>
    <body>
    <p>
        Hello!
    </p>
    <p>
        Resource {{ resource_name }} deletion has failed.
    </p>
    </body>
    </html>

marketplace.marketplace_resource_terminate_succeeded

A notification of a successful resource termination

Templates

1
    Resource {{ resource_name }} has been deleted.
1
2
3
    Hello!

    Resource {{ resource_name }} has been deleted.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
    <html>
    <head lang="en">
        <meta charset="UTF-8">
        <title>Resource {{ resource_name }} has been deleted.</title>
    </head>
    <body>
    <p>
        Hello!
    </p>
    <p>
        Resource {{ resource_name }} has been deleted.
    </p>
    </body>
    </html>

marketplace.marketplace_resource_termination_scheduled

Notifies project admins/managers that a resource termination was scheduled.

Templates

1
    Resource {{ resource.name }} termination has been scheduled.
1
2
3
    Hello!

    The resource you have - {{ resource.name }} has not been used for the past 3 months. {{ user.full_name }} has scheduled termination of that resource on {{ resource.end_date|date:"SHORT_DATE_FORMAT" }}. If you feel that you still want to keep it, please remove the resource end date {{ resource_url }}.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
    <html>
    <head lang="en">
        <meta charset="UTF-8">
        <title>Resource {{ resource.name }} termination has been scheduled.</title>
    </head>
    <body>
    <p>
        Hello!
    </p>
    <p>
        The resource you have - <a href="{{ resource_url }}">{{ resource.name }}</a> has not been used for the past 3 months. {{ user.full_name }} has scheduled termination of that resource on {{ resource.end_date|date:"SHORT_DATE_FORMAT" }}.
        If you feel that you still want to keep it, please <a href="{{ resource_url }}"></a>remove the resource end date</a>.
    </p>
    </body>
    </html>

marketplace.marketplace_resource_termination_scheduled_staff

A notification of a resource termination. The recipients are project administrators and managers.

Templates

1
    Resource {{ resource.name }} termination has been scheduled.
1
2
3
    Hello!

    The resource you have - {{ resource.name }} has not been used for the past 3 months. {{ user.full_name }} has scheduled termination of that resource on {{ resource.end_date|date:"SHORT_DATE_FORMAT" }}. If you feel that you still want to keep it, please remove the resource end date {{ resource_url }}.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
    <html>
    <head lang="en">
        <meta charset="UTF-8">
        <title>Resource {{ resource.name }} termination has been scheduled.</title>
    </head>
    <body>
    <p>
        Hello!
    </p>
    <p>
        The resource you have - <a href="{{ resource_url }}">{{ resource.name }}</a> has not been used for the past 3 months. {{ user.full_name }} has scheduled termination of that resource on {{ resource.end_date|date:"SHORT_DATE_FORMAT" }}.
        If you feel that you still want to keep it, please <a href="{{ resource_url }}"></a>remove the resource end date</a>.
    </p>
    </body>
    </html>

marketplace.marketplace_resource_update_failed

A notification of failed resource update

Templates

1
    Resource {{ resource_name }} update has failed.
1
2
3
    Hello!

    Resource {{ resource_name }} update has failed.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
    <html>
    <head lang="en">
        <meta charset="UTF-8">
        <title>Resource {{ resource_name }} update has failed.</title>
    </head>
    <body>
    <p>
        Hello!
    </p>
    <p>
        Resource {{ resource_name }} update has failed.
    </p>
    </body>
    </html>

marketplace.marketplace_resource_update_limits_failed

A notification of failed resource limits update

Templates

1
    Resource {{ resource_name }} limits update has failed.
1
2
3
    Hello!

    Resource {{ resource_name }} limits update has failed.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
    <html>
    <head lang="en">
        <meta charset="UTF-8">
        <title>Resource {{ resource_name }} limits update has failed.</title>
    </head>
    <body>
    <p>
        Hello!
    </p>
    <p>
        Resource {{ resource_name }} limits update has failed.
    </p>
    </body>
    </html>

marketplace.marketplace_resource_update_limits_succeeded

A notification of a successful resource limit update. The recipients are all the users in the project.

Templates

1
    Resource {{ resource_name }} limits have been updated.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
    Hello!

    Following request from {{ order_user }}, resource {{ resource_name }} limits have been updated from:
        {{ resource_old_limits }}
    to:
        {{ resource_limits }}.

    {% if support_email or support_phone %}
    If you have any additional questions, please contact support.
    {% if support_email %}
    Email: {{ support_email }}
    {% endif %}
    {% if support_phone %}
    Phone: {{ support_phone }}
    {% endif %}
    {% endif %}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
    <html>
    <head lang="en">
        <meta charset="UTF-8">
        <title>Resource {{ resource_name }} limits have been updated.</title>
    </head>
    <body>
    <p>
        Hello!
    </p>
    <p>
        Following request from {{ order_user }}, resource {{ resource_name }} limits have been updated from:<br>
        <blockquote>
            {{ resource_old_limits }}
        </blockquote>
        to:
        <blockquote>
            {{ resource_limits }}
        </blockquote>
    </p>
    {% if support_email or support_phone %}
    <p>
        If you have any additional questions, please contact support.
    </p>
    {% if support_email %}
    <p>
        Email: {{ support_email }}
    </p>
    {% endif %}
    {% if support_phone %}
    <p>
        Phone: {{ support_phone }}
    </p>
    {% endif %}
    {% endif %}
    </body>
    </html>

marketplace.marketplace_resource_update_succeeded

A notification of a successful resource plan update. The recipients are all the users in the project.

Templates

1
    Resource {{ resource_name }} has been updated.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
    Hello!

    Following request from {{ order_user }}, resource {{ resource_name }} has been updated.

    {% if resource_old_plan %}
    The plan has been changed from {{ resource_old_plan }} to {{ resource_plan }}.
    {% if billing_consequence %}{{ billing_consequence }}{% endif %}
    {% endif %}

    {% if support_email or support_phone %}
    If you have any additional questions, please contact support.
    {% if support_email %}
    Email: {{ support_email }}
    {% endif %}
    {% if support_phone %}
    Phone: {{ support_phone }}
    {% endif %}
    {% endif %}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
    <html>
    <head lang="en">
        <meta charset="UTF-8">
        <title>Resource {{ resource_name }} has been updated.</title>
    </head>
    <body>
    <p>
        Hello!
    </p>
    <p>
        Following request from {{ order_user }}, resource {{ resource_name }} has been updated.
    </p>
    {% if resource_old_plan %}
    <p>
        The plan has been changed from {{ resource_old_plan }} to {{ resource_plan }}.
    </p>
    {% if billing_consequence %}
    <p>
        {{ billing_consequence }}
    </p>
    {% endif %}
    {% endif %}
    {% if support_email or support_phone %}
    <p>
        If you have any additional questions, please contact support.
    </p>
    {% if support_email %}
    <p>
        Email: {{ support_email }}
    </p>
    {% endif %}
    {% if support_phone %}
    <p>
        Phone: {{ support_phone }}
    </p>
    {% endif %}
    {% endif %}
    </body>
    </html>

marketplace.notification_about_project_ending

Notifies project users about a resource that is nearing its end date.

Templates

1
    {% if count_projects > 1 %}Your {{ count_projects }} projects{% else %} Project{% endif %} will be deleted on {{ end_date|date:'d/m/Y' }}.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
    Hello {{ user.full_name }}!

    The following projects will have their resources terminated {% if delta == 1 %} tomorrow {% else %} in {{ delta }} days{% endif %} (on {{ end_date|date:'d/m/Y' }}):

    {% for project in projects %}
        - {{ project.name }} ({{ project.url }}){% if project.grace_period_days %}
          End date: {{ project.end_date|date:'d/m/Y' }} | Grace period: {{ project.grace_period_days }} days | Termination date: {{ project.effective_end_date|date:'d/m/Y' }}{% endif %}
    {% endfor %}

    End of the project will lead to termination of all resources in the project.
    If you are aware of that, then no actions are needed from your side.
    If you need to update project end date, please update it in project details.

    Thank you!
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
    <html>
    <head lang="en">
        <meta charset="UTF-8">
        <title>Projects will be deleted.</title>
    </head>
    <body>
    <p>Hello {{ user.full_name }}!</p>
    <p>The following projects will have their resources terminated {% if delta == 1 %} tomorrow {% else %} in {{ delta }} days{% endif %} (on {{ end_date|date:'d/m/Y' }}):</p>
    <ul>
    {% for project in projects %}
        <li>
            <a href="{{ project.url }}">{{ project.name }}</a>
            {% if project.grace_period_days %}
            <br /><small>End date: {{ project.end_date|date:'d/m/Y' }} | Grace period: {{ project.grace_period_days }} days | Termination date: {{ project.effective_end_date|date:'d/m/Y' }}</small>
            {% endif %}
        </li>
    {% endfor %}
    </ul>
    <p>
        End of the project will lead to termination of all resources in the project. <br />
        If you are aware of that, then no actions are needed from your side. <br />
        If you need to update project end date, please update it in project details.
    </p>
    <p>Thank you!</p>
    </body>
    </html>

marketplace.notification_about_resource_ending

A notification about resource ending. The recipients are project managers and customer owners.

Templates

1
    Resource {{ resource.name }} will be deleted.
1
2
3
4
5
6
7
    Dear {{ user.full_name }},

    Termination date of your {{ resource.name }} is approaching and it will be deleted{% if delta == 1 %} tomorrow {% else %} in {{ delta }} days{% endif %}.
    If you are aware of that, then no actions are needed from your side.
    If you need to update resource end date, please update it in resource details {{ resource_url }}.

    Thank you!
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
    <html>
    <head lang="en">
        <meta charset="UTF-8">
        <title>Resource {{ resource.name }} will be deleted.</title>
    </head>
    <body>
    <p>Dear {{ user.full_name }},</p>

    <p>
        Termination date of your {{ resource.name }} is approaching and it will be
        deleted{% if delta == 1 %} tomorrow {% else %} in {{ delta }} days{% endif %}.<br />
        If you are aware of that, then no actions are needed from your side. <br />
        If you need to update resource end date, please update it in resource details {{ resource_url }}.
    </p>

    <p>Thank you!</p>
    </body>
    </html>

marketplace.notification_about_stale_resources

Notifies organization owners about active resources that have not generated costs recently.

Templates

1
    Reminder about stale resources.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
    Hello!

    We noticed that you have stale resources that have not cost you anything for the last 3 months.
    Perhaps some of them are not needed any more?

    The resource names are:
    {% for resource in resources %}
        {{ resource.resource.name }} {{ resource.resource_url }}
    {% endfor %}
    Thank you!
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
    <html>
    <head lang="en">
        <meta charset="UTF-8">
        <title>Reminder about stale resources.</title>
    </head>
    <body>
    <p>
        Hello!
    </p>
    <p>
        We noticed that you have stale resources that have not cost you anything for the last 3 months. <br />
        Perhaps some of them are not needed any more?<br />

        The resource names are:
        <ul>
            {% for resource in resources %}
                <li><a href='{{ resource.resource_url }}'>{{ resource.resource.name }}</a></li>
            {% endfor %}
        </ul>
        Thank you!
    </p>
    </body>
    </html>

marketplace.notification_resource_limit_change_request_approved

Notifies the requester when their resource limit change request is approved.

Templates

1
    Resource limit change request approved for {{ resource_limit_change_request.resource.name }}
1
2
3
4
5
6
7
8
    Hello!

    Your request to change limits of resource {{ resource_limit_change_request.resource.name }} has been approved.

    A marketplace order has been created to apply the new limits. You can track its progress here:
    {{ resource_url }}

    Thank you!
1
2
3
4
    <p>Hello!</p>
    <p>Your request to change limits of resource <strong>{{ resource_limit_change_request.resource.name }}</strong> has been approved.</p>
    <p>A marketplace order has been created to apply the new limits. You can <a href="{{ resource_url }}">track its progress here</a>.</p>
    <p>Thank you!</p>

marketplace.notification_resource_limit_change_request_created

Notifies organization owners when a project member requests a resource limit change.

Templates

1
    Resource limit change request for {{ resource_limit_change_request.resource.name }}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
    Hello!

    {{ resource_limit_change_request.created_by.full_name }} has requested to change limits of resource {{ resource_limit_change_request.resource.name }} in project {{ resource_limit_change_request.resource.project.name }}.

    Requested limits: {{ resource_limit_change_request.requested_limits }}

    Please review and approve or reject the request:
    {{ resource_url }}

    Thank you!
1
2
3
4
    <p>Hello!</p>
    <p>{{ resource_limit_change_request.created_by.full_name }} has requested to change limits of resource <strong>{{ resource_limit_change_request.resource.name }}</strong> in project <strong>{{ resource_limit_change_request.resource.project.name }}</strong>.</p>
    <p>Please <a href="{{ resource_url }}">review and approve or reject the request</a>.</p>
    <p>Thank you!</p>

marketplace.notification_resource_limit_change_request_rejected

Notifies the requester when their resource limit change request is rejected.

Templates

1
    Resource limit change request rejected for {{ resource_limit_change_request.resource.name }}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
    Hello!

    Your request to change limits of resource {{ resource_limit_change_request.resource.name }} has been rejected.

    {% if resource_limit_change_request.review_comment %}Review comment: {{ resource_limit_change_request.review_comment }}{% endif %}

    You can view the resource here:
    {{ resource_url }}

    Thank you!
1
2
3
4
5
    <p>Hello!</p>
    <p>Your request to change limits of resource <strong>{{ resource_limit_change_request.resource.name }}</strong> has been rejected.</p>
    {% if resource_limit_change_request.review_comment %}<p>Review comment: {{ resource_limit_change_request.review_comment }}</p>{% endif %}
    <p>You can <a href="{{ resource_url }}">view the resource here</a>.</p>
    <p>Thank you!</p>

marketplace.notification_to_user_that_order_been_rejected

Notification to user whose order been rejected.

Templates

1
    Your order to {{ order_type }} a resource {{ order.resource.name }} has been rejected.
1
2
3
4
5
6
7
8
9
    Hello!

    Your order {{ link }} to {{ order_type }} a resource {{ order.resource.name }} has been rejected.
    {% if order.consumer_rejection_comment %}
    Consumer rejection reason: {{ order.consumer_rejection_comment }}
    {% endif %}
    {% if order.provider_rejection_comment %}
    Provider rejection reason: {{ order.provider_rejection_comment }}
    {% endif %}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
    <html>
    <head lang="en">
        <meta charset="UTF-8">
        <title>Your order has been rejected.</title>
    </head>
    <body>
    <p>
        Hello!
    </p>
    <p>
        Your <a href="{{ link }}">order</a> to {{ order_type }} a resource {{ order.resource.name }} has been rejected.
    </p>
    {% if order.consumer_rejection_comment %}
    <p>
        Consumer rejection reason: {{ order.consumer_rejection_comment }}
    </p>
    {% endif %}
    {% if order.provider_rejection_comment %}
    <p>
        Provider rejection reason: {{ order.provider_rejection_comment }}
    </p>
    {% endif %}
    </body>
    </html>

marketplace.notification_usages

A notification about usages. The recipients are organization owners.

Templates

1
    Reminder about missing usage reports.
1
2
3
4
5
6
7
8
    Hello!

    Please do not forget to add usage for the resources you provide:
    {% regroup resources by offering as offering_list %}{% for offering in offering_list %}
    {{forloop.counter}}. {{ offering.grouper.name }}:{% for resource in offering.list %}
        - {{ resource.name }}
    {% endfor %}{% endfor %}
    You can submit resource usage via API or do it manually at {{ public_resources_url }}.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
    <html>
    <head lang="en">
        <meta charset="UTF-8">
        <title>Reminder about missing usage reports.</title>
    </head>
    <body>
    <p>
        Hello!
    </p>
    <p>Please do not forget to add usage for the resources you provide:</p>
    {% regroup resources by offering as offering_list %}

    <ol>
    {% for offering in offering_list %}
        <li>
            {{ offering.grouper.name }}:
            <ul>
                {% for resource in offering.list %}
                <li>{{ resource.name }}</li>
                {% endfor %}
            </ul>
        </li>
    {% endfor %}
    </ol>

    <p>
        You can submit resource usage via API or do it <a href='{{ public_resources_url }}'>manually</a>.
    </p>
    </body>
    </html>

marketplace.notify_about_new_order

Notifies the recipients configured on the offering about every new order for it, regardless of whether the order needs approval.

Templates

1
    A new {{ order_type }} order for {{ order.offering.name }} has been placed by {{ order.created_by.get_full_name|default:"a user" }}.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
    Hello!

    {{ order.created_by.get_full_name|default:"A user" }} has placed a new {{ order_type }} order for {{ order.offering.name }}
    in project {{ order.project.name }} of organization {{ order.project.customer.name }}.
    {% if order_attributes %}
    Requested configuration:
    {% for label, value in order_attributes %}* {{ label }}: {{ value }}
    {% endfor %}{% endif %}{% if order_limits %}
    Requested limits:
    {% for label, value in order_limits %}* {{ label }}: {{ value }}
    {% endfor %}{% endif %}
    Please visit {{ order_url }} to find out more details.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
    <html>
    <head lang="en">
        <meta charset="UTF-8">
        <title>A new {{ order_type }} order for {{ order.offering.name }} has been placed by {{ order.created_by.get_full_name|default:"a user" }}.</title>
    </head>
    <body>
    <p>
        Hello!
    </p>
    <p>
        {{ order.created_by.get_full_name|default:"A user" }} has placed a new {{ order_type }} order for {{ order.offering.name }}
        in project {{ order.project.name }} of organization {{ order.project.customer.name }}.
    </p>
    {% if order_attributes %}
    <p>
        Requested configuration:
    </p>
    <ul>
        {% for label, value in order_attributes %}<li>{{ label|escape }}: {{ value|escape }}</li>
        {% endfor %}
    </ul>
    {% endif %}
    {% if order_limits %}
    <p>
        Requested limits:
    </p>
    <ul>
        {% for label, value in order_limits %}<li>{{ label|escape }}: {{ value|escape }}</li>
        {% endfor %}
    </ul>
    {% endif %}
    <p>
        Please visit <a href="{{ order_url }}">{{ site_name }}</a> to find out more details.
    </p>
    </body>
    </html>

marketplace.notify_consumer_about_pending_order

Notifies project members with approval permissions about a pending order.

Templates

1
    A new order by {{ order.created_by.get_full_name }} is waiting for approval.
1
2
3
    Hello!

    A new order by {{ order.created_by.get_full_name }} is waiting for approval.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
    <html>
    <head lang="en">
        <meta charset="UTF-8">
        <title>A new order by {{ order.created_by.get_full_name }} is waiting for approval.</title>
    </head>
    <body>
    <p>
        Hello!
    </p>
    <p>
        Please visit <a href="{{ order_link }}">{{ site_name }}</a> to find out more details.
    </p>
    </body>
    </html>

marketplace.notify_consumer_about_provider_info

Notifies the order creator when the provider sends a message on a pending order.

Templates

1
    Message from provider regarding your order for {{ order.offering.name }}{% if order.resource %} ({{ order.resource.name }}){% endif %}
1
2
3
4
5
    Hello!

    Service provider has sent a message regarding your order for {{ order.offering.name }}{% if order.resource %} ({{ order.resource.name }}){% endif %}.

    Please visit {{ order_url }} to find out more details.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
    <html>
    <head lang="en">
        <meta charset="UTF-8">
        <title>Message from provider regarding your order for {{ order.offering.name }}</title>
    </head>
    <body>
    <p>
        Hello!
    </p>
    <p>
        Service provider has sent a message regarding your order
        for <b>{{ order.offering.name }}</b>{% if order.resource %} ({{ order.resource.name }}){% endif %}.
    </p>
    <p>
        Please visit <a href="{{ order_url }}">{{ site_name }}</a> to find out more details.
    </p>
    </body>
    </html>

marketplace.notify_provider_about_consumer_info

Notifies the provider when the consumer responds with a message on a pending order.

Templates

1
    Response from {{ order.created_by.get_full_name }} regarding order for {{ order.offering.name }}{% if order.resource %} ({{ order.resource.name }}){% endif %}
1
2
3
4
5
    Hello!

    {{ order.created_by.get_full_name }} has responded to your message regarding an order for {{ order.offering.name }}{% if order.resource %} ({{ order.resource.name }}){% endif %}.

    Please visit {{ order_url }} to find out more details.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
    <html>
    <head lang="en">
        <meta charset="UTF-8">
        <title>Response from {{ order.created_by.get_full_name }} regarding order for {{ order.offering.name }}</title>
    </head>
    <body>
    <p>
        Hello!
    </p>
    <p>
        <b>{{ order.created_by.get_full_name }}</b> has responded to your message regarding an order
        for <b>{{ order.offering.name }}</b>{% if order.resource %} ({{ order.resource.name }}){% endif %}.
    </p>
    <p>
        Please visit <a href="{{ order_url }}">{{ site_name }}</a> to find out more details.
    </p>
    </body>
    </html>

marketplace.notify_provider_about_pending_order

Notifies service provider owners about a pending order for their offering.

Templates

1
    A new order by {{ order.created_by.get_full_name }} is waiting for approval.
1
2
3
    Hello!

    A new order by {{ order.created_by.get_full_name }} is waiting for approval.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
    <html>
    <head lang="en">
        <meta charset="UTF-8">
        <title>A new order by {{ order.created_by.get_full_name }} is waiting for approval.</title>
    </head>
    <body>
    <p>
        Hello!
    </p>
    <p>
        Please visit <a href="{{ order_url }}">{{ site_name }}</a> to find out more details.
    </p>
    </body>
    </html>

Notifies user that ToS consent is required to access a resource.

Templates

1
    Action required: Accept Terms of Service for {{ offering.name }}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
    Hello {{ user.full_name }},

    You have been granted access to {{ offering.name }}, which requires you to accept the Terms of Service.

    Before you can use this offering, please review and accept the Terms of Service:

    Terms of Service: {{ terms_of_service_link }}

    To manage your ToS consents, please visit your profile:
    {{ tos_management_url }}

    Once you've accepted, you can access all resources from this offering through your project dashboard.

    Thank you,
    {{ site_name }} Team
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
    <html>
    <head>
        <meta charset="UTF-8">
    </head>
    <body>
        <p>Hello {{ user.full_name }},</p>

        <p>You have been granted access to <strong>{{ offering.name }}</strong>, which requires you to accept the <a href="{{ terms_of_service_link }}" style="color: #007bff; text-decoration: underline;">Terms of Service</a>.</p>

        <p>Before you can use this offering, please review and accept the Terms of Service.</p>

        <p>
            <a href="{{ tos_management_url }}" style="display: inline-block; padding: 10px 20px; background-color: #28a745; color: white; text-decoration: none; border-radius: 5px;">
                Manage ToS Consents
            </a>
        </p>

        <p>Once you've accepted, you can access all resources from this offering through your project dashboard.</p>

        <p>
            Thank you,<br>
            {{ site_name }} Team
        </p>
    </body>
    </html>

marketplace.tos_reconsent_required

Notifies user that ToS has been updated and re-consent is required.

Templates

1
    Action required: Updated Terms of Service for {{ offering.name }}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
    Hello {{ user.full_name }},

    The Terms of Service for {{ offering.name }} have been updated from version {{ old_version }} to version {{ new_version }}.

    You need to review and re-accept the updated Terms of Service to continue accessing this offering.

    View updated Terms of Service: {{ terms_of_service_link }}

    To manage your consents, please visit your profile:
    {{ tos_management_url }}

    Thank you for your attention to this matter.

    {{ site_name }} Team
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
    <html>
    <head>
        <meta charset="UTF-8">
    </head>
    <body>
        <p>Hello {{ user.full_name }},</p>

        <p>The Terms of Service for <strong>{{ offering.name }}</strong> have been updated from version <strong>{{ old_version }}</strong> to version <strong>{{ new_version }}</strong>.</p>

        <p>You need to review and re-accept the updated Terms of Service to continue accessing this offering.</p>

        <p><a href="{{ terms_of_service_link }}" style="color: #007bff;">View Updated Terms of Service</a></p>

        <p>
            <a href="{{ tos_management_url }}" style="display: inline-block; padding: 10px 20px; background-color: #28a745; color: white; text-decoration: none; border-radius: 5px;">
                Manage ToS Consents
            </a>
        </p>

        <p>Thank you for your attention to this matter.</p>

        <p>
            {{ site_name }} Team
        </p>
    </body>
    </html>

WALDUR_MASTERMIND.MARKETPLACE_REMOTE

marketplace_remote.notification_about_pending_project_updates

A notification about pending project updates. The recipients are customer owners

Templates

1
    Reminder about pending project updates.
1
2
3
4
5
6
7
8
    Hello!

    We noticed that you have pending project update requests.
    Perhaps you would like to have a look at them?

    The project is:
        {{ project_update_request.project.name }} {{ project_url }}
    Thank you!
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
    <html>
    <head lang="en">
        <meta charset="UTF-8">
        <title>Reminder about pending project updates.</title>
    </head>
    <body>
    <p>
        Hello!
    </p>
    <p>
        We noticed that you have pending project update requests.<br />
        Perhaps you would like to have a look at them?<br />

        The project is:
        <ul>
            <li><a href='{{ project_url }}'>{{ project_update_request.project.name }}</a></li>
        </ul>
        Thank you!
    </p>
    </body>
    </html>

marketplace_remote.notification_about_project_details_update

Notifies users about a completed project update request, detailing the changes.

Templates

1
    A notification about project details update.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
    Hello!

    We would like to notify you about recent updates in project details.
    Perhaps you would like to have a look at them?

    The project is:
        {{ new_name }} {{ project_url }}

        Details after the update are below:
            {% if new_description %}
                Old description: {{ old_description }}
                New description: {{ new_description }}
            {% endif %}

            {% if new_name %}
                Old name: {{ old_name }}
                New name: {{ new_name }}
            {% endif %}

            {% if new_end_date %}
               Old end date: {{ old_end_date }}
               New end date: {{ new_end_date }}
            {% endif %}

            {% if new_oecd_fos_2007_code %}
               Old OECD FOS 2007 code: {{ old_oecd_fos_2007_code }}
               New OECD FOS 2007 code: {{ new_oecd_fos_2007_code }}
            {% endif %}

            {% if new_is_industry %}
               Old is_industry: {{ old_is_industry }}
               New is_industry: {{ new_is_industry }}
            {% endif %}

        Reviewed by: {{ reviewed_by }}
    Thank you!
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
    <html>
    <head lang="en">
        <meta charset="UTF-8">
        <title>A notification about project details update.</title>
    </head>
    <body>
    <p>
        Hello!
    </p>
    <p>
        We would like to notify you about recent updates in project details.<br />
        Perhaps you would like to have a look at them?<br />

        The project is:
        <ul>
            <li><a href='{{ project_url }}'>{{ new_name }}</a></li>
        </ul>

        <div>
            Details after the update are below:
            <ul>
                {% if new_description %}
                    <li>Old description: {{ old_description }}</li>
                    <li>New description: {{ new_description }}</li>
                {% endif %}

                {% if new_name %}
                    <li>Old name: {{ old_name }}</li>
                    <li>New name: {{ new_name }}</li>
                {% endif %}

                {% if new_end_date %}
                    <li>Old end date: {{ old_end_date }}</li>
                    <li>New end date: {{ new_end_date }}</li>
                {% endif %}

                {% if new_oecd_fos_2007_code %}
                    <li>Old OECD FOS 2007 code: {{ old_oecd_fos_2007_code }}</li>
                    <li>New OECD FOS 2007 code: {{ new_oecd_fos_2007_code }}</li>
                {% endif %}

                {% if new_is_industry %}
                    <li>Old is_industry: {{ old_is_industry }}</li>
                    <li>New is_industry: {{ new_is_industry }}</li>
                {% endif %}
                <li>Reviewed by: {{ reviewed_by }}</li>
            </ul>

        </div>
        Thank you!
    </p>
    </body>
    </html>

marketplace_remote.resource_end_date_pulled_from_remote

Notification sent when a resource's end date is automatically updated from the remote allocation system because the local date was in the past.

Templates

1
    Resource {{ resource.name }} end date updated automatically.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
    Hello!

    The end date of resource {{ resource.name }} in project {{ resource.project.name }} has been updated automatically.

    Previous end date: {{ old_end_date }}
    New end date: {{ new_end_date }}

    Reason: The local end date was in the past and has been synced from the central allocation system.

    You can view the resource here: {{ resource_url }}
    {% if remote_events %}
    Recent related events from the central system:
    {% for event in remote_events %}  - {{ event.message }}
    {% endfor %}{% endif %}
    Thank you!
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
    <html>
    <head lang="en">
        <meta charset="UTF-8">
        <title>Resource {{ resource.name }} end date updated automatically.</title>
    </head>
    <body>
    <p>
        Hello!
    </p>
    <p>
        The end date of resource <a href="{{ resource_url }}">{{ resource.name }}</a>
        in project <strong>{{ resource.project.name }}</strong> has been updated automatically.
    </p>
    <ul>
        <li>Previous end date: {{ old_end_date }}</li>
        <li>New end date: {{ new_end_date }}</li>
    </ul>
    <p>
        <strong>Reason:</strong> The local end date was in the past and has been synced
        from the central allocation system.
    </p>
    {% if remote_events %}
    <p>Recent related events from the central system:</p>
    <ul>
        {% for event in remote_events %}
        <li>{{ event.message }}</li>
        {% endfor %}
    </ul>
    {% endif %}
    <p>
        Thank you!
    </p>
    </body>
    </html>

marketplace_policy.notification_about_project_cost_exceeded_limit

Notification about project cost exceeded limit. The recipients are all customer owners of the project.

Templates

1
    {{ scope_class }} {{ scope_name }} cost has exceeded the limit.
1
2
    Hello!
    {{ scope_class }} {{ scope_name }} ({{ scope_url }}) cost has exceeded the limit of {{ limit }}.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
    <html>
    <head lang="en">
        <meta charset="UTF-8">
        <title>{{ scope_class }} {{ scope_name }} cost has exceeded the limit.</title>
    </head>
    <body>
    <p>
        Hello!
    </p>
    <p>
        {{ scope_class }} <a href='{{ scope_url }}'>{{ scope_name }}</a> cost has exceeded the limit of {{ limit }}.
    </p>
    </body>
    </html>

WALDUR_MASTERMIND.SUPPORT

support.description

A template used for generating the issue description field during issue creation.

Templates

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
    {{issue.description}}

    Additional Info:
    {% if issue.customer %}- Organization: {{issue.customer.name}}{% endif %}
    {% if issue.project %}- Project: {{issue.project.name}}{% endif %}
    {% if issue.resource %}
        {% if issue.resource.service_settings %}
            {% if issue.resource.service_settings.type %}- Service type: {{issue.resource.service_settings.type}}{% endif %}
            - Offering name: {{ issue.resource.service_settings.name }}
            - Offering provided by: {{ issue.resource.service_settings.customer.name }}
        {% endif %}
        - Affected resource: {{issue.resource}}
        - Backend ID: {{issue.resource.backend_id}}
    {% endif %}
    - Site name: {{ settings.WALDUR_CORE.SITE_NAME }}
    - Site URL: {{ config.HOMEPORT_URL }}

support.notification_comment_added

Notification about a new comment in the issue. The recipient is issue caller.

Templates

1
    The issue ({{ issue.key }}) you have created has a new comment
1
2
3
    Hello!

    The issue you have created has a new comment. Please go to {{issue_url}} to see it.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
    <html>
    <head lang="en">
        <meta charset="UTF-8">
        <title>The issue you have created ({{ issue.key }}) has a new comment</title>
    </head>
    <body>
    <p>
        {% if is_system_comment %}
            Added a new comment.
        {% else %}
            {{ comment.author.name }} added a new comment.
        {% endif %}
    </p>
    <p>
        <a href="{{ issue_url }}">[{{ issue.key }}] {{ issue.summary }}</a>
    </p>
    <div>
        {{ description|safe }}
    </div>
    </body>
    </html>

support.notification_comment_updated

Notification about an update in the issue comment. The recipient is issue caller.

Templates

1
    Issue {{ issue.key }}. The comment has been updated
1
2
3
    Hello!

    The comment has been updated. Please go to {{issue_url}} to see it.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
    <html>
    <head lang="en">
        <meta charset="UTF-8">
        <title>The comment has been updated ({{ issue.key }})</title>
    </head>
    <body>
    <p>
        {{ comment.author.name }} updated comment.
    </p>
    <p>
        <a href="{{ issue_url }}">[{{ issue.key }}] {{ issue.summary }}</a>
    </p>
    <p>
        Old comment:
    </p>
    <p>
        {{ old_description|safe }}
    </p>
    <p>
        New comment:
    </p>
    <p>
        {{ description|safe }}
    </p>
    </body>
    </html>

support.notification_issue_created

Notification to staff and support users about a newly created support request. Sent only by the built-in service desk — the Atlassian, Zammad and SMAX backends notify their own agents.

Templates

1
    [{{ issue.key }}] New support request: {{ issue.summary.strip }}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
    A new support request has been created.

    Request: {{ issue.key }}
    Summary: {{ issue.summary.strip }}
    Type: {{ issue.type }}
    {% if issue.priority %}Priority: {{ issue.priority }}
    {% endif %}Reported by: {{ issue.caller.full_name|default:issue.caller.username|default:"unknown" }}
    {% if issue.customer %}Organization: {{ issue.customer.name }}
    {% endif %}{% if issue.project %}Project: {{ issue.project.name }}
    {% endif %}
    Description:
    {{ issue.description.strip }}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
    <p>A new support request has been created.</p>
    <p><strong>Request:</strong> {{ issue.key }}<br>
    <strong>Summary:</strong> {{ issue.summary.strip }}<br>
    <strong>Type:</strong> {{ issue.type }}<br>
    {% if issue.priority %}<strong>Priority:</strong> {{ issue.priority }}<br>{% endif %}
    <strong>Reported by:</strong> {{ issue.caller.full_name|default:issue.caller.username|default:"unknown" }}
    {% if issue.customer %}<br><strong>Organization:</strong> {{ issue.customer.name }}{% endif %}
    {% if issue.project %}<br><strong>Project:</strong> {{ issue.project.name }}{% endif %}</p>
    <p><strong>Description:</strong></p>
    <p>{{ issue.description.strip }}</p>

support.notification_issue_escalated

Notification to staff and support users that a support request has been escalated. Sent only by the built-in service desk.

Templates

1
    [{{ issue.key }}] Escalated: {{ issue.summary.strip }}
1
2
3
4
5
6
7
8
    A support request has been escalated.

    Request: {{ issue.key }}
    Summary: {{ issue.summary.strip }}
    {% if issue.customer %}Organization: {{ issue.customer.name }}
    {% endif %}
    Reason for escalation:
    {{ reason }}
1
2
3
4
5
6
    <p>A support request has been escalated.</p>
    <p><strong>Request:</strong> {{ issue.key }}<br>
    <strong>Summary:</strong> {{ issue.summary.strip }}
    {% if issue.customer %}<br><strong>Organization:</strong> {{ issue.customer.name }}{% endif %}</p>
    <p><strong>Reason for escalation:</strong></p>
    <p>{{ reason }}</p>

support.notification_issue_feedback

Notification about a feedback related to the issue. The recipient is issue caller.

Templates

1
    Please share your feedback: {{issue.key}} {{issue.summary}}
1
2
3
4
5
6
7
8
9
    Hello, {{issue.caller.full_name}}!

    We would like to hear your feedback regarding your recent experience with support for {{issue_url}}.

    Click on the evaluations below to provide the feedback.

    {% for link in feedback_links%}
        {{link.label}}: {{link.link}}
    {% endfor %}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
    <html>
    <head lang="en">
        <meta charset="UTF-8">
        <title>The issue you have ({{ issue.key }}) has been updated</title>

        <style>
            * {
              font-family: sans-serif;
            }
            .rating {
              unicode-bidi: bidi-override;
              direction: rtl;
              width: 500px;
            }
            .rating > a {
              display: inline-block;
              position: relative;
              width: 1.1em;
              text-decoration: none;
              font-size: xx-large;
              color: rgba(180, 179, 178, 1);
            }
            .rating > a:hover:before,
            .rating > a:hover ~ a:before {
               content: "\2605";
               position: absolute;
               color: rgba(224, 194, 75, 1);
            }
        </style>

    </head>
    <body>
    <p>Hello, {{issue.caller.full_name}}!</p>
    <p>We would like to hear your feedback regarding your recent experience with support for
        <a href='{{issue_url}}'>{{ issue.summary }}</a>.
    </p>
    <p>Click the stars below to provide your feedback:</p>
    <div class="rating">
        {% for link in feedback_links reversed %}
            <a href='{{link.link}}'>☆</a>
        {% endfor %}
    </div>
    </body>
    </html>

support.notification_issue_updated

Notification about an update in the issue. The recipient is issue caller.

Templates

1
    Updated issue: {{issue.key}} {{issue.summary}}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
    Hello!

    The issue you have has been updated.

    {% if changed.status %}
    Status has been changed from {{ changed.status }} to {{ issue.status }}.
    {% endif %}
    {% if changed.description %}
    Description has been changed from {{ changed.description }} to {{ issue.description }}.
    {% endif %}
    {% if changed.summary %}
    Summary has been changed from {{ changed.summary }} to {{ issue.summary }}.
    {% endif %}
    {% if changed.priority %}
    Priority has been changed from {{ changed.priority }} to {{ issue.priority }}.
    {% endif %}

    Please go to {{issue_url}} to see it.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
    <html>
    <head lang="en">
        <meta charset="UTF-8">
        <title>The issue you have ({{ issue.key }}) has been updated</title>
    </head>
    <body>
    <p>
        Hello!
    </p>
    {% if changed.status %}
    <p>
        Status has been changed from <strong>{{ changed.status }}</strong> to <strong>{{ issue.status }}</strong>.
    </p>
    {% endif %}
    {% if old_description %}
    <p>
        Description has been changed from <strong>{{ old_description|safe }}</strong> to <strong>{{ description|safe }}</strong>.
    </p>
    {% endif %}
    {% if changed.summary %}
    <p>
        Summary has been changed from <strong>{{ changed.summary }}</strong> to <strong>{{ issue.summary }}</strong>.
    </p>
    {% endif %}
    {% if changed.priority %}
    <p>
        Priority has been changed from <strong>{{ changed.priority }}</strong> to <strong>{{ issue.priority }}</strong>.
    </p>
    {% endif %}
    <p>
        Please visit <a href="{{ issue_url }}">{{ site_name }}</a> to find out more details.
    </p>
    </body>
    </html>

support.provider_customer_comment

Notify a provider helpdesk that the customer commented on a ticket routed to them.

Templates

1
    [{{ issue.key }}] Customer comment: {{ issue.summary }}
1
2
3
4
    A customer has added a comment to ticket {{ issue.key }}.

    Comment:
    {{ comment.description }}
1
2
3
    <p>A customer has added a comment to ticket <strong>{{ issue.key }}</strong>.</p>
    <p><strong>Comment:</strong></p>
    <p>{{ comment.description }}</p>

support.provider_email_comment

Email a provider a customer comment via the email support backend.

Templates

1
    [{{ issue.key }}] New comment on ticket: {{ issue.summary }}
1
2
3
4
    A new comment has been added to ticket {{ issue.key }}.

    Comment by {{ comment.author.name }}:
    {{ comment.description }}
1
2
3
    <p>A new comment has been added to ticket <strong>{{ issue.key }}</strong>.</p>
    <p><strong>Comment by {{ comment.author.name }}:</strong></p>
    <p>{{ comment.description }}</p>

support.provider_email_new_ticket

Email a provider a new ticket via the email support backend.

Templates

1
    [{{ issue.key }}] New support ticket: {{ issue.summary }}
1
2
3
4
5
6
7
8
9
    A new support ticket has been routed to your helpdesk.

    Ticket: {{ issue.key }}
    Summary: {{ issue.summary }}
    Type: {{ issue.type }}
    Priority: {{ issue.priority }}

    Description:
    {{ issue.description }}
1
2
3
4
5
6
7
    <p>A new support ticket has been routed to your helpdesk.</p>
    <p><strong>Ticket:</strong> {{ issue.key }}<br>
    <strong>Summary:</strong> {{ issue.summary }}<br>
    <strong>Type:</strong> {{ issue.type }}<br>
    <strong>Priority:</strong> {{ issue.priority }}</p>
    <p><strong>Description:</strong></p>
    <p>{{ issue.description }}</p>

support.provider_escalation

Notify a provider helpdesk that a routed ticket has been escalated.

Templates

1
    [{{ issue.key }}] ESCALATED: {{ issue.summary }}
1
2
3
4
5
6
    Ticket {{ issue.key }} has been escalated.

    Reason: {{ reason }}

    Summary: {{ issue.summary }}
    Priority: {{ issue.priority }}
1
2
3
4
    <p>Ticket <strong>{{ issue.key }}</strong> has been escalated.</p>
    <p><strong>Reason:</strong> {{ reason }}</p>
    <p><strong>Summary:</strong> {{ issue.summary }}<br>
    <strong>Priority:</strong> {{ issue.priority }}</p>

support.provider_new_ticket

Notify a provider helpdesk about a new ticket routed to them.

Templates

1
    [{{ issue.key }}] New ticket: {{ issue.summary }}
1
2
3
4
5
6
7
8
9
    A new support ticket has been assigned to your helpdesk.

    Ticket: {{ issue.key }}
    Summary: {{ issue.summary }}
    Type: {{ issue.type }}
    Priority: {{ issue.priority }}

    Description:
    {{ issue.description }}
1
2
3
4
5
6
7
    <p>A new support ticket has been assigned to your helpdesk.</p>
    <p><strong>Ticket:</strong> {{ issue.key }}<br>
    <strong>Summary:</strong> {{ issue.summary }}<br>
    <strong>Type:</strong> {{ issue.type }}<br>
    <strong>Priority:</strong> {{ issue.priority }}</p>
    <p><strong>Description:</strong></p>
    <p>{{ issue.description }}</p>

support.provider_sla_warning

Notify a provider helpdesk that a routed ticket is approaching its SLA deadline.

Templates

1
    [{{ issue.key }}] SLA Warning: {{ issue.summary }}
1
2
3
4
5
6
    Ticket {{ issue.key }} is approaching its SLA deadline.

    Summary: {{ issue.summary }}
    Priority: {{ issue.priority }}

    Please take action to avoid an SLA breach.
1
2
3
4
    <p>Ticket <strong>{{ issue.key }}</strong> is approaching its SLA deadline.</p>
    <p><strong>Summary:</strong> {{ issue.summary }}<br>
    <strong>Priority:</strong> {{ issue.priority }}</p>
    <p>Please take action to avoid an SLA breach.</p>

support.provider_ticket_withdrawn

Notify a provider helpdesk that a ticket previously routed to them was rerouted away.

Templates

1
    [{{ issue.key }}] Ticket withdrawn: {{ issue.summary }}
1
2
3
4
5
6
    A support ticket previously routed to your helpdesk has been withdrawn and reassigned to a different provider.

    Ticket: {{ issue.key }}
    Summary: {{ issue.summary }}

    No further action is required on your side. If you have already opened a corresponding ticket in your system, you may close it.
1
2
3
4
    <p>A support ticket previously routed to your helpdesk has been withdrawn and reassigned to a different provider.</p>
    <p><strong>Ticket:</strong> {{ issue.key }}<br>
    <strong>Summary:</strong> {{ issue.summary }}</p>
    <p>No further action is required on your side. If you have already opened a corresponding ticket in your system, you may close it.</p>

support.summary

A template used for generating the issue summary field during issue creation.

Templates

1
    {% if issue.customer.abbreviation %}{{issue.customer.abbreviation}}: {% endif %}{{issue.summary}}

WALDUR_MASTERMIND.PROPOSAL

proposal.new_proposal_submitted

Notifies call managers about a new proposal submission.

Templates

1
    New proposal submitted: {{ proposal_name }}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
    Dear call manager,

    A new proposal has been submitted to the call "{{ call_name }}".

    Proposal details:
    - Name: {{ proposal_name }}
    - Submitted by: {{ proposal_creator_name }}
    - Submission date: {{ submission_date }}
    - Round: {{ round_name }}

    You can review this proposal by visiting the following URL:
    {{ proposal_url }}

    This is an automated message from the {{ site_name }}. Please do not reply to this email.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
    <html>
    <head>
        <meta charset="UTF-8">
    </head>
    <body>
        <p>Dear call manager,</p>

        <p>A new proposal has been submitted to the call "{{ call_name }}".</p>

        <p>
            <strong>Proposal details:</strong><br>
            - Name: {{ proposal_name }}<br>
            - Submitted by: {{ proposal_creator_name }}<br>
            - Submission date: {{ submission_date }}<br>
            - Round: {{ round_name }}
        </p>

        <p>
            You can review this proposal by visiting the following URL:<br>
            <a href="{{ proposal_url }}">{{ proposal_url }}</a>
        </p>

        <p>
            This is an automated message from the {{ site_name }}. Please do not reply to this email.
        </p>
    </body>
    </html>

proposal.new_review_submitted

A notification to the call manager about a new review submission.

Templates

1
    Review submitted for proposal: {{ proposal_name }}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
    Dear call manager,

    A review has been submitted for proposal "{{ proposal_name }}" in call "{{ call_name }}".

    Review summary:
    - Reviewer: {{ reviewer_name }}
    - Submission date: {{ submission_date }}
    - Score: {{ score }}/{{ max_score }}

    Review Progress:
    - Submitted reviews: {{ submitted_reviews }}
    - Pending reviews: {{ pending_reviews }}
    - Rejected reviews: {{ rejected_reviews }}

    You can view the full review details at:
    {{ review_url }}

    This is an automated message from the {{ site_name }}. Please do not reply to this email.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
    <html>
    <head>
        <meta charset="UTF-8">
        <title>Review Submitted</title>
    </head>
    <body>
        <p>Dear call manager,</p>

        <p>A review has been submitted for proposal "{{ proposal_name }}" in call "{{ call_name }}".</p>

        <p>
            <strong>Review summary:</strong><br>
            - Reviewer: {{ reviewer_name }}<br>
            - Submission date: {{ review_date }}<br>
            - Score: {{ score }}/{{ max_score }}
        </p>

        <p>
            <strong>Review Progress:</strong><br>
            - Submitted reviews: {{ submitted_reviews }}<br>
            - Pending reviews: {{ pending_reviews }}<br>
            - Rejected reviews: {{ rejected_reviews }}<br>
        </p>

        <p>
            You can view the full review details at:<br>
            <a href="{{ review_url }}">{{ review_url }}</a>
        </p>

        <p>
            This is an automated message from the {{ site_name }}. Please do not reply to this email.
        </p>
    </body>
    </html>

proposal.proposal_cancelled

A notification to proposal creator about the proposal cancellation.

Templates

1
    Proposal canceled: {{ proposal_name }}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
    Dear {{ proposal_creator_name }},

    Your proposal "{{ proposal_name }}" in call "{{ call_name }}" has been canceled.

    Cancellation details:
    - Proposal: {{ proposal_name }}
    - Cancellation date: {{ cancellation_date }}
    - Reason for cancellation: Round closure/The submission deadline has passed and the proposal was not finalized

    All draft proposals are automatically canceled when a round closes. This ensures that only fully submitted proposals proceed to the review stage.

    You can still view your proposal by visiting:
    {{ proposal_url }}

    If you would like to resubmit your proposal, please check for upcoming rounds in this call or other relevant calls.

    This is an automated message from the {{ site_name }}. Please do not reply to this email.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
    <html>
    <head>
        <meta charset="UTF-8">
        <title>Proposal Canceled</title>
    </head>
    <body>
        <p>Dear {{ proposal_creator_name }},</p>

        <p>Your proposal "{{ proposal_name }}" in call "{{ call_name }}" has been canceled.</p>

        <p>
            <strong>Cancellation details:</strong><br>
            - Proposal: {{ proposal_name }}<br>
            - Cancelation date: {{ cancellation_date }}<br>
            - Reason for cancellation: Round closure/The submission deadline has passed and the proposal was not finalized
        </p>

        <p>All draft proposals are automatically canceled when a round closes. This ensures that only fully submitted proposals proceed to the review stage.</p>

        <p>
            You can still view your proposal by visiting:<br>
            <a href="{{ proposal_url }}">{{ proposal_url }}</a>
        </p>

        <p>If you would like to resubmit your proposal, please check for upcoming rounds in this call or other relevant calls.</p>

        <p>
            This is an automated message from the {{ site_name }}. Please do not reply to this email.
        </p>
    </body>
    </html>

proposal.proposal_decision_for_reviewer

A notification to the reviewer about the proposal decision (approved/rejected) which they reviewed.

Templates

1
    Decision made: Proposal {{ proposal_state }} - {{ proposal_name }}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
    Dear {{ reviewer_name }},

    A decision has been made on the proposal "{{ proposal_name }}" in call "{{ call_name }}" that you reviewed.

    Decision details:
    - Proposal: {{ proposal_name }}
    - Decision: {{ proposal_state }}
    - Decision date: {{ decision_date }}

    {% if proposal_state == "rejected" and rejection_reason %}Reason: {{ rejection_reason }}{% endif %}

    Thank you for your valuable contribution to the review process. Your expert assessment helped inform this decision.

    View proposal: {{ proposal_url }}

    This is an automated message from {{ site_name }}. Please do not reply to this email.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
    <html>
    <head>
        <meta charset="UTF-8">
        <title>Proposal {{ proposal_state }}</title>
    </head>
    <body>
        <p>Dear {{ reviewer_name }},</p>

        <p>A decision has been made on the proposal "<strong>{{ proposal_name }}</strong>" in call "<strong>{{ call_name }}</strong>" that you reviewed.</p>

        <p><strong>Decision details:</strong></p>
        <ul>
            <li><strong>Proposal:</strong> {{ proposal_name }}</li>
            <li><strong>Decision:</strong> {{ proposal_state }}</li>
            <li><strong>Decision date:</strong> {{ decision_date }}</li>
        </ul>

        {% if proposal_state == "rejected" and rejection_reason %}
        <p><strong>Reason:</strong> {{ rejection_reason }}</p>
        {% endif %}

        <p>Thank you for your valuable contribution to the review process. Your expert assessment helped inform this decision.</p>

        <p>View proposal: <a href="{{ proposal_url }}">{{ proposal_url }}</a></p>

        <p><em>This is an automated message from {{ site_name }}. Please do not reply to this email.</em></p>
    </body>
    </html>

proposal.proposal_state_changed

A notification about the proposal state changes (submitted → in review → accepted/rejected). Deployments that hide calls from applicants (SERVICE_ACCESS_MODE = 'marketplace') send the access_request_* templates below instead, which say the same thing without naming a call or a round. One event, one switch, two sets of words — a deployment only ever sends one of them.

Templates

1
    Proposal state update: {{ proposal_name }} - {{ new_state }}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
    Dear {{ proposal_creator_name }},

    The state of your proposal "{{ proposal_name }}" in call "{{ call_name }}" has been updated.

    State change:
    - Previous state: {{ previous_state }}
    - New state: {{ new_state }}
    - Updated on: {{ update_date }}

    {% if new_state == 'accepted' %}
    Project created: {{ project_name }}
    Allocation start date: {{ allocation_date }}
    {% if duration %}Duration: {{ duration }}{% endif %}

    Allocated resources:
    {% for resource in allocated_resources %}
    {{ forloop.counter }}. {{ resource.name }} - {{ resource.provider_name }} - {{ resource.plan_name }} - Provisioned
    {% empty %}
    No resources allocated yet.
    {% endfor %}
    {% endif %}

    {% if new_state == 'rejected' %}
    Feedback: {{ rejection_feedback }}
    {% endif %}

    {% if new_state == 'submitted' %}
    Your proposal has been successfully submitted and will be reviewed according to the review process for this call. You will receive further notifications as your proposal progresses through the review process.
    {% endif %}

    {% if new_state == 'in_review' %}
    Your proposal is now under review. Reviewers will evaluate your proposal based on the criteria specified in the call. This process may take {{ review_period }} days according to the round's review period.
    {% endif %}

    {% if new_state == 'accepted' %}
    Congratulations! Your proposal has been accepted. Resources have been allocated based on your request and a new project has been created. You can access your project by clicking the link below.
    {% endif %}

    {% if new_state == 'rejected' %}
    We regret to inform you that your proposal has not been accepted at this time. Please review any feedback provided above. You may have the opportunity to submit a revised proposal in future rounds.
    {% endif %}

    View Proposal: {{ proposal_url }}
    {% if new_state == 'accepted' and project_url %}
    View Project: {{ project_url }}
    {% endif %}

    This is an automated message from the {{ site_name }}. Please do not reply to this email.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
    <html>
    <head>
        <meta charset="UTF-8">
        <title>Proposal Status Update</title>
        <style>
            body {
                color: #333;
                max-width: 600px;
                margin: 0 auto;
                padding: 20px;
            }
            .header {
                margin-bottom: 20px;
            }
            .state-change {
                background-color: #f9f9f9;
                padding: 15px;
                border-radius: 5px;
                margin-bottom: 20px;
            }
            .message-box {
                padding: 15px;
                margin: 15px 0;
            }
            .footer {
                margin-top: 30px;
                color: #777;
                border-top: 1px solid #eee;
                padding-top: 10px;
            }
        </style>
    </head>
    <body>
        <div class="header">
            <p>Dear {{ proposal_creator_name }},</p>
            <p>The state of your proposal "<strong>{{ proposal_name }}</strong>" in call "<strong>{{ call_name }}</strong>" has been updated.</p>
        </div>

        <div class="state-change">
            <h3>State change:</h3>
            <ul>
                <li><strong>Previous state:</strong> {{ previous_state }}</li>
                <li><strong>New state:</strong> {{ new_state }}</li>
                <li><strong>Updated on:</strong> {{ update_date }}</li>
            </ul>

            {% if new_state == 'accepted' %}
            <ul>
                <li><strong>Project created:</strong> {{ project_name }}</li>
                <li><strong>Allocation start date:</strong> {{ allocation_date }}</li>
                {% if duration %}<li><strong>Duration:</strong> {{ duration }}</li>{% endif %}
            </ul>
            <div>
                <h4>Allocated resources:</h4>
                {% for resource in allocated_resources %}
                <div>
                    <strong>{{ forloop.counter }}.</strong> {{ resource.name }} - {{ resource.provider_name }} - {{ resource.plan_name }} - Provisioned
                </div>
                {% empty %}
                <p><em>No resources allocated yet.</em></p>
                {% endfor %}
            </div>
            {% endif %}

            {% if new_state == 'rejected' %}
            <p><strong>Feedback:</strong> {{ rejection_feedback }}</p>
            {% endif %}
        </div>

        <div class="message-box">
            {% if new_state == 'submitted' %}
            <p>Your proposal has been successfully submitted and will be reviewed according to the review process for this call. You will receive further notifications as your proposal progresses through the review process.</p>
            {% endif %}

            {% if new_state == 'in_review' %}
            <p>Your proposal is now under review. Reviewers will evaluate your proposal based on the criteria specified in the call. This process may take {{ review_period }} days according to the round's review period.</p>
            {% endif %}

            {% if new_state == 'accepted' %}
            <p>Congratulations! Your proposal has been accepted. Resources have been allocated based on your request and a new project has been created. You can access your project by clicking the link below.</p>
            {% endif %}

            {% if new_state == 'rejected' %}
            <p>We regret to inform you that your proposal has not been accepted at this time. Please review any feedback provided above. You may have the opportunity to submit a revised proposal in future rounds.</p>
            {% endif %}
        </div>

        <a href="{{ proposal_url }}">View Proposal</a>
        <br>
        {% if new_state == 'accepted' and project_url %}
        <a href="{{ project_url }}">View Project</a>
        {% endif %}

        <div class="footer">
            <p>This is an automated message from the {{ site_name }}. Please do not reply to this email.</p>
        </div>
    </body>
    </html>
1
    Access request update: {{ proposal_name }} - {{ new_state }}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
    Dear {{ proposal_creator_name }},

    The state of your access request "{{ proposal_name }}" has been updated.

    State change:
    - Previous state: {{ previous_state }}
    - New state: {{ new_state }}
    - Updated on: {{ update_date }}

    {% if new_state == 'accepted' %}
    Project created: {{ project_name }}
    {% if allocation_date %}Allocation start date: {{ allocation_date }}
    {% endif %}{% if duration %}Duration: {{ duration }} days
    {% endif %}
    Allocated resources:
    {% for resource in allocated_resources %}
    {{ forloop.counter }}. {{ resource.name }} - {{ resource.provider_name }} - {{ resource.plan_name }} - Provisioned
    {% empty %}
    No resources allocated yet.
    {% endfor %}
    {% endif %}

    {% if new_state == 'rejected' %}
    Feedback: {{ rejection_feedback }}
    {% endif %}

    {% if new_state == 'submitted' %}
    Your access request has been submitted and is now being processed. You will receive further notifications as it moves forward.
    {% endif %}

    {% if new_state == 'in_review' %}
    Your access request is being evaluated. You will be notified as soon as a decision has been made.
    {% endif %}

    {% if new_state == 'accepted' %}
    Your access request has been approved. A project has been created with the resources you asked for, and you can open it using the link below.
    {% endif %}

    {% if new_state == 'rejected' %}
    Your access request has not been approved at this time. Please review any feedback provided above. You are welcome to submit a new request later.
    {% endif %}

    View access request: {{ proposal_url }}
    {% if new_state == 'accepted' and project_url %}
    View Project: {{ project_url }}
    {% endif %}

    This is an automated message from the {{ site_name }}. Please do not reply to this email.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
    <html>
    <head>
        <meta charset="UTF-8">
        <title>Access Request Update</title>
        <style>
            body {
                color: #333;
                max-width: 600px;
                margin: 0 auto;
                padding: 20px;
            }
            .header {
                margin-bottom: 20px;
            }
            .state-change {
                background-color: #f9f9f9;
                padding: 15px;
                border-radius: 5px;
                margin-bottom: 20px;
            }
            .message-box {
                padding: 15px;
                margin: 15px 0;
            }
            .footer {
                margin-top: 30px;
                color: #777;
                border-top: 1px solid #eee;
                padding-top: 10px;
            }
        </style>
    </head>
    <body>
        <div class="header">
            <p>Dear {{ proposal_creator_name }},</p>
            <p>The state of your access request "<strong>{{ proposal_name }}</strong>" has been updated.</p>
        </div>

        <div class="state-change">
            <h3>State change:</h3>
            <ul>
                <li><strong>Previous state:</strong> {{ previous_state }}</li>
                <li><strong>New state:</strong> {{ new_state }}</li>
                <li><strong>Updated on:</strong> {{ update_date }}</li>
            </ul>

            {% if new_state == 'accepted' %}
            <ul>
                <li><strong>Project created:</strong> {{ project_name }}</li>
                {% if allocation_date %}<li><strong>Allocation start date:</strong> {{ allocation_date }}</li>{% endif %}
                {% if duration %}<li><strong>Duration:</strong> {{ duration }} days</li>{% endif %}
            </ul>
            <div>
                <h4>Allocated resources:</h4>
                {% for resource in allocated_resources %}
                <div>
                    <strong>{{ forloop.counter }}.</strong> {{ resource.name }} - {{ resource.provider_name }} - {{ resource.plan_name }} - Provisioned
                </div>
                {% empty %}
                <p><em>No resources allocated yet.</em></p>
                {% endfor %}
            </div>
            {% endif %}

            {% if new_state == 'rejected' %}
            <p><strong>Feedback:</strong> {{ rejection_feedback }}</p>
            {% endif %}
        </div>

        <div class="message-box">
            {% if new_state == 'submitted' %}
            <p>Your access request has been submitted and is now being processed. You will receive further notifications as it moves forward.</p>
            {% endif %}

            {% if new_state == 'in_review' %}
            <p>Your access request is being evaluated. You will be notified as soon as a decision has been made.</p>
            {% endif %}

            {% if new_state == 'accepted' %}
            <p>Your access request has been approved. A project has been created with the resources you asked for, and you can open it using the link below.</p>
            {% endif %}

            {% if new_state == 'rejected' %}
            <p>Your access request has not been approved at this time. Please review any feedback provided above. You are welcome to submit a new request later.</p>
            {% endif %}
        </div>

        <a href="{{ proposal_url }}">View access request</a>
        <br>
        {% if new_state == 'accepted' and project_url %}
        <a href="{{ project_url }}">View Project</a>
        {% endif %}

        <div class="footer">
            <p>This is an automated message from the {{ site_name }}. Please do not reply to this email.</p>
        </div>
    </body>
    </html>

proposal.proposal_submission_deadline_approaching

Reminds proposal creators to submit draft proposals during the last 3 days before the round cutoff.

Templates

1
    Reminder: Proposal {{ proposal_name }} submission deadline approaching for {{ call_name }}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
    Dear {{ proposal_creator_name }},

    This is a friendly reminder that the submission deadline for your draft proposal "{{ proposal_name }}" in call "{{ call_name }}" is approaching.

    Deadline information:
    - Round: {{ round_name }}
    - Submission deadline: {{ deadline_date }}
    - Time remaining: {{ time_remaining_days }} days {{ time_remaining_hours }} hours

    Your proposal is currently in DRAFT state. To be considered for review, you must submit your proposal before the deadline.

    Please ensure you have completed all required sections and finalized your resource requests before submission.

    Complete and submit proposal: {{ proposal_url }}

    Any proposals left in draft state after the deadline will be automatically canceled and will not be considered for resource allocation.

    This is an automated message from the {{ site_name }}. Please do not reply to this email.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
    <html>
    <head>
        <meta charset="UTF-8">
        <title>Proposal submission deadline reminder</title>
    </head>
    <body>
        <p>Dear {{ proposal_creator_name }},</p>

        <p>This is a friendly reminder that the submission deadline for your draft proposal "{{ proposal_name }}" in call "{{ call_name }}" is approaching.</p>

        <p><strong>Deadline information:</strong><br>
            - Round: {{ round_name }}<br>
            - Submission deadline: {{ deadline_date }}<br>
            - Time remaining: {{ time_remaining_days }} days {{ time_remaining_hours }} hours
        </p>

        <p>Your proposal is currently in <strong>DRAFT</strong> state. To be considered for review, you must submit your proposal before the deadline.</p>

        <p>Please ensure you have completed all required sections and finalized your resource requests before submission.</p>

        <p>Complete and submit proposal: <a href="{{ proposal_url }}">{{ proposal_url }}</a></p>

        <p>Any proposals left in draft state after the deadline will be automatically canceled and will not be considered for resource allocation.</p>

        <p>This is an automated message from the {{ site_name }}. Please do not reply to this email.</p>
    </body>
    </html>

proposal.requested_offering_decision

A notification to call manager about the decision on requested offering (accepted/rejected).

Templates

1
    Offering request {{ decision }}: {{ offering_name }}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
    Dear call manager,

    The provider has {{ decision }} the request to include offering "{{ offering_name }}" in call "{{ call_name }}".

    Offering details:
    - Offering: {{ offering_name }}
    - Provider: {{ provider_name }}
    - Decision Date: {{ decision_date }}
    - State: {{ decision }}

    {% if decision == "accepted" %}This offering is now available for selection in proposals submitted to this call.{% endif %}

    {% if decision == "canceled" %}You may need to look for alternative offerings or contact the provider directly for more information about their decision.{% endif %}

    You can view the call details and manage offerings by visiting:
    {{ call_url }}

    This is an automated message from {{ site_name }}. Please do not reply to this email.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
    <html>
    <head>
        <meta charset="UTF-8">
        <title>Offering request {{ decision }}</title>
    </head>
    <body>
        <p>Dear call manager,</p>

        <p>The provider has <strong>{{ decision }}</strong> the request to include offering "<strong>{{ offering_name }}</strong>" in call "<strong>{{ call_name }}</strong>".</p>

        <p><strong>Offering details:</strong></p>
        <ul>
            <li><strong>Offering:</strong> {{ offering_name }}</li>
            <li><strong>Provider:</strong> {{ provider_name }}</li>
            <li><strong>Decision Date:</strong> {{ decision_date }}</li>
            <li><strong>State:</strong> {{ decision }}</li>
        </ul>

        {% if decision == "accepted" %}
        <p>This offering is now available for selection in proposals submitted to this call.</p>
        {% endif %}

        {% if decision == "canceled" %}
        <p>You may need to look for alternative offerings or contact the provider directly for more information about their decision.</p>
        {% endif %}

        <p>You can view the call details and manage offerings by visiting:<br>
        <a href="{{ call_url }}">{{ call_url }}</a></p>

        <p><em>This is an automated message from {{ site_name }}. Please do not reply to this email.</em></p>
    </body>
    </html>

proposal.review_assigned

A notification to a reviewer about a new review assignment.

Templates

1
    New review assignment: {{ proposal_name }}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
    Dear {{ reviewer_name }},

    You have been assigned to review a proposal in call "{{ call_name }}".

    Proposal details:
    - Proposal name: {{ proposal_name }}
    - Submitted by: {{ proposal_creator_name }}
    - Date submitted: {{ submission_date }}
    - Review deadline: {{ review_deadline }}

    Please log in to the platform to review the proposal. You can accept or reject this review assignment by visiting:

    {{ link_to_reviews_list }}

    If you accept this assignment, you'll be able to access the full proposal content and submit your review.

    This is an automated message from {{ site_name }}. Please do not reply to this email.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
    <html>
    <head>
        <meta charset="UTF-8">
    </head>
    <body>
    <p>Dear {{ reviewer_name }},</p>

    <p>You have been assigned to review a proposal in call "<strong>{{ call_name }}</strong>".</p>

    <p><strong>Proposal details:</strong></p>
    <ul>
        <li><strong>Proposal name:</strong> {{ proposal_name }}</li>
        <li><strong>Submitted by:</strong> {{ proposal_creator_name }}</li>
        <li><strong>Date submitted:</strong> {{ submission_date }}</li>
        <li><strong>Review deadline:</strong> {{ review_deadline }}</li>
    </ul>

    <p>Please log in to the platform to review the proposal. You can accept or reject this review assignment by visiting:</p>

    <a href="{{ link_to_reviews_list }}">{{ link_to_reviews_list }}</a>

    <p>If you accept this assignment, you'll be able to access the full proposal content and submit your review.</p>

    <p><em>This is an automated message from {{ site_name }}. Please do not reply to this email.</em></p>
    </body>
    </html>

proposal.review_deadline_approaching

Reminds reviewers to submit in-review assignments 3 days before deadline.

Templates

1
    Reminder: Review due in {{ time_remaining_days }} days for {{ proposal_name }}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
    Dear {{ reviewer_name }},

    This is a friendly reminder that your review for the proposal "{{ proposal_name }}" in call "{{ call_name }}" is due soon.

    Review deadline:
    - Due date: {{ review_deadline }}
    - Time remaining: {{ time_remaining_days }} days

    Please log in to the platform to complete and submit your review as soon as possible. If you have any questions or need assistance, please contact the call manager.

    Continue review: {{ review_url }}

    This is an automated message from the {{ site_name }}. Please do not reply to this email.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
    <html>
    <head>
        <meta charset="UTF-8">
        <title>Review deadline reminder</title>
    </head>
    <body>
        <p>Dear {{ reviewer_name }},</p>

        <p>This is a friendly reminder that your review for the proposal "{{ proposal_name }}" in call "{{ call_name }}" is due soon.</p>

        <p><strong>Review deadline:</strong><br>
            - Due date: {{ review_deadline }}<br>
            - Time remaining: {{ time_remaining_days }} days
        </p>

        <p>Please log in to the platform to complete and submit your review as soon as possible. If you have any questions or need assistance, please contact the call manager.</p>

        <p>Continue review: <a href="{{ review_url }}">{{ review_url }}</a></p>

        <p>This is an automated message from the {{ site_name }}. Please do not reply to this email.</p>
    </body>
    </html>

proposal.review_rejected

A notification to the call managers about a rejected review.

Templates

1
    Alert: review assignment rejected for {{ proposal_name }}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
    Dear call manager,

    A reviewer has rejected their assignment to review proposal "{{ proposal_name }}" in call "{{ call_name }}".

    Assignment details:
    - Reviewer: {{ reviewer_name }}
    - Assigned date: {{ assign_date }}
    - Rejected date: {{ rejection_date }}

    ACTION REQUIRED: Please assign a new reviewer to maintain the minimum required number of reviews for this proposal.

    Review Progress:
    - Submitted reviews: {{ submitted_reviews }}
    - Pending reviews: {{ pending_reviews }}
    - Rejected reviews: {{ rejected_reviews }}

    You can assign a new reviewer by visiting:
    {{ create_review_link }}

    This is an automated message from the {{ site_name }}. Please do not reply to this email.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
    <html>
    <head>
        <meta charset="UTF-8">
        <title>Reviewer Assignment Rejected</title>
    </head>
    <body>
        <p>Dear call manager,</p>

        <p>A reviewer has rejected their assignment to review proposal "{{ proposal_name }}" in call "{{ call_name }}".</p>

        <p>
            <strong>Assignment details:</strong><br>
            - Reviewer: {{ reviewer_name }}<br>
            - Assigned date: {{ assign_date }}<br>
            - Rejected date: {{ rejection_date }}
        </p>

        <p>
            <strong style="color: #d9534f;">ACTION REQUIRED:</strong> Please assign a new reviewer to maintain the minimum required number of reviews for this proposal.
        </p>

        <p>
            <strong>Review Progress:</strong><br>
            - Submitted reviews: {{ submitted_reviews }}<br>
            - Pending reviews: {{ pending_reviews }}<br>
            - Rejected reviews: {{ rejected_reviews }}<br>
        </p>

        <p>
            You can assign a new reviewer by visiting:<br>
            <a href="{{ create_review_link }}">{{ create_review_link }}</a>
        </p>

        <p>
            This is an automated message from the {{ site_name }}. Please do not reply to this email.
        </p>
    </body>
    </html>

proposal.reviewer_invitation

Sent to a person invited to join the reviewer pool for a call.

Templates

1
    You are invited to join the reviewer pool for "{{ call_name }}"
1
2
3
4
5
6
7
8
9
    You have been invited by {{ invited_by_name }} to join the reviewer pool for the call "{{ call_name }}" on {{ site_name }}.

    To accept or decline this invitation, please follow the link below:

    {{ invitation_link }}

    If you do not yet have an account, you will need to register and create a reviewer profile before accepting.

    This is an automated message from {{ site_name }}. Please do not reply to this email.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
    <html>
    <head>
        <meta charset="UTF-8">
    </head>
    <body>
    <p>You have been invited by <strong>{{ invited_by_name }}</strong> to join the reviewer pool for the call "<strong>{{ call_name }}</strong>" on {{ site_name }}.</p>

    <p>To accept or decline this invitation, please follow the link below:</p>

    <p><a href="{{ invitation_link }}">{{ invitation_link }}</a></p>

    <p>If you do not yet have an account, you will need to register and create a reviewer profile before accepting.</p>

    <p><em>This is an automated message from {{ site_name }}. Please do not reply to this email.</em></p>
    </body>
    </html>

proposal.reviews_complete

Notifies call managers when all required reviews for a proposal have been submitted, providing a summary.

Templates

1
    All reviews complete for proposal: {{ proposal_name }}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
    Dear call manager,

    All required reviews have been completed for proposal "{{ proposal_name }}" in call "{{ call_name }}".

    Review summary:
    - Proposal: {{ proposal_name }}
    - Submitted by: {{ submitter_name }}
    - Number of submitted reviews: {{ reviews_count }}
    - Average score: {{ average_score }}/5

    Review details:
    {% for r in reviews %}{{ forloop.counter }}. {{ r.reviewer_name }} - {{ r.score }}/5 - {{ r.submitted_at|date:"Y-m-d H:i" }}
    {% empty %}No individual reviews available.
    {% endfor %}
    ACTION REQUIRED: Please review the evaluation and make a decision on this proposal.

    Review & decide: {{ proposal_url }}

    This is an automated message from the {{ site_name }}. Please do not reply to this email.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
    <html lang="en">
      <head>
        <meta charset="utf-8" />
        <title>Reviews completed</title>
      </head>
      <body>
        <p>Dear call manager,</p>

        <p>
          All required reviews have been completed for proposal
          "<strong>{{ proposal_name }}</strong>" in call
          "<strong>{{ call_name }}</strong>".
        </p>

        <h3>Review summary</h3>
        <ul>
          <li><strong>Proposal:</strong> {{ proposal_name }}</li>
          <li><strong>Submitted by:</strong> {{ submitter_name }}</li>
          <li><strong>Number of submitted reviews:</strong> {{ reviews_count }}</li>
          <li><strong>Average score:</strong> {{ average_score }}/5</li>
        </ul>

        <h3>Review details</h3>
        <ol>
          {% for r in reviews %}
          <li>
            <strong>{{ r.reviewer_name }}</strong>
            &nbsp;-&nbsp;{{ r.score }}/5
            &nbsp;-&nbsp;{{ r.submitted_at|date:"Y-m-d H:i" }}
          </li>
          {% empty %}
          <li>No individual reviews available.</li>
          {% endfor %}
        </ol>

        <p>
          ACTION REQUIRED: Please review the evaluation and make a decision on this proposal.
        </p>

        <p>
          <a href="{{ proposal_url }}">
            {{ proposal_url }}
          </a>
        </p>

        <p>
          This is an automated message from the {{ site_name }}. Please do not reply to this email.
        </p>
      </body>
    </html>

proposal.round_closing_for_managers

Notifies call managers that a round has ended, with a summary of proposals and reviews.

Templates

1
    Round closed: {{ round_name }} - {{ call_name }}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
    Dear call manager,

    The round "{{ round_name }}" for call "{{ call_name }}" has now closed.

    Round summary:
    - Total proposals submitted: {{ total_proposals }}
    - Reviews on record: {{ total_reviews }}
    - Start date: {{ start_date }}
    - Closed date: {{ close_date }}

    No further proposals can be submitted to this round. Proposals that had not been
    accepted or rejected by the cutoff are cancelled automatically, drafts included,
    so only proposals with a final decision remain.

    You can view the round details and manage proposals by visiting:
    {{ round_url }}

    This is an automated message from {{ site_name }}. Please do not reply to this email.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
    <html>
    <head lang="en">
        <meta charset="UTF-8">
        <title>Round closed</title>
    </head>
    <body>
        <p>Dear call manager,</p>

        <p>The round "{{ round_name }}" for call "{{ call_name }}" has now closed.</p>

        <h4>Round summary:</h4>
        <ul>
            <li><strong>Total proposals submitted:</strong> {{ total_proposals }}</li>
            <li><strong>Reviews on record:</strong> {{ total_reviews }}</li>
            <li><strong>Start date:</strong> {{ start_date }}</li>
            <li><strong>Closed date:</strong> {{ close_date }}</li>
        </ul>

        <p>No further proposals can be submitted to this round. Proposals that had not been accepted or rejected by the cutoff are cancelled automatically, drafts included, so only proposals with a final decision remain.</p>

        <p>You can view the round details and manage proposals by visiting: <a href="{{ round_url }}">{{ round_url }}</a></p>

        <p>
            This is an automated message from the {{ site_name }}. Please do not reply to this email.
        </p>
    </body>
    </html>

proposal.round_opening_for_reviewers

A notification to reviewers about a new call round opening.

Templates

1
    New review round opening: {{ call_name }}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
    Dear {{ reviewer_name }},

    A new review round is opening for call "{{ call_name }}" where you are registered as a reviewer.

    Round details:
    - Round: {{ round_name }}
    - Submission period: {{ start_date }} to {{ end_date }}

    You may be assigned proposals to review once they are submitted. Please ensure your availability during the review period.

    If you anticipate any conflicts or periods of unavailability during this time, please notify the call manager as soon as possible.

    View call details: {{ call_url }}

    This is an automated message from the {{ site_name }}. Please do not reply to this email.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
    <html>
    <head>
        <meta charset="UTF-8">
        <title>New round opening</title>
    </head>
    <body>
        <p>Dear {{ reviewer_name }},</p>

        <p>A new review round is opening for call "<strong>{{ call_name }}</strong>" where you are registered as a reviewer.</p>

        <h4>Round details:</h4>
        <ul>
          <li><strong>Round:</strong> {{ round_name }}</li>
          <li><strong>Submission period:</strong> {{ start_date }} to {{ end_date }}</li>
        </ul>

        <p>You may be assigned proposals to review once they are submitted. Please ensure your availability during the review period.</p>

        <p>If you anticipate any conflicts or periods of unavailability during this time, please notify the call manager as soon as possible.</p>
        <p>View call details: <a href="{{ call_url }}">{{ call_url }}</a></p>

        <p><em>This is an automated message from the {{ site_name }}. Please do not reply to this email.</em></p>

    </body>
    </html>

proposal.workflow_step_event

Sent when a call's workflow notification rule fires: a workflow step started, completed, was rejected, expired, or its deadline is approaching. Audience is configured per call and step.

Templates

1
    {% if trigger == "deadline_approaching" %}Reminder: {{ step_name }} for "{{ proposal_name }}" is due in {{ days_before }} day{{ days_before|pluralize }}{% elif trigger == "step_started" %}{{ step_name }} has started for "{{ proposal_name }}"{% elif trigger == "step_completed" %}{{ step_name }} completed for "{{ proposal_name }}"{% elif trigger == "step_rejected" %}"{{ proposal_name }}" was rejected at {{ step_name }}{% elif trigger == "step_expired" %}{{ step_name }} for "{{ proposal_name }}" has expired{% else %}Update on "{{ proposal_name }}"{% endif %}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
    Dear {% if is_applicant %}applicant{% else %}colleague{% endif %},

    {% if trigger == "deadline_approaching" %}The "{{ step_name }}" step for proposal "{{ proposal_name }}" (call "{{ call_name }}", round "{{ round_name }}") is due on {{ deadline|date:"Y-m-d" }} — in {{ days_before }} day{{ days_before|pluralize }}.{% if is_applicant %} Please respond before the deadline.{% else %} Please complete the step or follow up before it expires.{% endif %}
    {% elif trigger == "step_started" %}The "{{ step_name }}" step has started for proposal "{{ proposal_name }}" (call "{{ call_name }}", round "{{ round_name }}").{% if deadline %} It is due on {{ deadline|date:"Y-m-d" }}.{% endif %}
    {% elif trigger == "step_completed" %}The "{{ step_name }}" step has been completed for proposal "{{ proposal_name }}" (call "{{ call_name }}", round "{{ round_name }}").{% if outcome %} Outcome: {{ outcome }}.{% endif %}{% if outcome_reason %}
    Reason: {{ outcome_reason }}{% endif %}
    {% elif trigger == "step_rejected" %}Proposal "{{ proposal_name }}" (call "{{ call_name }}", round "{{ round_name }}") was rejected at the "{{ step_name }}" step.{% if outcome_reason %}
    Reason: {{ outcome_reason }}{% endif %}
    {% elif trigger == "step_expired" %}The "{{ step_name }}" step for proposal "{{ proposal_name }}" (call "{{ call_name }}", round "{{ round_name }}") has expired without being completed.{% if not is_applicant %} Please follow up so the workflow can continue.{% endif %}
    {% endif %}
    You can view the proposal here:
    {{ proposal_url }}

    This is an automated message from the {{ site_name }}. Please do not reply to this email.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
    <html>
    <head>
        <meta charset="UTF-8">
    </head>
    <body>
        <p>Dear {% if is_applicant %}applicant{% else %}colleague{% endif %},</p>

        <p>
        {% if trigger == "deadline_approaching" %}
            The "{{ step_name }}" step for proposal "{{ proposal_name }}" (call "{{ call_name }}", round "{{ round_name }}") is due on {{ deadline|date:"Y-m-d" }} — in {{ days_before }} day{{ days_before|pluralize }}.
            {% if is_applicant %}Please respond before the deadline.{% else %}Please complete the step or follow up before it expires.{% endif %}
        {% elif trigger == "step_started" %}
            The "{{ step_name }}" step has started for proposal "{{ proposal_name }}" (call "{{ call_name }}", round "{{ round_name }}").
            {% if deadline %}It is due on {{ deadline|date:"Y-m-d" }}.{% endif %}
        {% elif trigger == "step_completed" %}
            The "{{ step_name }}" step has been completed for proposal "{{ proposal_name }}" (call "{{ call_name }}", round "{{ round_name }}").
            {% if outcome %}Outcome: {{ outcome }}.{% endif %}
            {% if outcome_reason %}<br>Reason: {{ outcome_reason }}{% endif %}
        {% elif trigger == "step_rejected" %}
            Proposal "{{ proposal_name }}" (call "{{ call_name }}", round "{{ round_name }}") was rejected at the "{{ step_name }}" step.
            {% if outcome_reason %}<br>Reason: {{ outcome_reason }}{% endif %}
        {% elif trigger == "step_expired" %}
            The "{{ step_name }}" step for proposal "{{ proposal_name }}" (call "{{ call_name }}", round "{{ round_name }}") has expired without being completed.
            {% if not is_applicant %}Please follow up so the workflow can continue.{% endif %}
        {% endif %}
        </p>

        <p>
            You can view the proposal here:<br>
            <a href="{{ proposal_url }}">{{ proposal_url }}</a>
        </p>

        <p>
            This is an automated message from the {{ site_name }}. Please do not reply to this email.
        </p>
    </body>
    </html>

WALDUR_CORE.ONBOARDING

onboarding.justification_review_notification

Notifies users when their onboarding justification has been reviewed.

Templates

1
    Update on your organization onboarding application
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
    Dear {{ user_full_name }},

    The review of your organization onboarding application has now been completed.

    Organization: {{ organization_name }}
    Submitted on: {{ created_at }}

    You can view the outcome and any related details by signing in to your dashboard.

    If the application was not approved, it will remain available in your dashboard for 30 days, after which it will be automatically removed.

    View details: {{ link_to_homeport_dashboard }}

    This is an automated message from {{ site_name }}. Please do not reply to this email.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Organization Onboarding Application Review</title>
    </head>
    <body style="font-family: Arial, sans-serif; line-height: 1.6; color: #333; max-width: 600px; margin: 0 auto; padding: 20px;">
        <p>Dear <strong>{{ user_full_name }}</strong>,</p>

        <p>The review of your organization onboarding application has now been completed.</p>

        <div style="background-color: #f5f5f5; border-left: 4px solid #007bff; padding: 15px; margin: 20px 0;">
            <p style="margin: 5px 0;"><strong>Organization:</strong> {{ organization_name }}</p>
            <p style="margin: 5px 0;"><strong>Submitted on:</strong> {{ created_at }}</p>
        </div>

        <p>You can view the outcome and any related details by signing in to your dashboard.</p>

        <p style="background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 10px; margin: 20px 0;">
            <strong>Note:</strong> If the application was not approved, it will remain available in your dashboard for 30 days, after which it will be automatically removed.
        </p>

        <p>
            <a href="{{ link_to_homeport_dashboard }}">View Details</a>
        </p>

        <p><em>This is an automated message from {{ site_name }}. Please do not reply to this email.</em></p>

    </body>
    </html>

WALDUR_CORE.USER_ACTIONS

user_actions.notification_digest

A daily digest notification sent to users with pending actions.

Templates

1
    [{{ site_name }}] User Action Digest: {{ action_count }} pending actions
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
    Hello {{ user.full_name }},

    You have {{ action_count }} pending actions that require your attention.
    {% if high_urgency_count > 0 %}
    Warning: {{ high_urgency_count }} of these actions are marked as HIGH URGENCY.
    {% endif %}

    Please acknowledge or resolve these actions here:
    {{ actions_url }}

    Sincerely,
    The {{ site_name }} Team
1
2
3
4
5
6
7
8
9
    <p>Hello {{ user.full_name }},</p>

    <p>You have <strong>{{ action_count }}</strong> pending actions that require your attention.</p>
    {% if high_urgency_count > 0 %}
    <p style="color: red; font-weight: bold;">Warning: {{ high_urgency_count }} of these actions are marked as HIGH URGENCY.</p>
    {% endif %}

    <p>Please acknowledge or resolve these actions here:<br/>
    <a href="{{ actions_url }}">{{ actions_url }}</a></p>

WALDUR_OPENPORTAL

openportal.managed_project_rejected

Sent to Project admins and Project managers when their resource allocation request is rejected.

Templates

1
    Resource allocation request for {{ project_name }} has been rejected
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
    Dear {% if recipient_first_name %}{{ recipient_first_name }}{% else %}user{% endif %},

    This message is from your {{ site_name }} self-service portal. {{ reviewer_organization|default:reviewer_full_name }} has rejected the resource allocation request for project {{ project_name }}.

    {% if review_comment %}Rejection reason: {{ review_comment }}

    {% endif %}Please contact your Resource Allocator for details: {{ reviewer_email }}

    Best regards,
    {{ reviewer_full_name }}
    {% if reviewer_organization %}{{ reviewer_organization }}
    {% endif %}{{ reviewer_email }}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
    <html lang="en">
    <head><meta charset="UTF-8"><title>Resource allocation request rejected</title></head>
    <body>
    <p>Dear {% if recipient_first_name %}{{ recipient_first_name }}{% else %}user{% endif %},</p>
    <p>This message is from your <strong>{{ site_name }}</strong> self-service portal. <strong>{{ reviewer_organization|default:reviewer_full_name }}</strong> has rejected the resource allocation request for project <strong>{{ project_name }}</strong>.</p>
    {% if review_comment %}<p>Rejection reason: {{ review_comment }}</p>{% endif %}
    <p>Please contact your Resource Allocator for details: <a href="mailto:{{ reviewer_email }}">{{ reviewer_email }}</a></p>
    <p>Best regards,<br>{{ reviewer_full_name }}<br>{% if reviewer_organization %}{{ reviewer_organization }}<br>{% endif %}{{ reviewer_email }}</p>
    </body>
    </html>