<?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: No Arcpy Method do Determine a Layer's Joins in ArcGIS API for Python Questions</title>
    <link>https://community.esri.com/t5/arcgis-api-for-python-questions/no-arcpy-method-do-determine-a-layer-s-joins/m-p/736859#M252</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Dan&lt;/P&gt;&lt;P&gt;Ty for your, as always, helpful reply to my posting on GeoNet.&lt;/P&gt;&lt;P&gt;I have been searching the ArcMap documentation.&lt;/P&gt;&lt;P&gt;I cannot find any reference to an API named "RemoveJoin_management"&lt;/P&gt;&lt;P&gt;And someone else referred to some other Python API with a name&lt;/P&gt;&lt;P&gt;ending in_managment which I also don't find.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Do you happen to know where these can be found?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 23 Dec 2019 18:29:35 GMT</pubDate>
    <dc:creator>RobertStevens</dc:creator>
    <dc:date>2019-12-23T18:29:35Z</dc:date>
    <item>
      <title>No Arcpy Method do Determine a Layer's Joins</title>
      <link>https://community.esri.com/t5/arcgis-api-for-python-questions/no-arcpy-method-do-determine-a-layer-s-joins/m-p/736855#M248</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;The subject says most of it.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Years have gone by, and it is still not possible in using the Python Arcpy classes and functions to determine whether a map layer (or layer file) has any joins, still less what datasets are joined.&lt;/P&gt;&lt;P&gt;Nor is there such a method in the ArcPro equivalent to Arcpy.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 21 Dec 2019 23:13:45 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-api-for-python-questions/no-arcpy-method-do-determine-a-layer-s-joins/m-p/736855#M248</guid>
      <dc:creator>RobertStevens</dc:creator>
      <dc:date>2019-12-21T23:13:45Z</dc:date>
    </item>
    <item>
      <title>Re: No Arcpy Method do Determine a Layer's Joins</title>
      <link>https://community.esri.com/t5/arcgis-api-for-python-questions/no-arcpy-method-do-determine-a-layer-s-joins/m-p/736856#M249</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;The substitute approaches aren't a substitute but&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;A class="link-titled" href="http://raumpatrouille3d.blogspot.com/2017/12/arcpy-find-layers-with-joins.html" title="http://raumpatrouille3d.blogspot.com/2017/12/arcpy-find-layers-with-joins.html"&gt;Raumpatrouille: ArcPy - find layers with joins&lt;/A&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;just recommends adding a RemoveJoin_management in a try/except code block to check to see if one exists or not.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 22 Dec 2019 01:04:21 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-api-for-python-questions/no-arcpy-method-do-determine-a-layer-s-joins/m-p/736856#M249</guid>
      <dc:creator>DanPatterson_Retired</dc:creator>
      <dc:date>2019-12-22T01:04:21Z</dc:date>
    </item>
    <item>
      <title>Re: No Arcpy Method do Determine a Layer's Joins</title>
      <link>https://community.esri.com/t5/arcgis-api-for-python-questions/no-arcpy-method-do-determine-a-layer-s-joins/m-p/736857#M250</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I don't find that API documented anywhere.&lt;/P&gt;&lt;P&gt;Regardless, it is a really clunk "solution".&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I don't understand ESRI.It seems as though so much of their stuff is incomplete. Why would anyone create a python based collection of classes to provided a relatively simple API and then leave out something this basic. Not only leave it out, but leave it out for years.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;A continuing problem I have with their stuff is that I have a map layer with a join to some kind of external file. For some reason that file gets moved/renamed/whatever. The join disappears but then so also would the symbology that one had carefully created. Symbology in Arcmap is not especially good. From what I have seen, it is better in Arcpro.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Documentation could be improved also. Sure, they give lsists of arguments, meaning etc. But more is needed. For instance: let's say I have a layer joined to another layer. Offline (ie not within a map) I replace that joined layer's underlying dataset. Question: will new rows added to that dataset now show up in the map? In other words, when is that join accomplished. At creation time? Or after each attempt to draw the layer? Or only when the map is opened? These are important subtle questions. I have never been able to find answers to them except by experimenting.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;My overall impression is that ESRI is flush with geographers, but good programmers there are thin on the ground.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 22 Dec 2019 02:05:26 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-api-for-python-questions/no-arcpy-method-do-determine-a-layer-s-joins/m-p/736857#M250</guid>
      <dc:creator>RobertStevens</dc:creator>
      <dc:date>2019-12-22T02:05:26Z</dc:date>
    </item>
    <item>
      <title>Re: No Arcpy Method do Determine a Layer's Joins</title>
      <link>https://community.esri.com/t5/arcgis-api-for-python-questions/no-arcpy-method-do-determine-a-layer-s-joins/m-p/736858#M251</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;the api largely implements tools that Pro uses or implements arcpy stuff if the user has a license... if not, it tries its best with shapely, hence, the Pro help is sometimes preferable to the api docs.&lt;/P&gt;&lt;P&gt;As for moving this forward, the only monitored option is&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="https://community.esri.com/space/2167"&gt;ArcGIS Ideas&lt;/A&gt;‌&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;maybe &lt;A href="https://community.esri.com/migrated-users/45316"&gt;Kory Kramer&lt;/A&gt;‌ has seen this or similar or can flag the appropriate team.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 22 Dec 2019 04:51:39 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-api-for-python-questions/no-arcpy-method-do-determine-a-layer-s-joins/m-p/736858#M251</guid>
      <dc:creator>DanPatterson_Retired</dc:creator>
      <dc:date>2019-12-22T04:51:39Z</dc:date>
    </item>
    <item>
      <title>Re: No Arcpy Method do Determine a Layer's Joins</title>
      <link>https://community.esri.com/t5/arcgis-api-for-python-questions/no-arcpy-method-do-determine-a-layer-s-joins/m-p/736859#M252</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Dan&lt;/P&gt;&lt;P&gt;Ty for your, as always, helpful reply to my posting on GeoNet.&lt;/P&gt;&lt;P&gt;I have been searching the ArcMap documentation.&lt;/P&gt;&lt;P&gt;I cannot find any reference to an API named "RemoveJoin_management"&lt;/P&gt;&lt;P&gt;And someone else referred to some other Python API with a name&lt;/P&gt;&lt;P&gt;ending in_managment which I also don't find.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Do you happen to know where these can be found?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 23 Dec 2019 18:29:35 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-api-for-python-questions/no-arcpy-method-do-determine-a-layer-s-joins/m-p/736859#M252</guid>
      <dc:creator>RobertStevens</dc:creator>
      <dc:date>2019-12-23T18:29:35Z</dc:date>
    </item>
    <item>
      <title>Re: No Arcpy Method do Determine a Layer's Joins</title>
      <link>https://community.esri.com/t5/arcgis-api-for-python-questions/no-arcpy-method-do-determine-a-layer-s-joins/m-p/736860#M253</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I search arcgis Pro's help&lt;/P&gt;&lt;P&gt;This a search on &lt;STRONG&gt;Remove Join&amp;nbsp;&lt;/STRONG&gt;... %20 is put in between the two words&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A class="unlinked"&gt;https://pro.arcgis.com/search/?q=&amp;nbsp; &lt;STRONG&gt;Remove%20Join&lt;/STRONG&gt;&amp;nbsp; &amp;amp;p=0&amp;amp;language=en&amp;amp;product=arcgis-pro&amp;amp;version=&amp;amp;n=15&amp;amp;collection=help&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;When I click on&amp;nbsp;the most likely link, the link changes to&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;https:&amp;nbsp; //pro.arcgis.com/en/pro-app/tool-reference/data-management/&amp;nbsp; &lt;STRONG&gt;remove-join.htm&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;which shows as this.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A class="link-titled" href="https://pro.arcgis.com/en/pro-app/tool-reference/data-management/remove-join.htm" title="https://pro.arcgis.com/en/pro-app/tool-reference/data-management/remove-join.htm"&gt;Remove Join—Data Management toolbox | ArcGIS Desktop&lt;/A&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;All api's which use tools in arctoolbox have similar links, but the best help descriptions are those for ArcGIS Pro, so even if I am using the arcgis 1.7 api for tool information, If I know they are just calling an arcpy/arctoolbox function, I just search for its help.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 23 Dec 2019 19:52:49 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-api-for-python-questions/no-arcpy-method-do-determine-a-layer-s-joins/m-p/736860#M253</guid>
      <dc:creator>DanPatterson_Retired</dc:creator>
      <dc:date>2019-12-23T19:52:49Z</dc:date>
    </item>
    <item>
      <title>Re: No Arcpy Method do Determine a Layer's Joins</title>
      <link>https://community.esri.com/t5/arcgis-api-for-python-questions/no-arcpy-method-do-determine-a-layer-s-joins/m-p/736861#M254</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;A href="https://community.esri.com/migrated-users/21061"&gt;Robert Stevens&lt;/A&gt;‌, I am sharing this with &lt;A href="https://community.esri.com/space/2145"&gt;Python&lt;/A&gt;‌ since this is an ArcPy question and not ArcGIS API for Python.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Starting with ArcGIS Pro 2.4, you can determine whether any layers have joins by using the new &lt;A class="link-titled" href="https://pro.arcgis.com/en/pro-app/arcpy/mapping/python-cim-access.htm" title="https://pro.arcgis.com/en/pro-app/arcpy/mapping/python-cim-access.htm"&gt;Python CIM access—ArcPy | ArcGIS Desktop&lt;/A&gt;.&amp;nbsp; Once you have a reference to a specific layer, you can call getDefinition method to return a CIM object.&amp;nbsp; From there, check for the existence of a 'joinType' attribute in featureTable.dataConnection.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 23 Dec 2019 22:49:22 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-api-for-python-questions/no-arcpy-method-do-determine-a-layer-s-joins/m-p/736861#M254</guid>
      <dc:creator>JoshuaBixby</dc:creator>
      <dc:date>2019-12-23T22:49:22Z</dc:date>
    </item>
    <item>
      <title>Re: No Arcpy Method do Determine a Layer's Joins</title>
      <link>https://community.esri.com/t5/arcgis-api-for-python-questions/no-arcpy-method-do-determine-a-layer-s-joins/m-p/736862#M255</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Yes, you can use the CIM to get the join properties. However, you can also just use the layer's connectionProperties. The connectionProperties dictionary contains all the information that defines the join(s). Keep in mind that layers can have zero, one or many joins. You can use a recursive function to handle zero, one or many joins:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;&lt;CODE&gt;&lt;SPAN class="keyword token"&gt;import&lt;/SPAN&gt; arcpy

