<?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: Delete Unused Domains in Python Questions</title>
    <link>https://community.esri.com/t5/python-questions/delete-unused-domains/m-p/145502#M11342</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Oh yes, you can definitely delete with existing locks, however, deleting the unused domains is just one of the ways I'm trying to declutter our production environment. We're conducting an audit of all the items in the GDB. Deleting unused or archived feature classes/datasets/tables. Then I will deploy your script to remove the domains. My initial plan was to write a script that lists all of the unused domains and then go in manually and delete them myself, but this will save me hours of work! You're a life saver!&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 14 Aug 2015 15:51:55 GMT</pubDate>
    <dc:creator>RuchiraWelikala</dc:creator>
    <dc:date>2015-08-14T15:51:55Z</dc:date>
    <item>
      <title>Delete Unused Domains</title>
      <link>https://community.esri.com/t5/python-questions/delete-unused-domains/m-p/145494#M11334</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I created this script to help with some geodatabase house cleaning tasks. Maybe someone else will find it useful or have an idea to improve it.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;import arcpy
import os

# Set workspace
myGDB = r"C:\temp\working.gdb"

# Get domains that are assigned to a field
domains_used = []
for dirpath, dirnames, filenames in arcpy.da.Walk(myGDB, datatype=["FeatureClass", "Table"]):
&amp;nbsp;&amp;nbsp;&amp;nbsp; for filename in filenames:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Checking {}".format(os.path.join(dirpath, filename))
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ## Check for normal field domains
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for field in arcpy.ListFields(os.path.join(dirpath, filename)):
&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; if field.domain:
&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; domains_used.append(field.domain)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ## Check for domains used in a subtype field
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; subtypes = arcpy.da.ListSubtypes(os.path.join(dirpath, filename))
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for stcode, stdict in subtypes.iteritems():
&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; if stdict["SubtypeField"] != u'':
&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; for field, fieldvals in stdict["FieldValues"].iteritems():
&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; if not fieldvals[1] is None:
&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; domains_used.append(fieldvals[1].name)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; except Exception, err:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Error:", err

# Get domains that exist in the geodatabase
domains_existing = [dom.name for dom in arcpy.da.ListDomains(myGDB)]

# Find existing domains that are not assigned to a field
domains_unused = set(domains_existing) ^ set(domains_used)
print "{} unused domains in {}".format(len(domains_unused), myGDB)
for domain in domains_unused:
&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.DeleteDomain_management(myGDB, domain)
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "{} deleted".format(domain)&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="https://community.esri.com/group/1519" target="_blank"&gt;python snippets&lt;/A&gt;​&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 07:57:07 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/delete-unused-domains/m-p/145494#M11334</guid>
      <dc:creator>BlakeTerhune</dc:creator>
      <dc:date>2021-12-11T07:57:07Z</dc:date>
    </item>
    <item>
      <title>Re: Delete Unused Domains</title>
      <link>https://community.esri.com/t5/python-questions/delete-unused-domains/m-p/145495#M11335</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Blake,&lt;/P&gt;&lt;P&gt;Thanks for the great script. A colleague recommended it to perform some long awaited maintenance on our SDE instances and this will be very handy.&lt;/P&gt;&lt;P&gt;While running it, however, the script through the following exception:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;&lt;EM&gt;&lt;STRONG&gt;Traceback (most recent call last):&lt;/STRONG&gt;&lt;/EM&gt;
