Confluence Filter setting permission in WebPreferences does not work?

I just recognized that the bold marking does not work when using block quotes (just search for ** in order to get the most important spots)

I’m using the xwiki confluence migration tool and didn’t succeed in importing groups and users which have confluence space permissions, so I “hard coded” this functionality - also I wasn’t sure if I could create permissions without the existing users - nevertheless in the end it seemed to work they way I did it - for my purpose…

I recognized that I didn’t post the confluence space permission-part (only the page restriction) - anyhow you could read it out of the attachments I’ve posted before - here the main parts

    /**
     * users & groups have to be created in order to assign them permissions
     *
     * @param spaceId confluence space id
     * @param spaceKey confluence space key
     * @param spacePermissions confluence space permissions
     * @param proxyFilter confluence filter
     * @throws FilterException filter error
     */
    private void createSpacePermissionsImportScript(long spaceId, String spaceKey, Collection<Long> spacePermissions, ConfluenceFilter proxyFilter) throws FilterException {
        // in order to use few objects, collect oll permissions on user, group base
        Map<String, List<String>> userPermissions = new HashMap<>();
        Map<String, List<String>> groupPermissions = new HashMap<>();
        for (Long spacePermissionId : spacePermissions) {
            ConfluenceProperties spacePermissionProperties;
            try {
                spacePermissionProperties = this.confluencePackage.getSpacePermissionProperties(spaceId, spacePermissionId);
            } catch (ConfigurationException e) {
                throw new FilterException("Failed to get spacepermission properties", e);
            }

            final String group = spacePermissionProperties.getString("group");
            final String permission = spacePermissionProperties.getString("type");
            final String xWikiPermission = convertConfluenceSpacepermission2xWikiPermission(permission);
            final String user = spacePermissionProperties.getString("userSubject");
            if (StringUtils.isEmpty(xWikiPermission))
                continue;

            if (StringUtils.isNoneEmpty(group)){
                addPermissionIfNotExists(groupPermissions, group, xWikiPermission);
            }
            else if (StringUtils.isNoneEmpty(user)) {

                final ConfluenceProperties userImplProperties;
                // look up ConfluenceUserImpl in order to get username aso
                try {
                    userImplProperties = this.confluencePackage.getUserImplProperties(user);
                }
                catch (ConfigurationException e) {
                    throw new FilterException("Failed to get UserImpl properties for user-key: "+ user, e);
                }
                String lowerName = userImplProperties.getString(ConfluenceXMLPackage.USERIMPL_LOWERNAME, "");
                if (this.properties.isConvertToXWiki()) {
                    if (lowerName.equals("admin")) {
                        lowerName = "Admin";
                    }
                }

                addPermissionIfNotExists(userPermissions, lowerName, xWikiPermission);
            }
        }

        String globalPermissionDocument = "WebPreferences"; //spaceKey + ".WebPreferences"; // eg. TESTARGESPACE02.WebPreferences
        **writeSpacePermissions(proxyFilter, groupPermissions, globalPermissionDocument, false);**
**        writeSpacePermissions(proxyFilter, userPermissions, globalPermissionDocument, true);**

/*        {{/velocity}}
        #set ($mydoc = $xwiki.getDocument("TESTARGESPACE02.WebPreferences"))
        #set ($RightsObjectAdmins = $mydoc.newObject("XWiki.XWikiGlobalRights"))
        ## #set ($result = $RightsObjectAdmins.set("groups", "XWiki.zbg_bedienstete"))
        #set ($result = $RightsObjectAdmins.set("levels", "view,comment,edit,delete"))
        #set ($result = $RightsObjectAdmins.set("users", "XWiki.baerthlein,XWiki.loc_hettegger_ib"))
        #set ($result = $RightsObjectAdmins.set("allow", 1))
        $mydoc.save()
        {{/velocity}}*/

/*        StringBuilder body = new StringBuilder();
        for (Map.Entry<String, List<String>> set : groupPermissions.entrySet()) {
            // always create a new Object so the existing (rights) Objects don't get overwritten
            body.append("#set ($RightsObjectAdmins = $mydoc.newObject(\"XWiki.XWikiGlobalRights\"))\n");
            body.append("#set ($result = $RightsObjectAdmins.set(\"groups\", \"XWiki."+set.getKey()+"\"))\n");
            String levels = String.join(",", set.getValue());
            body.append("#set ($result = $RightsObjectAdmins.set(\"levels\", \""+levels+"\"))\n");
            body.append("#set ($result = $RightsObjectAdmins.set(\"allow\", 1))\n");
            body.append("$mydoc.save()\n");
        }

        for (Map.Entry<String, List<String>> set : userPermissions.entrySet()) {
            // always create a new Object so the existing (rights) Objects don't get overwritten
            body.append("#set ($RightsObjectAdmins = $mydoc.newObject(\"XWiki.XWikiGlobalRights\"))\n");
            body.append("#set ($result = $RightsObjectAdmins.set(\"users\", \"XWiki."+set.getKey()+"\"))\n");
            String levels = String.join(",", set.getValue());
            body.append("#set ($result = $RightsObjectAdmins.set(\"levels\", \""+levels+"\"))\n");
            body.append("#set ($result = $RightsObjectAdmins.set(\"allow\", 1))\n");
            body.append("$mydoc.save()\n");
        }

        // todo: spaceKey == xWiki - Webhome / name ?
        StringBuilder header = new StringBuilder("{{velocity}}\n");
        header.append("#set ($mydoc = $xwiki.getDocument(\""+spaceKey+".WebPreferences\"))\n");
        StringBuilder footer = new StringBuilder("{{/velocity}}\n");
        String script = header.toString() + body.toString() + footer.toString();

        String filename = this.environment.getTemporaryDirectory().toPath() + "/spacepermission-script-"+spaceKey+".vm";
        FileOutputStream fileStream = null;
        try {
            fileStream = new FileOutputStream(filename);
            fileStream.write(script.getBytes());
            fileStream.flush();
            fileStream.close();
            this.logger.info("Created spacepermissions-script: " + filename);
        } catch (FileNotFoundException e) {
            logger.error("File not found error writing spacepermission-script: " + filename, e);
        } catch (IOException e) {
            logger.error("IO-error writing spacepermission-script: " + filename, e);
        }*/

    }

and the

    private static void writeSpacePermissions(ConfluenceFilter proxyFilter, Map<String, List<String>> groupPermissions, String globalPermissionDocument, boolean isUserCollection) throws FilterException {
        for (Map.Entry<String, List<String>> set : groupPermissions.entrySet()) {
            // Permission object
            FilterEventParameters objectProps = new FilterEventParameters();
            objectProps.put(WikiObjectFilter.PARAMETER_CLASS_REFERENCE, XWiki.SYSTEM_SPACE + ".XWikiGlobalRights");
            proxyFilter.beginWikiObject(globalPermissionDocument, objectProps);

            // permissions object property
            String levels = String.join(",", set.getValue());
            proxyFilter.onWikiObjectProperty("levels", levels, new FilterEventParameters());
            if (isUserCollection)
                proxyFilter.onWikiObjectProperty("users", set.getKey(), new FilterEventParameters());
            else
                proxyFilter.onWikiObjectProperty("groups", set.getKey(), new FilterEventParameters());
            proxyFilter.onWikiObjectProperty("allow", 1, new FilterEventParameters());

            // persist wiki object
            proxyFilter.endWikiObject(globalPermissionDocument, objectProps);
        }
    }

hope that makes it a little bit clearer?
regards, Stefan.