&lt;SPAN class="keyword token"&gt;def&lt;/SPAN&gt; &lt;SPAN class="token function"&gt;ListJoinsConProp&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;cp&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; join_count&lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt;
    &lt;SPAN class="keyword token"&gt;if&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;'source'&lt;/SPAN&gt; &lt;SPAN class="keyword token"&gt;in&lt;/SPAN&gt; cp&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt;
        &lt;SPAN class="keyword token"&gt;if&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;'destination'&lt;/SPAN&gt; &lt;SPAN class="keyword token"&gt;in&lt;/SPAN&gt; cp&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt;
            &lt;SPAN class="keyword token"&gt;print&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="string token"&gt;'       Join Properties:'&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
            &lt;SPAN class="keyword token"&gt;print&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="string token"&gt;'         '&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; cp&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="string token"&gt;'destination'&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="string token"&gt;'connection_info'&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
            &lt;SPAN class="keyword token"&gt;print&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="string token"&gt;'         '&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; cp&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="string token"&gt;'destination'&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="string token"&gt;'dataset'&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
            join_count &lt;SPAN class="operator token"&gt;+=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;1&lt;/SPAN&gt;
            &lt;SPAN class="keyword token"&gt;return&lt;/SPAN&gt; ListJoinsConProp&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;cp&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="string token"&gt;'source'&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; join_count&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
    &lt;SPAN class="keyword token"&gt;else&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt;
        &lt;SPAN class="keyword token"&gt;if&lt;/SPAN&gt; join_count &lt;SPAN class="operator token"&gt;==&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt;
            &lt;SPAN class="keyword token"&gt;print&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="string token"&gt;'       -&amp;gt; no join'&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
        
