Skip to main content
Your progress
0 of 5 complete0%
T1 / M1.4 / L3 OF 4 / Operator LEVEL / 10 min

Bulk add and remove with search

Outcome

By the end of this lesson, you will be able to add and remove group members in bulk using filtered search and move members between groups by removing and re-adding them.


PrerequisitesL1, L2
Time10 minutes

1. Concept

You do not have to open each resource on its own to put it in a group. The group page has one drawer where you search, filter, tick the resources you want and add them all with one click.

The drawer uses the account and type filters you met in M1.2 L3, plus status and region.

The Add Resources drawer

Open the group and click “Add Resource” (on an empty group, the button in the middle of the page reads “Link First Resource”). The Add Resources drawer opens:

Terminal window
ADD RESOURCES
─────────────────────────────────────────────────────────
[Search resources...]
[All Cloud Accounts ▾] [All Statuses ▾] [All Types ▾] [All Regions ▾]
─────────────────────────────────────────────────────────
2 Resources Selected See all Clear all
[x] dev-eu-api-1 (ec2) eu-west-1
[x] dev-eu-rds-1 (rds) eu-west-1
[ ] dev-eu-cache-1 (elasticache) eu-west-1
[-] dev-eu-worker-1 (ec2) [all-dev] eu-west-1 (greyed out)
...
[Add 2 Resources] [Cancel]

What the drawer shows you:

  • Search matches a resource’s name, UID or tag values. There is no separate tag filter: to find resources tagged env=dev, type dev in the search box.
  • Four filters: cloud account, status, type and region. There are no schedule or group filters.
  • Only schedulable resources are listed. Resources ZopNight cannot start or stop never appear here.
  • Resources already in this group are left out of the list.
  • Resources in another group still appear, but greyed out with that group’s name next to them. Hover the group name beside it for the reason: “A resource can only belong to one group.” You cannot tick them.
  • Resources with their own schedule are not hidden. The drawer cannot add them: detach their own schedule first, as explained below.

There is no “Select all”. Tick each resource you want; the bar above the list counts your picks, and the button at the bottom reads “Add N Resources”. It only appears once you have ticked at least one. The list loads more rows as you scroll down.

Adding a resource that is already grouped

The drawer will not let you tick a resource that is already in another group. If you try it another way, such as through MCP, ZopNight rejects the add:

Terminal window
Add member failed: resource already belongs to a group

There is no move action. To move a resource, remove it from its current group, then add it to the new one. Two steps, both deliberate.

A resource that has its own schedule attachment or an active override needs extra care. ZopNight checks for this and holds the add back with this message:

Terminal window
"Resource "prod-eu-ec2-1" has an active schedule "dev-hours".
Adding it to this group will remove the existing schedule and
override. Do you want to proceed?"

The Add Resources drawer does not show this message today: the add fails quietly and the row stays ticked. Detach the resource’s own schedule first, then add it. A group member takes its schedule from the group, never from a direct attachment.

Moving many members between groups

For a reorg (e.g., splitting a 40-member “all-dev” group into “dev-platform” + “dev-services”), move members in two passes:

Terminal window
SOURCE GROUP: all-dev (40 members)
TARGET GROUP: dev-platform (currently 0 members)
1. In all-dev's member list, filter by name or ID (e.g., "platform").
Tick the checkbox in the table header to select the 12 matches.
Click "Remove 12" and confirm.
2. Open dev-platform → "Add Resource". Search "platform". The 12
are now in no group, so they are no longer greyed out.
Tick each of the 12 → "Add 12 Resources."

Between the two passes those 12 resources belong to no group, so no group schedule acts on them. Do both passes back to back, ideally outside the schedule’s start or stop times.

The member list has a select-all checkbox; the Add Resources drawer does not. Removing many members is one click, but adding them back means ticking each row, so plan big reorgs with that in mind.

Remove members

Removing works from the group’s member list:

Terminal window
1. Open the group's member list
2. Filter by name or ID (optional) to narrow
3. Tick the members, or tick the header checkbox to select
every member shown
4. Click "Remove N"
5. Confirm
6. Resources are no longer in the group. They are NOT deleted from
the cloud: only the group membership is removed.

To remove a single member, you can also click the remove icon at the end of its row.

After removal, the resources are “unattached”: eligible for adding to another group or for per-resource attachment.

Search-across

The drawer’s search box searches your whole estate, not just one account or region. Typing “prod-eu” finds every resource with “prod-eu” in its name, UID or tag values, in any account or region. Resources already in this group stay hidden, and resources in other groups show up greyed out.

This is useful when the team knows the naming convention but doesn’t remember exactly which account or region a resource lives in.

Membership versioning

The group membership table is versioned implicitly: every add and every remove writes an audit-log entry with timestamp, actor, and reason (optional). A team can ask “when was prod-eu-rds-3 added to this group?” and find the answer in the audit log (covered in M1.6 L6: Audit logs).

