diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/role/RolePartyAddForm.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/role/RolePartyAddForm.java
new file mode 100755
index 000000000..05a6b0206
--- /dev/null
+++ b/ccm-cms/src/main/java/com/arsdigita/cms/ui/role/RolePartyAddForm.java
@@ -0,0 +1,139 @@
+/*
+ * Copyright (C) 2003-2004 Red Hat Inc. All Rights Reserved.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+package com.arsdigita.cms.ui.role;
+
+import com.arsdigita.bebop.FormData;
+import com.arsdigita.bebop.FormProcessException;
+import com.arsdigita.bebop.PageState;
+import com.arsdigita.bebop.SingleSelectionModel;
+import com.arsdigita.bebop.event.FormSectionEvent;
+import com.arsdigita.bebop.form.TextField;
+import com.arsdigita.cms.ui.FormSecurityListener;
+import com.arsdigita.cms.ui.PartyAddForm;
+import com.arsdigita.ui.admin.GlobalizationUtil;
+import com.arsdigita.util.Assert;
+import org.apache.log4j.Logger;
+import org.libreccm.cdi.utils.CdiUtil;
+import org.libreccm.security.*;
+import org.librecms.CmsConstants;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ *
+ * @author Yannick Bülter
+ * @author Michael Pih
+ * @author Uday Mathur
+ * @version $Id: RolePartyAddForm.java 287 2005-02-22 00:29:02Z sskracic $
+ */
+class RolePartyAddForm extends PartyAddForm {
+
+ private static Logger s_log = Logger.getLogger
+ (RolePartyAddForm.class);
+
+ private SingleSelectionModel m_roles;
+
+ private static final String NAME_FILTER =
+ "(upper(name) like ('%' || upper(:search) || '%'))" +
+ " or " +
+ "(upper(email) like ('%' || upper(:search) || '%'))";
+
+ public RolePartyAddForm(SingleSelectionModel roles, TextField search) {
+ super(search);
+
+ m_roles = roles;
+
+ getForm().addSubmissionListener
+ (new FormSecurityListener(CmsConstants.PRIVILEGE_ADMINISTER_ROLES));
+ }
+
+ /*
+ protected DataQuery makeQuery(PageState s) {
+ Assert.isTrue(m_roles.isSelected(s));
+
+ Session session = SessionManager.getSession();
+
+ // XXX: Figure out how to use role directly here
+ DataQuery dq =
+ session.retrieveQuery("com.arsdigita.cms.searchToAddMemberParties");
+
+ BigDecimal roleId = new BigDecimal((String) m_roles.getSelectedKey(s));
+ String searchQuery = (String) getSearchWidget().getValue(s);
+
+ makeFilter(dq, roleId, searchQuery);
+ dq.addOrder("isUser desc, upper(name), upper(email)");
+ return dq;
+ }*/
+
+ @Override
+ protected List makeQuery(PageState state) {
+ return null;
+ }
+
+ /**
+ * Filters out members of the current group and parties whose name or email
+ * address matches the search string.
+ */
+ /*
+ private void makeFilter(DataQuery dq, BigDecimal roleId, String search) {
+
+ dq.setParameter("excludedRoleId", roleId);
+
+ // Add the search filter if the search query is not null.
+ if (search != null) {
+
+ dq.clearFilter();
+ Filter filter = dq.addFilter(NAME_FILTER);
+ filter.set("search", search);
+ }
+ }*/
+
+ public void process(FormSectionEvent event) throws FormProcessException {
+ FormData data = event.getFormData();
+ PageState state = event.getPageState();
+ Assert.isTrue(m_roles.isSelected(state));
+
+ String[] parties = (String[]) data.get("parties");
+ s_log.debug("PARTIES = " + parties);
+ if (parties == null) {
+ throw new FormProcessException(GlobalizationUtil.globalize(
+ "cms.ui.role.no_party_selected"));
+ }
+
+ final Long roleId = new Long((String) m_roles.getSelectedKey(state));
+
+ final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
+ final RoleRepository roleRepository = cdiUtil.findBean(RoleRepository.class);
+ final PartyRepository partyRepository = cdiUtil.findBean(PartyRepository.class);
+ final RoleManager roleManager = cdiUtil.findBean(RoleManager.class);
+
+ final Role role = roleRepository.findById(roleId);
+
+ // Add each checked party to the role
+ Party party;
+ for ( int i = 0; i < parties.length; i++ ) {
+ if (s_log.isDebugEnabled()) {
+ s_log.debug("parties[" + i + "] = " + parties[i]);
+ }
+ party = partyRepository.findByName(parties[i]);
+ roleManager.assignRoleToParty(role, party);
+ }
+ }
+}