&lt;SPAN class="comment token"&gt;# join inventory (using the layer.connectionProperties dictionary)&lt;/SPAN&gt;
aprx &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; arcpy&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;mp&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;ArcGISProject&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;r&lt;SPAN class="string token"&gt;"C:\Temp\fgdb_012joins.aprx"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
m &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; aprx&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;listMaps&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;
&lt;SPAN class="keyword token"&gt;for&lt;/SPAN&gt; lyr &lt;SPAN class="keyword token"&gt;in&lt;/SPAN&gt; m&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;listLayers&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt;
    &lt;SPAN class="keyword token"&gt;print&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;f&lt;SPAN class="string token"&gt;"LAYER: {lyr.name}"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
    &lt;SPAN class="keyword token"&gt;if&lt;/SPAN&gt; lyr&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;supports&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="string token"&gt;"dataSource"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt;
        cp &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; lyr&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;connectionProperties
        &lt;SPAN class="keyword token"&gt;if&lt;/SPAN&gt; cp &lt;SPAN class="keyword token"&gt;is&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;not&lt;/SPAN&gt; None&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt;
            ListJoinsConProp&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;cp&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;/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;P&gt;&lt;BR /&gt;Using the CIM does have one advantage - the CIM contains the join name, whereas the connectionProperties dictionary does not. Here is how to do it with the CIM:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;&lt;CODE&gt;&lt;SPAN class="keyword token"&gt;import&lt;/SPAN&gt; arcpy