This matters for compliance audits and for debugging “why is this resource being scheduled?” investigations.

Performance at scale

A bulk add sends one add request per selected resource, all in parallel, straight from the page. There is no worker pool or progress panel for membership changes.

If a member-add fails for a specific resource (e.g., the resource was deleted from the cloud between filter and add), the rest still go through. The failed entries stay selected so you can retry them.


2. Demo

A team splitting an “all-non-prod” mega-group into four smaller groups:

Terminal window
STATE: One group "all-non-prod" with 60 members, named like
dev-platform-api-1, staging-services-db-2, and so on.
GOAL: Split into dev-platform, staging-platform, dev-services, staging-services.
T+0 Create four new empty groups (L2 mechanics).
T+5 min Open "all-non-prod" member list.
T+5 min Filter members by name: dev-platform.
Result: 14 resources. Tick the header checkbox → "Remove 14"
→ confirm.
T+6 min Open "dev-platform" → "Add Resource". Search: dev-platform.
Tick each of the 14 → "Add 14 Resources."
T+8 min Same two passes for staging-platform: 11 resources
→ "staging-platform."
T+10 min Same for dev-services: 13 resources → "dev-services."
T+12 min Same for staging-services: 9 resources → "staging-services."
T+14 min Old group "all-non-prod" now has 60 - 14 - 11 - 13 - 9 = 13
unmatched resources. These are stragglers (oddly named or unique).
Review and either rename and move, or leave in a residual group.
T+15 min Reorganization complete. Four groups populated, one residual.

Fifteen minutes for a meaningful reorg of a 60-resource group. A consistent naming convention does the heavy lifting: one search term finds each set.


3. Hands-on (7 min)

Populate the group you created in L2:

Terminal window
1. Open the group → click "Add Resource" (or "Link First Resource"
if the group is empty).
2. Narrow the list to the resources you want:
- Search: type a tag value such as dev (or a name you use)
- All Cloud Accounts: pick the right account
- All Types: pick the categories
3. Check the list. Greyed-out rows are already in another group.
4. Tick each resource you want (3-5 is plenty for practice)
→ "Add N Resources."
5. Verify on the group's member list that the resources are now in.
If your list is too narrow or too broad: change the search or the
filters and look again. The filters are the design tool; the add
button is the commit.
THEN: practice removing a member.
- Tick one member, click "Remove 1" (or the remove icon on its row).
- Confirm.
- The resource is now eligible for re-adding (or for a different group).

4. Knowledge check

Q1

A user tries to add a resource to group B. The resource is already in group A. The expected behavior:

A. The resource gets added to both of those groups
B. The add is rejected; remove it from A, then add it to B
C. ZopNight offers to move it from A to B in one step
D. The resource is silently moved from group A to B

Show answer

Correct: B. Exclusive membership is enforced: the add fails with “resource already belongs to a group”. There is no move action, so moving a resource between groups is always a remove followed by an add.

Q2

In the Add Resources drawer, one row is greyed out with another group’s name next to it, and you cannot tick it. Why?

A. It already belongs to that group, and a resource can be in only one group
B. It is stopped, and only running resources can be added to a group
C. It is attached directly to a schedule of its own
D. You do not have permission to change that particular resource

Show answer

Correct: A. A resource can belong to only one group, so the drawer shows grouped resources greyed out with their group’s name instead of letting the add fail. To move it here, remove it from that group first. Stopped resources and resources on their own schedule can still be ticked.

Q3

A team removes 50 resources from a group. What happens to the 50 resources in their cloud accounts?

A. They are deleted
B. Nothing: remove-from-group is metadata only
C. They are stopped
D. They have all been tagged differently now

Show answer

Correct: B. Group membership is metadata, so removing a member is a label change, not a state change. The resources still exist in the cloud and in ZopNight, and can now join another group or take a per-resource attachment.


5. Apply

Bulk membership operations:

  • Group detail page → Add Resource: search, filter, tick each resource, “Add N Resources”
  • Member list: filter by name or ID, select all or pick members, “Remove N”
  • Audit Log: every add and remove is recorded with timestamp and actor

For sequenced execution (the cascade order within a group when schedules fire), continue to L4.



Start with the bill.

Foundations takes about five hours. The first lesson is nine minutes.

Free curriculum. No paywall. One free account opens 290 lessons across 7 courses, plus an optional 24-lesson beginner course, and three publicly verifiable credentials. Read it on the train, take the exam on a Saturday, list the credential on your résumé Monday.

5h median time to finish Foundations
free account, every course, no paywall
3 certifications, each with a public verifier
Multi-cloud automation· Production-ready in 30 min· SOC 2 · ISO 27001· 20–60% off the bill, first month· 4 platforms · 1 console· Multi-cloud automation· Production-ready in 30 min· SOC 2 · ISO 27001· 20–60% off the bill, first month· 4 platforms · 1 console·