&lt;EM&gt;&lt;STRONG&gt;&amp;nbsp; File "P:\Scratch Workspace\CleanUnusedDomains.py", line 34, in &amp;lt;module&amp;gt;&lt;/STRONG&gt;&lt;/EM&gt;
&lt;EM&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.DeleteDomain_management(myGDB, domain)&lt;/STRONG&gt;&lt;/EM&gt;
&lt;EM&gt;&lt;STRONG&gt;&amp;nbsp; File "C:\Program Files (x86)\ArcGIS\Desktop10.1\arcpy\arcpy\management.py", line 1357, in DeleteDomain&lt;/STRONG&gt;&lt;/EM&gt;
&lt;EM&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; raise e&lt;/STRONG&gt;&lt;/EM&gt;
&lt;EM&gt;&lt;STRONG&gt;ExecuteError: ERROR 999999: Error executing function.&lt;/STRONG&gt;&lt;/EM&gt;
&lt;EM&gt;&lt;STRONG&gt;Must be the owner to perform this operation.&lt;/STRONG&gt;&lt;/EM&gt;
&lt;EM&gt;&lt;STRONG&gt;Failed to execute (DeleteDomain).&lt;/STRONG&gt;&lt;/EM&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Is there a way to execute this code when the connection being used isn't the owner? Perhaps a way to skip over the domains that don't belong to the current owner.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks again,&lt;/P&gt;&lt;P&gt;Ruch&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 07:57:10 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/delete-unused-domains/m-p/145495#M11335</guid>
      <dc:creator>RuchiraWelikala</dc:creator>
      <dc:date>2021-12-11T07:57:10Z</dc:date>
    </item>
    <item>
      <title>Re: Delete Unused Domains</title>
      <link>https://community.esri.com/t5/python-questions/delete-unused-domains/m-p/145496#M11336</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;That's a great point, &lt;A href="https://community.esri.com/migrated-users/8334" target="_blank"&gt;Ruchira Welikala&lt;/A&gt;​. I had only tested this with a file geodatabase, but the issue you are describing is absolutely correct with SDE; you need to be the owner. Conveniently, I've also been working on an &lt;A _jive_internal="true" href="https://community.esri.com/message/537888#537888" target="_blank"&gt;SDE maintenance script&lt;/A&gt; that will reconcile versions, compress, rebuild indexes, and analyze datasets (&lt;A href="http://resources.arcgis.com/en/help/main/10.2/003n/003n000000v7000000.htm" rel="nofollow noopener noreferrer" target="_blank"&gt;source inspiration&lt;/A&gt;). For those last two tools, you need to run them as the data owner. My solution (for SDE in Oracle 11g):&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;Get all the distinct owner names from the domain objects&lt;/LI&gt;&lt;LI&gt;For each owner, create a &lt;A _jive_internal="true" href="https://community.esri.com/groups/geodatabase/blog/2015/07/17/how-to-create-enterprise-gdb-admin-python-scripts-that-accept-connection-parameters-similar-to-the-sde-command-line" target="_blank"&gt;temporary sde connection file&lt;/A&gt;​.&lt;/LI&gt;&lt;LI&gt;Then use that temporary connection file to run whatever task you need (delete domain in this case).&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Here is my final code that will remove unused domains from both local and remote (SDE) geodatabases. &lt;STRONG&gt;You will need to figure out a way to generate the password if it is different for each owner.&lt;/STRONG&gt; Please test it out and let me know how it works for you.&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;import arcpy
from contextlib import contextmanager
import os
import shutil
import tempfile