&lt;SPAN class="keyword token"&gt;def&lt;/SPAN&gt; &lt;SPAN class="token function"&gt;ListCIMJoins&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;c&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; join_count&lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt;
    &lt;SPAN class="keyword token"&gt;if&lt;/SPAN&gt; hasattr&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;c&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;'sourceTable'&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt;
        &lt;SPAN class="keyword token"&gt;print&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;f&lt;SPAN class="string token"&gt;'       Join Name: {c.name}'&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
        &lt;SPAN class="keyword token"&gt;print&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;f&lt;SPAN class="string token"&gt;'       Join Properties:'&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
        &lt;SPAN class="keyword token"&gt;print&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;f&lt;SPAN class="string token"&gt;'         {c.destinationTable.workspaceConnectionString}'&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
        &lt;SPAN class="keyword token"&gt;print&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;f&lt;SPAN class="string token"&gt;'         {c.destinationTable.dataset}'&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
        join_count &lt;SPAN class="operator token"&gt;+=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;1&lt;/SPAN&gt;
        &lt;SPAN class="keyword token"&gt;return&lt;/SPAN&gt; ListCIMJoins&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;c&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;sourceTable&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; join_count&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
    &lt;SPAN class="keyword token"&gt;else&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt;
        &lt;SPAN class="keyword token"&gt;if&lt;/SPAN&gt; join_count &lt;SPAN class="operator token"&gt;==&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt;
            &lt;SPAN class="keyword token"&gt;print&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="string token"&gt;'       -&amp;gt; no join'&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;

