1. Have two paging grid components on your form. Name them as 'Available Companies' and 'Selected Companies'. 2. Create a process variable (which can hold multiple values and data type same as of primary key of company records) which stores the primary keys of selected records from 'Available Companies' grid. Name the variable as 'selectedCompanies' and this variable holds primary keys of selected companies from 'Available Companies' grid. Every time when you select new values from 'Available Companies', make sure that you append the primary keys of selected records to 'selectedCompanies' variable (Also ensure that 'selectedCompanies' variable has unique and non-null values). 3. Source of the 'Available Companies': If 'selectedCompanies' is empty, - Get all the companies records. If 'selectedCompanies' holds values - Get company records whose primary keys are NOT IN 'selectedCompanies' 4. Source of 'Selected Companies': If 'selectedCompanies' is empty, - Provide empty dataset to grid. If 'selectedCompanies' holds values - Get company records whose primary keys are IN 'selectedCompanies' If you want to achive the functionality on portal form, changes in the grid can be observed upon submitting the form. This can be done in either of the ways: - Clicking a button which is at bottom of the form. - If you don't like the above idea, by making use of javascript/ jquery, you can add a nice image (which indicates the movement or refreshing of data) below the 'Available Companies' grid and add a 'clickable' event to it and auto-submit the form - Step - 3 and Step - 4 should be done post submission of the form and the suggested place is 'Outputs' under 'Data' tab of user input task. If you want to achive the functionality on SAIL form, step 3 and step 4 goes into with() and saving the values to 'selectedCompanies' goes under the 'saveInto' attribute of 'Available Companies' grid component.