@bhoyars_1 If workitems are directly assign to James, then you need to use rules to get it done. If it is actually assigned to workgroup, just remove James from the wG and add John.. it should automatically remove it from James queue.
sample rule in case it is assigned to identities:
WorkItem wi = context.getObjectById(WorkItem.class,"workitemid");
wi.setOwner(context.getObjectByName(Identity.class, "John"));
context.saveObject(wi);
context.commitTransaction();
Have this code snippet running inside a iterator/loop to cover all your inscoped workitems.
You can create a Rule Runner Task.
Add the logic to filter all the workitems of a specific owner and then assign the new owner for each of those workitems.