&lt;SPAN class="comment token"&gt;# join inventory (using CIM)&lt;/SPAN&gt;
aprx &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; arcpy&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;mp&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;ArcGISProject&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;r&lt;SPAN class="string token"&gt;"C:\Temp\fgdb_012joins.aprx"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
m &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; aprx&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;listMaps&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;
&lt;SPAN class="keyword token"&gt;for&lt;/SPAN&gt; lyr &lt;SPAN class="keyword token"&gt;in&lt;/SPAN&gt; m&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;listLayers&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt;
    &lt;SPAN class="keyword token"&gt;print&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;f&lt;SPAN class="string token"&gt;"LAYER: {lyr.name}"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
    &lt;SPAN class="keyword token"&gt;if&lt;/SPAN&gt; lyr&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;supports&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="string token"&gt;"dataSource"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt;
        lyrCIM &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; lyr&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;getDefinition&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="string token"&gt;"V2"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
        &lt;SPAN class="keyword token"&gt;if&lt;/SPAN&gt; hasattr&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;lyrCIM&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;'featureTable'&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt;
            ListCIMJoins&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;lyrCIM&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;featureTable&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;dataConnection&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;/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;P&gt;&lt;/P&gt;&lt;P&gt;These examples just handle joins. They can be expanded to also list relates.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 12 Dec 2021 07:24:08 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-api-for-python-questions/no-arcpy-method-do-determine-a-layer-s-joins/m-p/736862#M255</guid>
      <dc:creator>JeffMoulds</dc:creator>
      <dc:date>2021-12-12T07:24:08Z</dc:date>
    </item>
    <item>
      <title>Re: No Arcpy Method do Determine a Layer's Joins</title>
      <link>https://community.esri.com/t5/arcgis-api-for-python-questions/no-arcpy-method-do-determine-a-layer-s-joins/m-p/736863#M256</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Jeff&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks for this information. I am not using arcpro, but if/when I do it appears to be just what I need.&lt;/P&gt;&lt;P&gt;Unfortunately arcmap does not support either the connectionProperties attribute or the getDefinition method&lt;BR /&gt;(in fact arpy for arcmap does not support CIM in any way at all).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Rob&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 25 Jan 2020 19:22:53 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-api-for-python-questions/no-arcpy-method-do-determine-a-layer-s-joins/m-p/736863#M256</guid>
      <dc:creator>RobertStevens</dc:creator>
      <dc:date>2020-01-25T19:22:53Z</dc:date>
    </item>
    <item>
      <title>Re: No Arcpy Method do Determine a Layer's Joins</title>
      <link>https://community.esri.com/t5/arcgis-api-for-python-questions/no-arcpy-method-do-determine-a-layer-s-joins/m-p/736864#M257</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;A href="https://community.esri.com/migrated-users/21061" target="_blank"&gt;Robert Stevens&lt;/A&gt;‌, if you install &lt;A class="link-titled" href="https://github.com/enthought/comtypes" title="https://github.com/enthought/comtypes" rel="nofollow noopener noreferrer" target="_blank"&gt;GitHub - enthought/comtypes: A pure Python, lightweight COM client and server framework&lt;/A&gt; , you can access the underlying ArcObjects libraries from within Python and do almost anything.&amp;nbsp; Coding COM through Python is not very Pythonic, but it is doable if absolutely necessary.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Since I don't work in ArcMap all that much these days, let alone COM programming with ArcMap, it took me a little bit to gin up the following code to demonstrate how you can use comtypes to get the information you need.&amp;nbsp; &lt;SPAN style="text-decoration: line-through;"&gt;Just paste the code into the interactive Python window to start.&amp;nbsp; &lt;/SPAN&gt;Just set the MXD file path and run the code in Python interpreter.&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;&lt;CODE&gt;&lt;SPAN class="keyword token"&gt;import&lt;/SPAN&gt; arcpy
&lt;SPAN class="keyword token"&gt;import&lt;/SPAN&gt; os
&lt;SPAN class="keyword token"&gt;from&lt;/SPAN&gt; comtypes&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;client &lt;SPAN class="keyword token"&gt;import&lt;/SPAN&gt; CreateObject&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; GetModule

mxd &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;# path to MXD file &lt;/SPAN&gt;

&lt;SPAN class="comment token"&gt;# Function for casting COM objects to interfaces&lt;/SPAN&gt;
&lt;SPAN class="keyword token"&gt;def&lt;/SPAN&gt; &lt;SPAN class="token function"&gt;CType&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;obj&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; interface&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt;
    &lt;SPAN class="string token"&gt;"""Casts obj to interface and returns comtypes POINTER or None"""&lt;/SPAN&gt;
    &lt;SPAN class="keyword token"&gt;try&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt;
        newobj &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; obj&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;QueryInterface&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;interface&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
        &lt;SPAN class="keyword token"&gt;return&lt;/SPAN&gt; newobj
    &lt;SPAN class="keyword token"&gt;except&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt;
        &lt;SPAN class="keyword token"&gt;return&lt;/SPAN&gt; None

