<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Assigning existing users to existing metadata groups in Developers</title>
    <link>https://communities.sas.com/t5/Developers/Assigning-existing-users-to-existing-metadata-groups/m-p/569878#M3517</link>
    <description>&lt;P&gt;Thank You.&lt;/P&gt;</description>
    <pubDate>Fri, 28 Jun 2019 15:50:49 GMT</pubDate>
    <dc:creator>ozg1969</dc:creator>
    <dc:date>2019-06-28T15:50:49Z</dc:date>
    <item>
      <title>Assigning existing users to existing metadata groups</title>
      <link>https://communities.sas.com/t5/Developers/Assigning-existing-users-to-existing-metadata-groups/m-p/78155#M3515</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;BR /&gt;This is more a metadata question than a stored process question. Am asking it here since there is no metadata forum and what I need to do is needed to support a number of stored processes.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have a number of metadata users already defined (about 800). And I have 5 groups that have been created (currently empty). I can get the list of users and groups using the mduextr macro. And I have the logic I need to assign each user to the group they belong to (each user belongs to 1 and only 1 group).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Before writing the code myself I thought that this is something that there would be a sample for. And I did find samples that will do this for users and groups that don't exist in the metadata (the importad.sas importpw.sas samples described in &lt;A href="http://support.sas.com/kb/40/628.html"&gt;http://support.sas.com/kb/40/628.html&lt;/A&gt;). And based on a quick look it does not appear that it can be easily reverse engineered.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Can anyone point me to a sample or example that will just load a set of UserXGroup combinations? If so, great. If not, I will try to write something myself and will post it here in case anyone else is interested.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TIA,&lt;/P&gt;&lt;P&gt;Don Henderson&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 14 Jul 2013 19:38:57 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Developers/Assigning-existing-users-to-existing-metadata-groups/m-p/78155#M3515</guid>
      <dc:creator>DonH</dc:creator>
      <dc:date>2013-07-14T19:38:57Z</dc:date>
    </item>
    <item>
      <title>Re: Assigning existing users to existing metadata groups</title>
      <link>https://communities.sas.com/t5/Developers/Assigning-existing-users-to-existing-metadata-groups/m-p/78156#M3516</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;After doing a little more research I found an example that reconciled the SAS metadata with an Active Directory structure. So I was able to modify it to do what I wanted. Basically the idea is to:&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;Extract the metadata to a library&lt;/LI&gt;&lt;LI&gt;Copy the metadata to a second library&lt;/LI&gt;&lt;LI&gt;Update the data in the second library to incorporate the desired changes (in my case, the new User X Group combinations)&lt;/LI&gt;&lt;LI&gt;Use the Compare macros to create the update rows&lt;/LI&gt;&lt;LI&gt;Apply the updates.&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;For anyone who is interested, sample code follows:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier; background: white; color: green; font-size: 10pt;"&gt;/* Sample program to add user X group combinations to the metadata based on business&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier; background: white; color: green; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp; logic to identify what existing users to add to what exiting groups.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier; background: white; color: green; font-size: 10pt;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier; background: white; color: green; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp; Based on the sample documented at:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier; background: white; color: green; font-size: 10pt;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier; background: white; color: green; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp; &lt;A href="http://support.sas.com/documentation/cdl/en/bisecag/63082/HTML/default/viewer.htm#p0z36im6qsfk3ln1advg12dn5lls.htm"&gt;http://support.sas.com/documentation/cdl/en/bisecag/63082/HTML/default/viewer.htm#p0z36im6qsfk3ln1advg12dn5lls.htm&lt;/A&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier; background: white; color: green; font-size: 10pt;"&gt;*/&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier; background: white; color: black; font-size: 10pt;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&lt;SPAN style="background: white; color: blue; font-size: 10pt;"&gt;options&lt;/SPAN&gt; &lt;SPAN style="background: white; color: blue; font-size: 10pt;"&gt;metaserver&lt;/SPAN&gt;&lt;SPAN style="background: white; color: black; font-size: 10pt;"&gt;=SERVER-NAME&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&lt;SPAN style="background: white; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="background: white; color: blue; font-size: 10pt;"&gt;metaport&lt;/SPAN&gt;=&lt;/SPAN&gt;&lt;STRONG style="color: teal; font-size: 10pt; background: white;"&gt;8561&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="background: white; color: blue; font-size: 10pt;"&gt;metauser&lt;/SPAN&gt;&lt;SPAN style="background: white; color: black; font-size: 10pt;"&gt;=&lt;/SPAN&gt;&lt;SPAN style="background: white; color: purple; font-size: 10pt;"&gt;"XXXXXXXXXXXX"&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="background: white; color: blue; font-size: 10pt;"&gt;metapass&lt;/SPAN&gt;&lt;SPAN style="background: white; color: black; font-size: 10pt;"&gt;=&lt;/SPAN&gt;&lt;SPAN style="background: white; color: purple; font-size: 10pt;"&gt;"XXXXXXXXXXXX"&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="background: white; color: blue; font-size: 10pt;"&gt;metaprotocol&lt;/SPAN&gt;&lt;SPAN style="background: white; color: black; font-size: 10pt;"&gt;=bridge&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="background: white; color: blue; font-size: 10pt;"&gt;metarepository&lt;/SPAN&gt;&lt;SPAN style="background: white; color: black; font-size: 10pt;"&gt;=foundation;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier; background: white; color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&lt;SPAN style="background: white; color: blue; font-size: 10pt;"&gt;libname&lt;/SPAN&gt;&lt;SPAN style="background: white; color: black; font-size: 10pt;"&gt; current &lt;/SPAN&gt;&lt;SPAN style="background: white; color: purple; font-size: 10pt;"&gt;'\temp'&lt;/SPAN&gt;&lt;SPAN style="background: white; color: black; font-size: 10pt;"&gt;;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="background: white; color: green; font-size: 10pt;"&gt;/* for the current metadata */&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&lt;SPAN style="background: white; color: blue; font-size: 10pt;"&gt;libname&lt;/SPAN&gt;&lt;SPAN style="background: white; color: black; font-size: 10pt;"&gt; addgrps &lt;/SPAN&gt;&lt;SPAN style="background: white; color: purple; font-size: 10pt;"&gt;'\temp2'&lt;/SPAN&gt;&lt;SPAN style="background: white; color: black; font-size: 10pt;"&gt;;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="background: white; color: green; font-size: 10pt;"&gt;/* current augmented with the changes */&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&lt;SPAN style="background: white; color: blue; font-size: 10pt;"&gt;libname&lt;/SPAN&gt;&lt;SPAN style="background: white; color: black; font-size: 10pt;"&gt; updates &lt;/SPAN&gt;&lt;SPAN style="background: white; color: purple; font-size: 10pt;"&gt;'\temp3'&lt;/SPAN&gt;&lt;SPAN style="background: white; color: black; font-size: 10pt;"&gt;;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="background: white; color: green; font-size: 10pt;"&gt;/* for the updates created by the mducmp macro */&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier; background: white; color: black; font-size: 10pt;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier; background: white; color: black; font-size: 10pt;"&gt;%&lt;STRONG&gt;&lt;EM&gt;mduextr&lt;/EM&gt;&lt;/STRONG&gt;(libref=current);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier; background: white; color: black; font-size: 10pt;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&lt;STRONG style="color: navy; font-size: 10pt; background: white;"&gt;proc&lt;/STRONG&gt; &lt;STRONG style="color: navy; font-size: 10pt; background: white;"&gt;copy&lt;/STRONG&gt; &lt;SPAN style="background: white; color: blue; font-size: 10pt;"&gt;in&lt;/SPAN&gt;&lt;SPAN style="background: white; color: black; font-size: 10pt;"&gt; = current &lt;/SPAN&gt;&lt;SPAN style="background: white; color: blue; font-size: 10pt;"&gt;out&lt;/SPAN&gt;&lt;SPAN style="background: white; color: black; font-size: 10pt;"&gt; = addgrps;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt; &lt;SPAN style="background: white; color: green; font-size: 10pt;"&gt;/* just copy the current data to the directory for the target */&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&lt;STRONG style="color: navy; font-size: 10pt; background: white;"&gt;run&lt;/STRONG&gt;&lt;SPAN style="background: white; color: black; font-size: 10pt;"&gt;;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier; background: white; color: black; font-size: 10pt;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&lt;STRONG style="color: navy; font-size: 10pt; background: white;"&gt;data&lt;/STRONG&gt;&lt;SPAN style="background: white; color: black; font-size: 10pt;"&gt; users;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt; &lt;SPAN style="background: white; color: green; font-size: 10pt;"&gt;/* sample data - I created a couple of users to test with */&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt; &lt;SPAN style="background: white; color: blue; font-size: 10pt;"&gt;set&lt;/SPAN&gt;&lt;SPAN style="background: white; color: black; font-size: 10pt;"&gt; current.person(keep=objid);&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt; &lt;SPAN style="background: white; color: blue; font-size: 10pt;"&gt;where&lt;/SPAN&gt;&lt;SPAN style="background: white; color: black; font-size: 10pt;"&gt; objid in (&lt;/SPAN&gt;&lt;SPAN style="background: white; color: purple; font-size: 10pt;"&gt;'A5X4WGB2.AN0000S5'&lt;/SPAN&gt; &lt;SPAN style="background: white; color: purple; font-size: 10pt;"&gt;'A5X4WGB2.AN0000S6'&lt;/SPAN&gt;&lt;SPAN style="background: white; color: black; font-size: 10pt;"&gt;);&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt; &lt;SPAN style="background: white; color: blue; font-size: 10pt;"&gt;rename&lt;/SPAN&gt;&lt;SPAN style="background: white; color: black; font-size: 10pt;"&gt; objid = memkeyid;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&lt;STRONG style="color: navy; font-size: 10pt; background: white;"&gt;run&lt;/STRONG&gt;&lt;SPAN style="background: white; color: black; font-size: 10pt;"&gt;;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier; background: white; color: black; font-size: 10pt;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&lt;STRONG style="color: navy; font-size: 10pt; background: white;"&gt;data&lt;/STRONG&gt;&lt;SPAN style="background: white; color: black; font-size: 10pt;"&gt; groups;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt; &lt;SPAN style="background: white; color: green; font-size: 10pt;"&gt;/* sample data - I created a couple of groups to test with */&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt; &lt;SPAN style="background: white; color: blue; font-size: 10pt;"&gt;set&lt;/SPAN&gt;&lt;SPAN style="background: white; color: black; font-size: 10pt;"&gt; current.group_info(keep=id);&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt; &lt;SPAN style="background: white; color: blue; font-size: 10pt;"&gt;where&lt;/SPAN&gt;&lt;SPAN style="background: white; color: black; font-size: 10pt;"&gt; id in (&lt;/SPAN&gt;&lt;SPAN style="background: white; color: purple; font-size: 10pt;"&gt;'A5X4WGB2.A30000S0'&lt;/SPAN&gt; &lt;SPAN style="background: white; color: purple; font-size: 10pt;"&gt;'A5X4WGB2.A30000S1'&lt;/SPAN&gt;&lt;SPAN style="background: white; color: black; font-size: 10pt;"&gt;);&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt; &lt;SPAN style="background: white; color: blue; font-size: 10pt;"&gt;rename&lt;/SPAN&gt;&lt;SPAN style="background: white; color: black; font-size: 10pt;"&gt; id = grpkeyid;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&lt;STRONG style="color: navy; font-size: 10pt; background: white;"&gt;run&lt;/STRONG&gt;&lt;SPAN style="background: white; color: black; font-size: 10pt;"&gt;;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier; background: white; color: black; font-size: 10pt;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&lt;STRONG style="color: navy; font-size: 10pt; background: white;"&gt;proc&lt;/STRONG&gt; &lt;STRONG style="color: navy; font-size: 10pt; background: white;"&gt;sql&lt;/STRONG&gt;&lt;SPAN style="background: white; color: black; font-size: 10pt;"&gt;;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt; &lt;SPAN style="background: white; color: green; font-size: 10pt;"&gt;/* create a cartesian product to add the two users to the two groups.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier; background: white; color: green; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; subsetting logic can be added to specify was users are to be added to what groups&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier; background: white; color: green; font-size: 10pt;"&gt; */&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt; &lt;SPAN style="background: white; color: blue; font-size: 10pt;"&gt;create&lt;/SPAN&gt; &lt;SPAN style="background: white; color: blue; font-size: 10pt;"&gt;table&lt;/SPAN&gt;&lt;SPAN style="background: white; color: black; font-size: 10pt;"&gt; grpmems &lt;/SPAN&gt;&lt;SPAN style="background: white; color: blue; font-size: 10pt;"&gt;as&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt; &lt;SPAN style="background: white; color: blue; font-size: 10pt;"&gt;select&lt;/SPAN&gt;&lt;SPAN style="background: white; color: black; font-size: 10pt;"&gt; * &lt;/SPAN&gt;&lt;SPAN style="background: white; color: blue; font-size: 10pt;"&gt;from&lt;/SPAN&gt;&lt;SPAN style="background: white; color: black; font-size: 10pt;"&gt; users, groups;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&lt;STRONG style="color: navy; font-size: 10pt; background: white;"&gt;quit&lt;/STRONG&gt;&lt;SPAN style="background: white; color: black; font-size: 10pt;"&gt;;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier; background: white; color: black; font-size: 10pt;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&lt;STRONG style="color: navy; font-size: 10pt; background: white;"&gt;proc&lt;/STRONG&gt; &lt;STRONG style="color: navy; font-size: 10pt; background: white;"&gt;append&lt;/STRONG&gt; &lt;SPAN style="background: white; color: blue; font-size: 10pt;"&gt;base&lt;/SPAN&gt;&lt;SPAN style="background: white; color: black; font-size: 10pt;"&gt; = addgrps.grpmems &lt;/SPAN&gt;&lt;SPAN style="background: white; color: blue; font-size: 10pt;"&gt;data&lt;/SPAN&gt;&lt;SPAN style="background: white; color: black; font-size: 10pt;"&gt; = grpmems;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt; &lt;SPAN style="background: white; color: green; font-size: 10pt;"&gt;/* augment the target data with the new user X group combinations */&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&lt;STRONG style="color: navy; font-size: 10pt; background: white;"&gt;run&lt;/STRONG&gt;&lt;SPAN style="background: white; color: black; font-size: 10pt;"&gt;;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier; background: white; color: black; font-size: 10pt;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier; background: white; color: green; font-size: 10pt;"&gt;/* use the mducmp macro to create the updates data - it should just be the new&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier; background: white; color: green; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp; user X group combinations&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier; background: white; color: green; font-size: 10pt;"&gt;*/&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier; background: white; color: black; font-size: 10pt;"&gt;%&lt;STRONG&gt;&lt;EM&gt;mducmp&lt;/EM&gt;&lt;/STRONG&gt;(master=addgrps, target=current, change=updates)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier; background: white; color: black; font-size: 10pt;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier; background: white; color: green; font-size: 10pt;"&gt;/* validate the change data sets */&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier; background: white; color: black; font-size: 10pt;"&gt;%&lt;STRONG&gt;&lt;EM&gt;mduchgv&lt;/EM&gt;&lt;/STRONG&gt;(change=updates, target=current, temp=work, errorsds=work.mduchgverrors)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier; background: white; color: black; font-size: 10pt;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier; background: white; color: green; font-size: 10pt;"&gt;/* apply the updates */&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier; background: white; color: black; font-size: 10pt;"&gt;%&lt;STRONG&gt;&lt;EM&gt;mduchglb&lt;/EM&gt;&lt;/STRONG&gt;(change=updates)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt; &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 14 Jul 2013 21:58:41 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Developers/Assigning-existing-users-to-existing-metadata-groups/m-p/78156#M3516</guid>
      <dc:creator>DonH</dc:creator>
      <dc:date>2013-07-14T21:58:41Z</dc:date>
    </item>
    <item>
      <title>Re: Assigning existing users to existing metadata groups</title>
      <link>https://communities.sas.com/t5/Developers/Assigning-existing-users-to-existing-metadata-groups/m-p/569878#M3517</link>
      <description>&lt;P&gt;Thank You.&lt;/P&gt;</description>
      <pubDate>Fri, 28 Jun 2019 15:50:49 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Developers/Assigning-existing-users-to-existing-metadata-groups/m-p/569878#M3517</guid>
      <dc:creator>ozg1969</dc:creator>
      <dc:date>2019-06-28T15:50:49Z</dc:date>
    </item>
    <item>
      <title>Re: Assigning existing users to existing metadata groups</title>
      <link>https://communities.sas.com/t5/Developers/Assigning-existing-users-to-existing-metadata-groups/m-p/570108#M3518</link>
      <description>&lt;P&gt;Another approach:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE&gt;/* load the MacroCore library */&lt;BR /&gt;filename mc url "https://raw.githubusercontent.com/sasjs/core/main/all.sas";
%inc mc;&lt;/CODE&gt;&lt;BR /&gt;&lt;BR /&gt;/* add a user to a group */&lt;BR /&gt;%mm_adduser2group(user=sasdemo, group=someGroup)&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Source:&amp;nbsp;&amp;nbsp;&lt;A href="https://github.com/sasjs/core/blob/main/meta/mm_adduser2group.sas" target="_blank" rel="noopener"&gt;https://github.com/sasjs/core/blob/main/meta/mm_adduser2group.sas&lt;/A&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 13 Oct 2021 20:04:31 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Developers/Assigning-existing-users-to-existing-metadata-groups/m-p/570108#M3518</guid>
      <dc:creator>AllanBowe</dc:creator>
      <dc:date>2021-10-13T20:04:31Z</dc:date>
    </item>
  </channel>
</rss>

