AJGibson76
(Andrew Gibson)
July 22, 2025, 4:54pm
1
Which IIQ version are you inquiring about?
8.3
I’m trying to get all the workgroups by owner, but the results always come back empty. I’m doing this:
Identity id = ...
QueryOptions qo = new QueryOptions();
//qo.setCloneResults(true);
qo.addFilter(Filter.eq("owner.name", id.getName()));
Iterator workgroups = context.search(Identity.class, qo);
for (Identity workgroup : workgroups)
{
if (workgroup.isWorkgroup())
{
//do stuff
context.saveObject(workgroup);
}
}
context.commitTransaction();
My logging indicates that the workgroups iterator has nothing. Is my query correct?
asharma65
(Ashish Sharma)
July 22, 2025, 5:03pm
2
Hello @AJGibson76
Try to use below approach by query all workgroups, then filter in code:-
QueryOptions qo = new QueryOptions();
qo.addFilter(Filter.eq("workgroup", true));
Iterator<Identity> workgroups = context.search(Identity.class, qo);
while (workgroups.hasNext()) {
Identity workgroup = workgroups.next();
List owners = workgroup.getMulti("workgroupOwner");
if (owners != null && owners.contains(id)) {
// Found a workgroup owned by the identity
//do stuff
}
}
dheerajk27
(dheeraj kumar)
July 22, 2025, 5:38pm
3
[quote=“Andrew Gibson, post:1, topic:158868, username:AJGibson76”]
Identity id = ...
QueryOptions qo = new QueryOptions();
//qo.setCloneResults(true);
qo.addFilter(Filter.eq("owner.name", id.getName()));
Iterator workgroups = context.search(Identity.class, qo);
for (Identity workgroup : workgroups)
{
if (workgroup.isWorkgroup())
{
//do stuff
context.saveObject(workgroup);
}
}
context.commitTransaction();
[/quote]use below:
QueryOptions qo = new QueryOptions();
//qo.setCloneResults(true);
qo.addFilter(Filter.eqFilter.eq("workgroup", true),Filter.eq("owner", id));
Iterator workgroups = context.search(Identity.class, qo);
while(workgroups.hasNext()){
Identity identity=workgroups.next()
if(null==identity){ continue; }
//Do your stuff
}
AJGibson76
(Andrew Gibson)
July 22, 2025, 5:49pm
4
There is no ‘getMulti’ method on Identity?
Yes. No direct method on identity
asharma65
(Ashish Sharma)
July 23, 2025, 6:45am
6
Try this line
List owners = (List) workgroup.get("workgroupOwner");
Instead of using below
List owners = workgroup.getMulti("workgroupOwner");
Hi @AJGibson76 ,
Identity objects do not have an owner, whereas Workgroup objects do. To retrieve all Workgroups by a specific owner, apply the filter ‘workgroup is true’ and include the ‘owner.name’ parameter.
You can verify the owner of a Workgroup by opening the Workgroup object from the Debug page and checking the ‘owner’ tag.
The following logic returns all Workgroups where ‘spadmin’ is the owner. If no results are returned, it means the specified owner does not own any Workgroup.
Identity id = context.getObjectByName(Identity.class,"spadmin");
QueryOptions qo = new QueryOptions();
qo.addFilter(Filter.eq("workgroup", true));
qo.addFilter(Filter.eq("owner.name", id.getName()));
Iterator workgroups = context.search(Identity.class, qo);
while (workgroups.hasNext()) {
Identity workgroup = workgroups.next();
// add the logic
}
AJGibson76
(Andrew Gibson)
July 24, 2025, 7:52pm
8
My final approach was very similar:
QueryOptions qo = new QueryOptions();
//qo.setCloneResults(true);
Filter eq1 = Filter.eq("workgroup", true);
Filter eq2 = Filter.eq("owner", id);
qo.addFilter(Filter.and(eq1, eq2));
Iterator<Identity> workgroups = context.search(Identity.class, qo);
system
(system)
Closed
September 22, 2025, 7:53pm
9
This topic was automatically closed 60 days after the last reply. New replies are no longer allowed.