class DBService implements RolesProvider {

    boolean insertGroupMembers(ResourceContext ctx, ObjectStoreConnection con, List<GroupMember> groupMembers,
                               final String domainName, final String groupName, final String principal,
                               final String auditRef, final String caller) {

        boolean bDataChanged = false;
        for (GroupMember groupMember : groupMembers) {
            try {
                if (!con.insertGroupMember(domainName, groupName, groupMember, principal, auditRef)) {
                    LOG.error("unable to update group member {}", groupMember.getMemberName());
                    continue;
                }
            } catch (Exception ex) {
                LOG.error("unable to update member {} error: {}", groupMember.getMemberName(), ex.getMessage());
                continue;
            }

            // audit log the request

            StringBuilder auditDetails = new StringBuilder(ZMSConsts.STRING_BLDR_SIZE_DEFAULT);
            auditLogGroupMember(auditDetails, groupMember, true);
            auditLogRequest(ctx, domainName, auditRef, caller, ZMSConsts.HTTP_PUT, groupName,
                    auditDetails.toString());

            bDataChanged = true;
        }

        return bDataChanged;
    }

    public  DBService(ObjectStore store, AuditLogger auditLogger, ZMSConfig zmsConfig, AuditReferenceValidator auditReferenceValidator);

}