&lt;SPAN class="comment token"&gt;# Path to ArcGIS Desktop COM files&lt;/SPAN&gt;
comDirectory &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; os&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;path&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;join&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;  
    os&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;path&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;join&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;arcpy&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;GetInstallInfo&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="string token"&gt;'InstallDir'&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;'com'&lt;/SPAN&gt;  
&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;

&lt;SPAN class="comment token"&gt;# References to needed ArcGIS Desktop COM components&lt;/SPAN&gt;
esriSystem &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; GetModule&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;os&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;path&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;join&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;comDirectory&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;'esriSystem.olb'&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
esriFramework &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; GetModule&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;os&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;path&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;join&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;comDirectory&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;'esriFramework.olb'&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
esriArcMapUI &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; GetModule&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;os&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;path&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;join&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;comDirectory&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;'esriArcMapUI.olb'&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
esriCarto &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; GetModule&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;os&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;path&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;join&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;comDirectory&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;'esriCarto.olb'&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
esriGeodatabase &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; GetModule&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;os&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;path&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;join&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;comDirectory&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;'esriGeodatabase.olb'&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;

&lt;SPAN class="comment token"&gt;# Create filter for layers that support IGeoFeatureLayer&lt;/SPAN&gt;
pUID &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; CreateObject&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;esriSystem&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;UID&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
pUID&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;Value &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"{E156D7E5-22AF-11D3-9F99-00C04F6BC78E}"&lt;/SPAN&gt;

&lt;SPAN class="comment token"&gt;# # Section for running within ArcGIS Desktop application&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;# # Confirm code is being run within ArcMap (Interactive, Addin, Toolbox)&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;# try:&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;#     pApp = CreateObject(esriFramework.AppRef)&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;#     assert pApp.Name == 'ArcMap', 'Code must be run within ArcMap'&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;#     pMxDoc = CType(pApp.Document, esriArcMapUI.IMxDocument)&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;# except WindowsError:&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;#     assert False, 'Code must be run within an ArcGIS Desktop application'&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;#     &lt;/SPAN&gt;

&lt;SPAN class="comment token"&gt;# Section for running outside of ArcGIS Desktop application&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;# Open MXD file&lt;/SPAN&gt;
&lt;SPAN class="keyword token"&gt;try&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt;
    pMapDoc &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; CreateObject&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;esriCarto&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;MapDocument&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; interface&lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt;esriCarto&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;IMapDocument&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
    &lt;SPAN class="keyword token"&gt;assert&lt;/SPAN&gt; pMapDoc&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;IsMapDocument&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;mxd&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;'Valid MXD required'&lt;/SPAN&gt;
    pMapDoc&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;Open&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;mxd&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
    pMap &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; pMapDoc&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;Map&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
&lt;SPAN class="keyword token"&gt;except&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt;
    &lt;SPAN class="keyword token"&gt;assert&lt;/SPAN&gt; &lt;SPAN class="token boolean"&gt;False&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;'Unable to open MXD and retrieve map'&lt;/SPAN&gt;

&lt;SPAN class="comment token"&gt;# Loop over layers that support IGeoFeatureLayer&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;# pEnumLayer = pMxDoc.FocusMap.Layers(pUID, True)&lt;/SPAN&gt;
pEnumLayer &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; pMap&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;Layers&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;pUID&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="token boolean"&gt;True&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;