def main():
&amp;nbsp;&amp;nbsp;&amp;nbsp; try:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # Connection path to geodatabse (as administrator if SDE)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; myGDB = r"C:\GISConnections\SDE@GTEST.sde"

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # Get domains that are assigned to a field
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; domainsUsed_names = []
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for dirpath, dirnames, filenames in arcpy.da.Walk(myGDB, datatype=["FeatureClass", "Table"]):
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for filename in filenames:
&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; print "Checking {}".format(os.path.join(dirpath, filename))
&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; ## Check for normal field domains
&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; for field in arcpy.ListFields(os.path.join(dirpath, filename)):
&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; if field.domain:
&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; domainsUsed_names.append(field.domain)
&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; ## Check for domains used in a subtype field
&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; subtypes = arcpy.da.ListSubtypes(os.path.join(dirpath, filename))
&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; for stcode, stdict in subtypes.iteritems():
&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; if stdict["SubtypeField"] != u'':
&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; for field, fieldvals in stdict["FieldValues"].iteritems():
&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; if not fieldvals[1] is None:
&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; domainsUsed_names.append(fieldvals[1].name)
&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; ## end for subtypes
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ## end for filenames
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ## end for geodatabase Walk

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # List of all existing domains (as domain objects)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; domainsExisting = arcpy.da.ListDomains(myGDB)

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # Find existing domain names that are not in use (using set difference)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; domainsUnused_names = (
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set([dom.name for dom in domainsExisting]) - set(domainsUsed_names)
&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; # Get domain objects for unused domain names
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; domainsUnused = [
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dom for dom in domainsExisting
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if dom.name in domainsUnused_names
&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; print "{} unused domains in {}".format(len(domainsUnused), myGDB)

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # Cleanup
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; del domainsExisting
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; del domainsUnused_names

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # Delete unused domains by owner
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ## For local geodatabses, owner is an empty string ('')
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; with makeTempDir() as temp_dir:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; descGDB = arcpy.Describe(myGDB)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for owner in set([dom.owner for dom in domainsUnused]):
&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; if descGDB.workspaceType == "RemoteDatabase":
&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; ## Use temporary SDE connection as owner
&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; myGDB = arcpy.CreateDatabaseConnection_management(
&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; temp_dir,&amp;nbsp; ## out_folder_path
&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; owner+".sde",&amp;nbsp; ## out_name
&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; "ORACLE",&amp;nbsp; ## database_platform
&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; "GISTEST.WORLD",&amp;nbsp; ## instance
&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; "DATABASE_AUTH",&amp;nbsp; ## account_authentication
&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; owner,&amp;nbsp; ## username
&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; "myuserpass",&amp;nbsp; ## password
&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print arcpy.GetMessages()
&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; ## Format result object as string for path to connection file
&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; myGDB = str(myGDB)
&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; # Get unused domains for current owner
&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; domainsUnused_currentOwner = [
&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; dom.name for dom in domainsUnused
&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; if dom.owner == owner
&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; for domain in domainsUnused_currentOwner:
&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; arcpy.DeleteDomain_management(myGDB, domain)
&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; print "\t{} deleted".format(domain)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ## end for domainsExisting_owners
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ## end with temp_dir

&amp;nbsp;&amp;nbsp;&amp;nbsp; finally:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # Cleanup
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.ClearWorkspaceCache_management()


@contextmanager
def makeTempDir():
&amp;nbsp;&amp;nbsp;&amp;nbsp; """Creates a temporary folder and returns the full path name.
&amp;nbsp;&amp;nbsp;&amp;nbsp; Use in with statement to delete the folder and all contents on exit.
&amp;nbsp;&amp;nbsp;&amp;nbsp; Requires contextlib contextmanager, shutil, and tempfile modules.
&amp;nbsp;&amp;nbsp;&amp;nbsp; """
&amp;nbsp;&amp;nbsp;&amp;nbsp; temp_dir = tempfile.mkdtemp()
&amp;nbsp;&amp;nbsp;&amp;nbsp; try:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; yield temp_dir
&amp;nbsp;&amp;nbsp;&amp;nbsp; finally:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; shutil.rmtree(temp_dir)


if __name__ == '__main__':
&amp;nbsp;&amp;nbsp;&amp;nbsp; main()&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 07:57:12 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/delete-unused-domains/m-p/145496#M11336</guid>
      <dc:creator>BlakeTerhune</dc:creator>
      <dc:date>2021-12-11T07:57:12Z</dc:date>
    </item>
    <item>
      <title>Re: Delete Unused Domains</title>
      <link>https://community.esri.com/t5/python-questions/delete-unused-domains/m-p/145497#M11337</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Wow, this is great stuff! Thanks, Blake. I will try out your script as well as your SDE maintenance scripts. The main problem with our SDE environment is that we have one production instance for both edits and map services. Hence, hundreds of locks that can't be broken to perform compressions and index rebuilds. I'm in the process of creating a dB replication workflow that'll likely remove some of the load off the instance and free up the database to allow for regular maintenance. Part of that is removing dozens of unused domains. Thanks again and I'll keep you posted. Cheers, Ruch&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 14 Aug 2015 13:38:54 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/delete-unused-domains/m-p/145497#M11337</guid>
      <dc:creator>RuchiraWelikala</dc:creator>
      <dc:date>2015-08-14T13:38:54Z</dc:date>
    </item>
    <item>
      <title>Re: Delete Unused Domains</title>
      <link>https://community.esri.com/t5/python-questions/delete-unused-domains/m-p/145498#M11338</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks for sharing!&amp;nbsp; I've had this script on my "to-do" list for longer than I can recall. May I suggest putting it up on GitHub for others to download and perhaps contribute?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks again,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Leon&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 14 Aug 2015 15:02:16 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/delete-unused-domains/m-p/145498#M11338</guid>
      <dc:creator>LeonS</dc:creator>
      <dc:date>2015-08-14T15:02:16Z</dc:date>
    </item>
    <item>
      <title>Re: Delete Unused Domains</title>
      <link>https://community.esri.com/t5/python-questions/delete-unused-domains/m-p/145499#M11339</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I've never tried using GitHub, but you're welcome to spread the love there if you like. Be sure to post a link if you do! &lt;IMG src="https://community.esri.com/legacyfs/online/emoticons/happy.png" /&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 14 Aug 2015 15:11:37 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/delete-unused-domains/m-p/145499#M11339</guid>
      <dc:creator>BlakeTerhune</dc:creator>
      <dc:date>2015-08-14T15:11:37Z</dc:date>
    </item>
    <item>
      <title>Re: Delete Unused Domains</title>
      <link>https://community.esri.com/t5/python-questions/delete-unused-domains/m-p/145500#M11340</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I think you can still delete unused domains regardless of the geodatabase locks that may exist. Worth a shot.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 14 Aug 2015 15:13:06 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/delete-unused-domains/m-p/145500#M11340</guid>
      <dc:creator>BlakeTerhune</dc:creator>
      <dc:date>2015-08-14T15:13:06Z</dc:date>
    </item>
    <item>
      <title>Re: Delete Unused Domains</title>
      <link>https://community.esri.com/t5/python-questions/delete-unused-domains/m-p/145501#M11341</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;This is great.&amp;nbsp; But I have a problem deleting Domains in SDE where I'm not the owner.&amp;nbsp; The owner is long gone and I can't delete domains even tough I'm sa on the SQL instance!&amp;nbsp;&amp;nbsp;&amp;nbsp; Anyone run into this on SDE?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 14 Aug 2015 15:48:43 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/delete-unused-domains/m-p/145501#M11341</guid>
      <dc:creator>RandyKreuziger</dc:creator>
      <dc:date>2015-08-14T15:48:43Z</dc:date>
    </item>
    <item>
      <title>Re: Delete Unused Domains</title>
      <link>https://community.esri.com/t5/python-questions/delete-unused-domains/m-p/145502#M11342</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Oh yes, you can definitely delete with existing locks, however, deleting the unused domains is just one of the ways I'm trying to declutter our production environment. We're conducting an audit of all the items in the GDB. Deleting unused or archived feature classes/datasets/tables. Then I will deploy your script to remove the domains. My initial plan was to write a script that lists all of the unused domains and then go in manually and delete them myself, but this will save me hours of work! You're a life saver!&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 14 Aug 2015 15:51:55 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/delete-unused-domains/m-p/145502#M11342</guid>
      <dc:creator>RuchiraWelikala</dc:creator>
      <dc:date>2015-08-14T15:51:55Z</dc:date>
    </item>
    <item>
      <title>Re: Delete Unused Domains</title>
      <link>https://community.esri.com/t5/python-questions/delete-unused-domains/m-p/145503#M11343</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;When you say the owner is long gone, do you mean the user account was deleted?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 14 Aug 2015 19:32:27 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/delete-unused-domains/m-p/145503#M11343</guid>
      <dc:creator>BlakeTerhune</dc:creator>
      <dc:date>2015-08-14T19:32:27Z</dc:date>
    </item>
    <item>
      <title>Re: Delete Unused Domains</title>
      <link>https://community.esri.com/t5/python-questions/delete-unused-domains/m-p/145504#M11344</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;That is correct.&amp;nbsp; Domains in SDE (Enterprise Database) are owned by the user who created them.&amp;nbsp; A domain can be created explicated or gets created when the feature class with domains is copied into the SDE geodatabase.&amp;nbsp; So, I have domains owned by kreuzrsk and some owned by and others owned by DBO.&amp;nbsp; Since, I'm not DBO I can't delete those or any others ones I don't own.&amp;nbsp; &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 14 Aug 2015 19:41:59 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/delete-unused-domains/m-p/145504#M11344</guid>
      <dc:creator>RandyKreuziger</dc:creator>
      <dc:date>2015-08-14T19:41:59Z</dc:date>
    </item>
    <item>
      <title>Re: Delete Unused Domains</title>
      <link>https://community.esri.com/t5/python-questions/delete-unused-domains/m-p/145505#M11345</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;You'll need to contact the people who can log in as those users to help you out. If they aren't around any more, you may be able to create the account again and use it to delete the domains owned by that person. If their account is still there but the person has left, just reset their password, connect with their account, complete your maintenance, then delete the account.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 14 Aug 2015 20:39:24 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/delete-unused-domains/m-p/145505#M11345</guid>
      <dc:creator>BlakeTerhune</dc:creator>
      <dc:date>2015-08-14T20:39:24Z</dc:date>
    </item>
    <item>
      <title>Re: Delete Unused Domains</title>
      <link>https://community.esri.com/t5/python-questions/delete-unused-domains/m-p/145506#M11346</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Here is the link to GitHub...&amp;nbsp;&amp;nbsp; &lt;A href="https://github.com/LeonGIS/GDB_DomainCleanup"&gt;Script on GitHub&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I added an output file to list the unused domains and made delete an option. I was little nervous to just let it run, so I wanted to just see a list first.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks again&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Leon&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 17 Aug 2015 14:37:11 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/delete-unused-domains/m-p/145506#M11346</guid>
      <dc:creator>LeonS</dc:creator>
      <dc:date>2015-08-17T14:37:11Z</dc:date>
    </item>
    <item>
      <title>Re: Delete Unused Domains</title>
      <link>https://community.esri.com/t5/python-questions/delete-unused-domains/m-p/145507#M11347</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Great tool, Thank you.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 13 Jul 2016 21:21:34 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/delete-unused-domains/m-p/145507#M11347</guid>
      <dc:creator>nizarsalih</dc:creator>
      <dc:date>2016-07-13T21:21:34Z</dc:date>
    </item>
    <item>
      <title>Re: Delete Unused Domains</title>
      <link>https://community.esri.com/t5/python-questions/delete-unused-domains/m-p/145508#M11348</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;This is an excellent script. I used it on an Enterprise SQL Geodatabase by only changing the db connection.&amp;nbsp; Thanks Blake!&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 15 Dec 2017 21:15:48 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/delete-unused-domains/m-p/145508#M11348</guid>
      <dc:creator>RumikaChaudhry</dc:creator>
      <dc:date>2017-12-15T21:15:48Z</dc:date>
    </item>
    <item>
      <title>Re: Delete Unused Domains</title>
      <link>https://community.esri.com/t5/python-questions/delete-unused-domains/m-p/145509#M11349</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;This is very helpful. Thank you for sharing!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I've used this script for ArcSDE. At first run, it deleted 14 unused domains. Then it showed me runtime error.&lt;/P&gt;&lt;P&gt;At second run, it deleted one unused domain. Then I've encountered the same runtime error again. See below error message.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Runtime error&amp;nbsp; Traceback (most recent call last):&amp;nbsp; &amp;nbsp;File "&amp;lt;string&amp;gt;", line 34, in &amp;lt;module&amp;gt;&amp;nbsp; &amp;nbsp;File "c:\program files (x86)\arcgis\desktop10.3\arcpy\arcpy\management.py", line 1462, in DeleteDomain&amp;nbsp; &amp;nbsp; &amp;nbsp;raise e ExecuteError: ERROR 999999: Error executing function. The domain is used as a default domain. Failed to execute (DeleteDomain).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Do you have any idea what's wrong? Thank you in advance!&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 16 Jan 2018 22:40:33 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/delete-unused-domains/m-p/145509#M11349</guid>
      <dc:creator>HeenaLee</dc:creator>
      <dc:date>2018-01-16T22:40:33Z</dc:date>
    </item>
    <item>
      <title>Re: Delete Unused Domains</title>
      <link>https://community.esri.com/t5/python-questions/delete-unused-domains/m-p/145510#M11350</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Heena,&lt;/P&gt;&lt;P&gt;&amp;nbsp; A domain you're trying to delete can't be deleted as long as it is a domain still in use.&amp;nbsp; You'll have to identify which feature class and/or table fields are set to use that domain.&amp;nbsp; Then delete that association before you run the delete.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 16 Jan 2018 22:53:46 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/delete-unused-domains/m-p/145510#M11350</guid>
      <dc:creator>RandyKreuziger</dc:creator>
      <dc:date>2018-01-16T22:53:46Z</dc:date>
    </item>
    <item>
      <title>Re: Delete Unused Domains</title>
      <link>https://community.esri.com/t5/python-questions/delete-unused-domains/m-p/145511#M11351</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;According to &lt;A href="https://support.esri.com/en/technical-article/000008003"&gt;Esri documentation&lt;/A&gt;, it does indeed mean the domain is already used somewhere. It also means that there's some case where the code is getting a false positive that the domain is unused or else it shouldn't be trying to delete it. If you comment out the line that attempts to delete the domain&lt;/P&gt;&lt;PRE class="language-python line-numbers"&gt;&lt;CODE&gt;arcpy&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;DeleteDomain_management&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;myGDB&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; domain&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;it will just print the domain that should be deleted. It's possible that domain is used in a subtype and the code is somehow working incorrectly in that case. I may not have fully tested with subtypes.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 17 Jan 2018 15:15:32 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/delete-unused-domains/m-p/145511#M11351</guid>
      <dc:creator>BlakeTerhune</dc:creator>
      <dc:date>2018-01-17T15:15:32Z</dc:date>
    </item>
    <item>
      <title>Re: Delete Unused Domains</title>
      <link>https://community.esri.com/t5/python-questions/delete-unused-domains/m-p/145512#M11352</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;After commenting out "&lt;SPAN style="font-size: 10.0pt; color: #666666;"&gt;arcpy&lt;/SPAN&gt;&lt;SPAN style="color: #666666; font-size: 12.0pt;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; color: #666666;"&gt;DeleteDomain_management&lt;/SPAN&gt;&lt;SPAN style="color: #666666; font-size: 12.0pt;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; color: #666666;"&gt;myGDB&lt;/SPAN&gt;&lt;SPAN style="color: #666666; font-size: 12.0pt;"&gt;,&lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; color: #666666;"&gt; domain&lt;/SPAN&gt;&lt;SPAN style="color: #666666; font-size: 12.0pt;"&gt;)", the script has found the rest of domains that are not used. This helps a lot. Thank you for your help Blake and Randy!&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 17 Jan 2018 16:30:47 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/delete-unused-domains/m-p/145512#M11352</guid>
      <dc:creator>HeenaLee</dc:creator>
      <dc:date>2018-01-17T16:30:47Z</dc:date>
    </item>
    <item>
      <title>Re: Delete Unused Domains</title>
      <link>https://community.esri.com/t5/python-questions/delete-unused-domains/m-p/145513#M11353</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Based off your original post, how would I modify the script so that it can be converted to a tool, with the input being any user defined sde database, and the output being a message with the 'domains_unused'&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Here's what I have so far.....it works as a tool, but I do not see the print messages being output under geoprocessing results or some sort of text file message:&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;&lt;CODE&gt;import arcpy&amp;nbsp; 
import os&amp;nbsp; 

#Slightly modified from Geonet thread by Blake Terhune titled 'Delete Unused Domains'&amp;nbsp; 
# Set workspace&amp;nbsp; 
arcpy.env.workspace = arcpy.GetParameterAsText(0)
 
&amp;nbsp; 
# Get domains that are assigned to a field&amp;nbsp; 
domains_used = []&amp;nbsp; 
for dirpath, dirnames, filenames in arcpy.da.Walk(myGDB, datatype=["FeatureClass", "Table"]):&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; for filename in filenames:&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Checking {}".format(os.path.join(dirpath, filename))&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try:&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ## Check for normal field domains&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for field in arcpy.ListFields(os.path.join(dirpath, filename)):&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; if field.domain:&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; domains_used.append(field.domain)&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ## Check for domains used in a subtype field&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; subtypes = arcpy.da.ListSubtypes(os.path.join(dirpath, filename))&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for stcode, stdict in subtypes.iteritems():&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; if stdict["SubtypeField"] != u'':&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; for field, fieldvals in stdict["FieldValues"].iteritems():&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; if not fieldvals[1] is None:&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; domains_used.append(fieldvals[1].name)&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; except Exception, err:&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Error:", err&amp;nbsp; 
&amp;nbsp; 
# Get domains that exist in the geodatabase&amp;nbsp; 
domains_existing = [dom.name for dom in arcpy.da.ListDomains(myGDB)]&amp;nbsp; 
&amp;nbsp; 
# Find existing domains that are not assigned to a field&amp;nbsp; 
domains_unused = set(domains_existing) ^ set(domains_used)&amp;nbsp; 
print "{} unused domains in {}".format(len(domains_unused), myGDB) 
print domains_unused
&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 07:57:15 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/delete-unused-domains/m-p/145513#M11353</guid>
      <dc:creator>AndresCastillo</dc:creator>
      <dc:date>2021-12-11T07:57:15Z</dc:date>
    </item>
  </channel>
</rss>

