I modified the create users functions from the Clone portal sample to create users in our new stack from the old portal. The script seems good, works for a few users then starts hitting 500 errors all the others (600+).
Error:
java.lang.Exception: The server at 'https://mynewportal.com:7443/arcgis/sharing/rest/community/createUser' returned an error. Unable to signup user. ["Unable to add user."]
(Error Code: 500)
Anybody have any ideas what I might be doing wrong? I thought it was a certificate issue, but that looks ok.
Thanks for any input!
<SPAN class="keyword token">from</SPAN> arcgis<SPAN class="punctuation token">.</SPAN>gis <SPAN class="keyword token">import</SPAN> GIS
source_password <SPAN class="operator token">=</SPAN> <SPAN class="string token">'*'</SPAN>
target_password <SPAN class="operator token">=</SPAN> <SPAN class="string token">'*'</SPAN>
source <SPAN class="operator token">=</SPAN> GIS<SPAN class="punctuation token">(</SPAN><SPAN class="string token"><SPAN>"</SPAN><A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Fouroldportal.com%2Farcgis" target="_blank">https://ouroldportal.com/arcgis</A><SPAN>"</SPAN></SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"arcgisportaladmin"</SPAN><SPAN class="punctuation token">,</SPAN> source_password<SPAN class="punctuation token">)</SPAN>
target <SPAN class="operator token">=</SPAN> GIS<SPAN class="punctuation token">(</SPAN><SPAN class="string token"><SPAN>"</SPAN><A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Fournewportal.com%2Fportal" target="_blank">https://ournewportal.com/portal</A><SPAN>"</SPAN></SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"arcgisportaladmin"</SPAN><SPAN class="punctuation token">,</SPAN> target_password<SPAN class="punctuation token">)</SPAN>
target_admin_username <SPAN class="operator token">=</SPAN> <SPAN class="string token">'arcgisportaladmin'</SPAN>
source_users <SPAN class="operator token">=</SPAN> source<SPAN class="punctuation token">.</SPAN>users<SPAN class="punctuation token">.</SPAN>search<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'!esri_ & !arcgisportaladmin'</SPAN><SPAN class="punctuation token">,</SPAN> max_users<SPAN class="operator token">=</SPAN><SPAN class="number token">700</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">for</SPAN> user <SPAN class="keyword token">in</SPAN> source_users<SPAN class="punctuation token">:</SPAN>
<SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN>user<SPAN class="punctuation token">.</SPAN>username <SPAN class="operator token">+</SPAN> <SPAN class="string token">"\t:\t"</SPAN> <SPAN class="operator token">+</SPAN> str<SPAN class="punctuation token">(</SPAN>user<SPAN class="punctuation token">.</SPAN>role<SPAN class="punctuation token">)</SPAN><SPAN class="operator token">+</SPAN> <SPAN class="string token">"\t:\t"</SPAN> <SPAN class="operator token">+</SPAN> str<SPAN class="punctuation token">(</SPAN>user<SPAN class="punctuation token">.</SPAN>idpUsername<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">print</SPAN> <SPAN class="punctuation token">(</SPAN>len<SPAN class="punctuation token">(</SPAN>source_users<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># filter out system and initial administrator accounts</SPAN>
target_users <SPAN class="operator token">=</SPAN> target<SPAN class="punctuation token">.</SPAN>users<SPAN class="punctuation token">.</SPAN>search<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'!esri_ & !arcgisportaladmin & !system_publisher'</SPAN><SPAN class="punctuation token">,</SPAN> max_users<SPAN class="operator token">=</SPAN><SPAN class="number token">700</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">print</SPAN> <SPAN class="punctuation token">(</SPAN>target_users<SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">for</SPAN> source_user <SPAN class="keyword token">in</SPAN> source_users<SPAN class="punctuation token">:</SPAN>
<SPAN class="keyword token">try</SPAN><SPAN class="punctuation token">:</SPAN>
target_user <SPAN class="operator token">=</SPAN> target<SPAN class="punctuation token">.</SPAN>users<SPAN class="punctuation token">.</SPAN>get<SPAN class="punctuation token">(</SPAN>source_user<SPAN class="punctuation token">.</SPAN>username<SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">if</SPAN> target_user <SPAN class="keyword token">is</SPAN> <SPAN class="operator token">not</SPAN> None<SPAN class="punctuation token">:</SPAN>
<SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">'Deleting user: '</SPAN> <SPAN class="operator token">+</SPAN> target_user<SPAN class="punctuation token">.</SPAN>fullName<SPAN class="punctuation token">)</SPAN>
target_user<SPAN class="punctuation token">.</SPAN>reassign_to<SPAN class="punctuation token">(</SPAN>target_admin_username<SPAN class="punctuation token">)</SPAN>
target_user<SPAN class="punctuation token">.</SPAN>delete<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">except</SPAN><SPAN class="punctuation token">:</SPAN>
<SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">'User {} does not exist in Target Portal'</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>source_user<SPAN class="punctuation token">.</SPAN>username<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">def</SPAN> <SPAN class="token function">copy_user</SPAN><SPAN class="punctuation token">(</SPAN>target_portal<SPAN class="punctuation token">,</SPAN> source_user<SPAN class="punctuation token">,</SPAN> pw<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN>
<SPAN class="comment token"># See if the user has firstName and lastName properties</SPAN>
<SPAN class="keyword token">try</SPAN><SPAN class="punctuation token">:</SPAN>
first_name <SPAN class="operator token">=</SPAN> source_user<SPAN class="punctuation token">.</SPAN>firstName
last_name <SPAN class="operator token">=</SPAN> source_user<SPAN class="punctuation token">.</SPAN>lastName
<SPAN class="keyword token">except</SPAN><SPAN class="punctuation token">:</SPAN>
<SPAN class="comment token"># if not, split the fullName</SPAN>
full_name <SPAN class="operator token">=</SPAN> source_user<SPAN class="punctuation token">.</SPAN>fullName
first_name <SPAN class="operator token">=</SPAN> full_name<SPAN class="punctuation token">.</SPAN>split<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN>
<SPAN class="keyword token">try</SPAN><SPAN class="punctuation token">:</SPAN>
last_name <SPAN class="operator token">=</SPAN> full_name<SPAN class="punctuation token">.</SPAN>split<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">[</SPAN><SPAN class="number token">1</SPAN><SPAN class="punctuation token">]</SPAN>
<SPAN class="keyword token">except</SPAN><SPAN class="punctuation token">:</SPAN>
last_name <SPAN class="operator token">=</SPAN> <SPAN class="string token">'NoLastName'</SPAN>
source_level <SPAN class="operator token">=</SPAN> source_user<SPAN class="punctuation token">.</SPAN>level
<SPAN class="keyword token">if</SPAN> source_level <SPAN class="operator token">==</SPAN> str<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"1"</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN>
source_role <SPAN class="operator token">=</SPAN> <SPAN class="string token">'org_viewer'</SPAN>
<SPAN class="keyword token">if</SPAN> source_level <SPAN class="operator token">==</SPAN> str<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"2"</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN>
source_role <SPAN class="operator token">=</SPAN> <SPAN class="string token">'org_user'</SPAN>
<SPAN class="keyword token">if</SPAN> source_user<SPAN class="punctuation token">.</SPAN>provider <SPAN class="operator token">==</SPAN> <SPAN class="string token">'enterprise'</SPAN><SPAN class="punctuation token">:</SPAN>
source_password <SPAN class="operator token">=</SPAN> None
<SPAN class="keyword token">if</SPAN> source_user<SPAN class="punctuation token">.</SPAN>provider <SPAN class="operator token">==</SPAN> <SPAN class="string token">'arcgis'</SPAN><SPAN class="punctuation token">:</SPAN>
source_password <SPAN class="operator token">=</SPAN> pw
<SPAN class="keyword token">try</SPAN><SPAN class="punctuation token">:</SPAN>
<SPAN class="comment token"># create user</SPAN>
target_user <SPAN class="operator token">=</SPAN> target_portal<SPAN class="punctuation token">.</SPAN>users<SPAN class="punctuation token">.</SPAN>create<SPAN class="punctuation token">(</SPAN>username <SPAN class="operator token">=</SPAN> source_user<SPAN class="punctuation token">.</SPAN>email<SPAN class="punctuation token">,</SPAN>
firstname <SPAN class="operator token">=</SPAN> first_name<SPAN class="punctuation token">,</SPAN>
lastname <SPAN class="operator token">=</SPAN> last_name<SPAN class="punctuation token">,</SPAN>
email <SPAN class="operator token">=</SPAN> source_user<SPAN class="punctuation token">.</SPAN>email<SPAN class="punctuation token">,</SPAN>
role <SPAN class="operator token">=</SPAN>source_role<SPAN class="punctuation token">,</SPAN>
provider <SPAN class="operator token">=</SPAN>source_user<SPAN class="punctuation token">.</SPAN>provider<SPAN class="punctuation token">,</SPAN> level<SPAN class="operator token">=</SPAN>source_level<SPAN class="punctuation token">,</SPAN> password<SPAN class="operator token">=</SPAN>source_password<SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># update user properties</SPAN>
target_user<SPAN class="punctuation token">.</SPAN>update<SPAN class="punctuation token">(</SPAN>source_user<SPAN class="punctuation token">.</SPAN>access<SPAN class="punctuation token">,</SPAN> source_user<SPAN class="punctuation token">.</SPAN>preferredView<SPAN class="punctuation token">,</SPAN>
source_user<SPAN class="punctuation token">.</SPAN>description<SPAN class="punctuation token">,</SPAN> source_user<SPAN class="punctuation token">.</SPAN>tags<SPAN class="punctuation token">,</SPAN>
source_user<SPAN class="punctuation token">.</SPAN>get_thumbnail_link<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">,</SPAN>
culture<SPAN class="operator token">=</SPAN>source_user<SPAN class="punctuation token">.</SPAN>culture<SPAN class="punctuation token">,</SPAN> region<SPAN class="operator token">=</SPAN>source_user<SPAN class="punctuation token">.</SPAN>region<SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">return</SPAN> target_user
<SPAN class="keyword token">except</SPAN> Exception <SPAN class="keyword token">as</SPAN> Ex<SPAN class="punctuation token">:</SPAN>
<SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN>str<SPAN class="punctuation token">(</SPAN>Ex<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">"Unable to create user "</SPAN><SPAN class="operator token">+</SPAN> source_user<SPAN class="punctuation token">.</SPAN>username<SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">return</SPAN> None
<SPAN class="keyword token">for</SPAN> user <SPAN class="keyword token">in</SPAN> source_users<SPAN class="punctuation token">:</SPAN>
<SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">"Creating user: "</SPAN> <SPAN class="operator token">+</SPAN> user<SPAN class="punctuation token">.</SPAN>username<SPAN class="punctuation token">)</SPAN>
copy_user<SPAN class="punctuation token">(</SPAN>target<SPAN class="punctuation token">,</SPAN> user<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'TestPassword@123'</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="line-numbers-rows"><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN></SPAN>