results &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="string token"&gt;"LayerName, JoinCount, RelateCount"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;
pEnumLayer&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;Reset&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
pLayer &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; pEnumLayer&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;Next&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
&lt;SPAN class="keyword token"&gt;while&lt;/SPAN&gt; pLayer&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt;
    &lt;SPAN class="comment token"&gt;# Count number of relates&lt;/SPAN&gt;
    relateCount &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;
    pRelClassColl &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; CType&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;pLayer&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; esriCarto&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;IRelationshipClassCollection&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
    pEnumRelClasses &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; pRelClassColl&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;RelationshipClasses
    pEnumRelClasses&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;Reset&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
    &lt;SPAN class="keyword token"&gt;while&lt;/SPAN&gt; pEnumRelClasses&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;Next&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt;
        relateCount &lt;SPAN class="operator token"&gt;+=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;1&lt;/SPAN&gt;
        
    &lt;SPAN class="comment token"&gt;# Count number of joins&lt;/SPAN&gt;
    joinCount &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;
    table &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; CType&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;pLayer&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; esriCarto&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;IDisplayTable&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;DisplayTable
    &lt;SPAN class="keyword token"&gt;while&lt;/SPAN&gt; CType&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;table&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; esriGeodatabase&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;IRelQueryTable&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt;
        joinCount &lt;SPAN class="operator token"&gt;+=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;1&lt;/SPAN&gt;
        table &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; CType&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;table&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; esriGeodatabase&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;IRelQueryTable&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;SourceTable
        
    &lt;SPAN class="comment token"&gt;# Append results and move to next layer&lt;/SPAN&gt;
    results&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;append&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="string token"&gt;"{}, {}, {}"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;format&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;pLayer&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;Name&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; joinCount&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; relateCount&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
    pLayer &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; pEnumLayer&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;Next&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;

&lt;SPAN class="keyword token"&gt;for&lt;/SPAN&gt; res &lt;SPAN class="keyword token"&gt;in&lt;/SPAN&gt; results&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt;
    &lt;SPAN class="keyword token"&gt;print&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;res&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;/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;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;/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;P&gt;The code only counts joins and relates, it doesn't list all the data sets, but getting data set information is possible.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 12 Dec 2021 07:24:11 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-api-for-python-questions/no-arcpy-method-do-determine-a-layer-s-joins/m-p/736864#M257</guid>
      <dc:creator>JoshuaBixby</dc:creator>
      <dc:date>2021-12-12T07:24:11Z</dc:date>
    </item>
    <item>
      <title>Re: No Arcpy Method do Determine a Layer's Joins</title>
      <link>https://community.esri.com/t5/arcgis-api-for-python-questions/no-arcpy-method-do-determine-a-layer-s-joins/m-p/736865#M258</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Joshua&lt;/P&gt;&lt;P&gt;Thanks for this posting. Wow!, that really is exploring the deep state of arcgis! I fear it isn't quite what I want because the context requires (according to the try..except clause in the code) that it be used within an interactive python window, whereas my need was a non-interactive bookkeeping use. But your example certainly gives me a window into the deep underpinning of esri/com.&lt;/P&gt;&lt;P&gt;Thanks!&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 29 Jan 2020 13:12:53 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-api-for-python-questions/no-arcpy-method-do-determine-a-layer-s-joins/m-p/736865#M258</guid>
      <dc:creator>RobertStevens</dc:creator>
      <dc:date>2020-01-29T13:12:53Z</dc:date>
    </item>
    <item>
      <title>Re: No Arcpy Method do Determine a Layer's Joins</title>
      <link>https://community.esri.com/t5/arcgis-api-for-python-questions/no-arcpy-method-do-determine-a-layer-s-joins/m-p/736866#M259</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;A href="https://community.esri.com/migrated-users/21061"&gt;Robert Stevens&lt;/A&gt;‌, a pretty easy change to run the way you want.&amp;nbsp; Instead of re-posting code, I updated the code in my earlier post to run outside of an ArcGIS Desktop application.&amp;nbsp; Just remember to set the MXD path at the start of the code.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 29 Jan 2020 18:55:23 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-api-for-python-questions/no-arcpy-method-do-determine-a-layer-s-joins/m-p/736866#M259</guid>
      <dc:creator>JoshuaBixby</dc:creator>
      <dc:date>2020-01-29T18:55:23Z</dc:date>
    </item>
  </channel>
</rss>

