Loading...
centrexIT
Knowledge Center

CentrexIT Immy.bot New Client Alert Automation

KB00066210
Jonathan Christensen Standard Draft 1 min
DraftJonathan Christensenv1.0

Rewst Workflow Documentation: Immy: NewHaloClientAlert

Section titled “Rewst Workflow Documentation: Immy: NewHaloClientAlert”
PropertyValue
NameImmy: NewHaloClientAlert
ID019bb984-1d2a-78d9-90bf-3e8808ec205e
TypeStandard
TagsProduction
Task Count7
TriggersNone configured

This workflow identifies HaloPSA clients that do not have a corresponding tenant in ImmyBot and creates a HaloPSA ticket to alert the team about these missing clients. It helps ensure synchronization between HaloPSA and ImmyBot by flagging clients that may need to be onboarded into ImmyBot.

+------------------------+
| start_initialize |
| (noop - kickoff) |
+------------------------+
|
+---------------+---------------+
| |
v v
+-------------------+ +------------------------+
| get_halo_ | | immy_bot_list_ |
| new_clients | | tenants |
| (HaloPSA) | | (ImmyBot) |
+-------------------+ +------------------------+
| |
+---------------+---------------+
|
v
+------------------------+
| merge_candidates |
| (join=2, noop) |
+------------------------+
|
| Publishes: candidates,
| immy_tenant_names,
| debug_halo_names
v
+------------------------+
| compare_find_missing |
| (noop) |
+------------------------+
|
| Publishes: missing_clients,
| filtered_missing
v
+------------------------+
| filter_exclusions |
| (noop) |
+------------------------+
|
+---------------+---------------+
| |
v v
+-------------------+ +------------------------+
| halo_create_ | | (END) |
| ticket | | No missing clients |
| (HaloPSA) | +------------------------+
+-------------------+
PropertyValue
Actionnoop (Core)
DescriptionKicks off parallel fetches from Halo and ImmyBot
Join0
Timeout600s

Transitions:

  • On SUCCEEDED → Triggers both get_halo_new_clients AND immy_bot_list_tenants (parallel execution)
PropertyValue
ActionList Clients (HaloPSA)
DescriptionReturns active Halo clients
Publish Result Ashalo_clients
Timeout600s
Input Parameters:
json
{
"query_params": {
"search": null,
"toplevel_id": null,
"includeactive": true,
"includeinactive": false
}
}

Transitions:

  • On SUCCEEDED → merge_candidates
PropertyValue
ActionList Tenants (ImmyBot)
DescriptionRetrieve list of existing ImmyBot tenants
Publish Result Asimmy_tenants
Timeout600s

Transitions:

  • On SUCCEEDED → merge_candidates
PropertyValue
Actionnoop (Core)
DescriptionDEBUG - Wait for Halo + ImmyBot, then show what we have
Join2 (waits for both parallel tasks)
Timeout600s
Published Variables on Success:
VariableJinja ExpressionPurpose
candidates{{ CTX.halo_clients.clients | default(CTX.halo_clients | default([])) }}Normalized list of Halo clients
immy_tenant_names{{ (CTX.immy_tenants | default([])) | map(attribute='name') | map('trim') | map('lower') | reject('equalto', '') | list }}Lowercase, trimmed list of ImmyBot tenant names
debug_halo_names{{ (CTX.halo_clients.clients | default(CTX.halo_clients | default([]))) | map(attribute='name') | map('trim') | map('lower') | reject('equalto', '') | list }}Debug list of Halo client names

Transitions:

  • On SUCCEEDED → compare_find_missing

  • On FAILED → (End)

PropertyValue
Actionnoop (Core)
DescriptionAction for flow control, logic, or data
Timeout600s
Published Variables on Success:
VariablePurpose
missing_clientsList of Halo client objects whose names are NOT in ImmyBot
filtered_missingComma-separated string of missing client names, excluding specific exclusions
Jinja Logic for missing_clients:
jinja
{% set result = [] %}
{% for client in CTX.candidates %}
{% if (client.name | trim | lower) not in CTX.immy_tenant_names %}
{% set _ = result.append(client) %}
{% endif %}
{% endfor %}
{{ result }}

Jinja Logic for filtered_missing (with exclusions):

jinja
{% set names = [] %}
{% for client in CTX.missing_clients %}
{% set n = client.name | lower %}
{% if 'test' not in n
and 'recycle for cyber assessment' not in n
and 're-installed agents' not in n
and 'apex namg affiliated' not in n
and 'a test company' not in n
and 'template' not in n
and 'unknown' not in n
and 'nfr-test' not in n
and 'best best and krieger' not in n
and 'synthekine' not in n
and 'satomic' not in n
and 'san diego museum of art' not in n
and 'balboa park online collaborative' not in n
and 'cirsium biosciences' not in n
and 'reproductive sciences medical center' not in n %}
{% set _ = names.append(client.name) %}
{% endif %}
{% endfor %}
{{ names | join(', ') }}

Transitions:

  • On SUCCEEDED → filter_exclusions
PropertyValue
Actionnoop (Core)
DescriptionAction for flow control, logic, or data
Timeout600s

Transitions:

  • On SUCCEEDED AND CTX.filtered_missing | length > 0 → halo_create_ticket

  • On SUCCEEDED AND CTX.filtered_missing | length == 0 → (End - no ticket needed)

PropertyValue
ActionAdd or Update Tickets (HaloPSA)
DescriptionAdds or updates one or more ticket(s)
Timeout600s
Key Input Parameters:
ParameterValue
summary”New Halo Clients Missing from ImmyBot”
details{{ CTX.filtered_missing }}
site_id874
user_id63
agent_id27
client_id12
tickettype_id34
onholdtrue
excludefromslatrue
_forcereassigntrue

Transitions:

  • On SUCCEEDED → (End)

The workflow filters out the following client names from the alert:

  • Clients containing “test”

  • “recycle for cyber assessment”

  • “re-installed agents”

  • “apex namg affiliated”

  • “a test company”

  • “template”

  • “unknown”

  • “nfr-test”

  • “best best and krieger”

  • “synthekine”

  • “satomic”

  • “san diego museum of art”

  • “balboa park online collaborative”

  • “cirsium biosciences”

  • “reproductive sciences medical center”

IntegrationActions Used
HaloPSAList Clients, Add or Update Tickets
ImmyBotList Tenants
Corenoop (4 instances)

This workflow automates the detection of HaloPSA clients that haven’t been set up in ImmyBot by:

  1. Fetching data in parallel from both HaloPSA and ImmyBot
  2. Comparing client lists using case-insensitive name matching
  3. Filtering out known exclusions (test accounts, specific clients, etc.)
  4. Creating a HaloPSA ticket only if there are legitimate missing clients to report

Ensure a path for new client tenant configuration is active and documented


Service Desk, Automation team


Service Desk, Automation team


  1. Example
  2. Example

  1. First activity (Plan or preparation)
  • Who performs it, and what do they do?

  • When do they do it?

  • Repeat as needed

  • Include references and links to supporting documentation

  1. Second Activity (Do)
  • Who performs it, and what do they do?

  • When do they do it?

  • Repeat as needed

  • Include references and links to supporting documentation

  1. Third Activity (Check)
  • Who performs it, and what do they do?

  • When do they do it?

  • Repeat as needed

  • Include references and links to supporting documentation


  1. What measures are used to ensure the procedure is working or is complete?
  2. What records are required?
  3. Where are the records stored?

  • EXTERNAL only – i.e., industry best practices, CIS18, this is not for cIT internal references

  1. Link to process map.

Note: Please add KB relationships to core process, process. SOPs or other WIs on the right.