<?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: Achieving full compatibility with CDF - based services in ArcGIS Enterprise Extensibility Questions</title>
    <link>https://community.esri.com/t5/arcgis-enterprise-extensibility-questions/achieving-full-compatibility-with-cdf-based/m-p/1684803#M497</link>
    <description>&lt;P&gt;&lt;a href="https://community.esri.com/t5/user/viewprofilepage/user-id/474923"&gt;@MarcBateEA&lt;/a&gt;&amp;nbsp;Thank you for the comment. I'd like to learn more about the issue you are running into with the filter widget. The problem you are describing seems like it might be a little too complicated to fully work through in this forum. I sent you a direct message, so we can get into more details if you'd like.&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Tue, 17 Feb 2026 19:03:50 GMT</pubDate>
    <dc:creator>John_Hash</dc:creator>
    <dc:date>2026-02-17T19:03:50Z</dc:date>
    <item>
      <title>Achieving full compatibility with CDF - based services</title>
      <link>https://community.esri.com/t5/arcgis-enterprise-extensibility-questions/achieving-full-compatibility-with-cdf-based/m-p/1651376#M481</link>
      <description>&lt;P&gt;Is it useful to capture the fields list (and other parameters like return geometry only) when implementing the data provider functionality?&lt;/P&gt;&lt;P&gt;I could see that the published service (based on a full-fetch custom data provider) does already filter the response and returns the desired fields. Even though I have not explicitly captured the parameter value and implemented the filtering on the GeoJSON response.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;How do I know what do we need to capture and handle at request level to produce a proper&amp;nbsp;&lt;STRONG&gt;full compatible&amp;nbsp;&lt;/STRONG&gt;Feature Service, that behaves completely like a read-only FeatureService?&lt;/P&gt;&lt;P&gt;The where clause, returnCount, returnExtent and the pagination parameters are definitelly a must. But... what else? F.e. How to "build" a proper response when we query directly a feature by OBJECTID. We can query and get a list of IDs only, but the resulting hyperlink is broken. So the user cannot follow it.&lt;/P&gt;</description>
      <pubDate>Thu, 18 Sep 2025 10:09:43 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-enterprise-extensibility-questions/achieving-full-compatibility-with-cdf-based/m-p/1651376#M481</guid>
      <dc:creator>Francisco_R</dc:creator>
      <dc:date>2025-09-18T10:09:43Z</dc:date>
    </item>
    <item>
      <title>Re: Achieving full compatibility with CDF - based services</title>
      <link>https://community.esri.com/t5/arcgis-enterprise-extensibility-questions/achieving-full-compatibility-with-cdf-based/m-p/1651559#M482</link>
      <description>&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;These are great questions, and the answers are based on the remote data set you are accessing, what the API in front of that data source supports, and how much control you want over what the custom data provider does.&lt;BR /&gt;&lt;BR /&gt;You are correct that in a "full fetch" type of data loading pattern, the custom data framework will handle the parameters in the request and take care of filtering based on the 'outFields', 'where', etc. So if your data set is small and you can generally load all the data at once, this is a fine way to handle all those parameters.&lt;/P&gt;&lt;P&gt;The main reason you would want to capture those parameters yourself is if you can pass on those parameters to your data set's API and use them to filter the data at the remote data source. This will increase efficiency and allow you to interact with larger data sets that cannot be fetched all at once.&lt;BR /&gt;&lt;BR /&gt;In your provider code, you will need to build in logic that inspects the incoming request parameters and decide how to query your remote data source based on those request parameters. For instance, if you want to be able to support querying your data source by OBJECTID, you would capture requests that have the 'objectIds' parameter, build an equivalent query by 'idField' (whatever your 'idField' OBJECTID equivalent is), query your remote, and return the GeoJSON for just those features that match that 'idField'.&lt;BR /&gt;&lt;BR /&gt;Example&amp;nbsp;&lt;BR /&gt;Request:&lt;/P&gt;&lt;LI-CODE lang="javascript"&gt;https://yourserver.com/arcgis/rest/services/YourService/FeatureServer/0/query?objectIds=1,2,3&amp;amp;f=json&lt;/LI-CODE&gt;&lt;P&gt;In the provider, have some "if" logic.&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;LI-CODE lang="javascript"&gt;if (req.query.objectIds) // write logic for extracting oids

//convert to Mongo equivalent

db.collection.find({ myIdField: { $in: [1, 2, 3] } })

// query MongoDB

// convert to GeoJSON

// return GeoJSON&lt;/LI-CODE&gt;&lt;P&gt;&lt;BR /&gt;Refer to the examples here:&lt;BR /&gt;&lt;A href="https://github.com/Esri/arcgis-enterprise-sdk-resources/tree/master/Samples/custom-data-feeds/mongodb-pt-read-only-points" target="_blank"&gt;https://github.com/Esri/arcgis-enterprise-sdk-resources/tree/master/Samples/custom-data-feeds/mongodb-pt-read-only-points&lt;/A&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;A href="https://github.com/Esri/arcgis-enterprise-sdk-resources/tree/master/Samples/custom-data-feeds/duckdb-pt-read-only-points" target="_blank"&gt;https://github.com/Esri/arcgis-enterprise-sdk-resources/tree/master/Samples/custom-data-feeds/duckdb-pt-read-only-points&lt;/A&gt;&lt;BR /&gt;&lt;BR /&gt;Documentation on pass through provider data loading:&lt;BR /&gt;&lt;A href="https://developers.arcgis.com/enterprise-sdk/guide/custom-data-feeds/pass-through-custom-data-providers/" target="_blank"&gt;https://developers.arcgis.com/enterprise-sdk/guide/custom-data-feeds/pass-through-custom-data-providers/&lt;/A&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 18 Sep 2025 17:44:46 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-enterprise-extensibility-questions/achieving-full-compatibility-with-cdf-based/m-p/1651559#M482</guid>
      <dc:creator>John_Hash</dc:creator>
      <dc:date>2025-09-18T17:44:46Z</dc:date>
    </item>
    <item>
      <title>Re: Achieving full compatibility with CDF - based services</title>
      <link>https://community.esri.com/t5/arcgis-enterprise-extensibility-questions/achieving-full-compatibility-with-cdf-based/m-p/1651728#M483</link>
      <description>&lt;P&gt;Thanks for a very good explanation. I see I might not have formulated my question properly, apologies for that.&lt;/P&gt;&lt;P&gt;I meant I have identified broken links when consuming the published service directly by feature ID, so this address:&amp;nbsp;rest/services/&amp;lt;ServiceName&amp;gt;/FeatureServer/&amp;lt;layerID&amp;gt;/&amp;lt;ObjectID = 2&amp;gt; returns Not Found error.&lt;/P&gt;&lt;LI-CODE lang="javascript"&gt;{
 "error": {
  "code": 500,
  "message": "Feature (ID: 2) not found",
  "details": []
 }
}​&lt;/LI-CODE&gt;&lt;P&gt;&lt;BR /&gt;Instead for a JSON Definition of the feature with ObjectID = 2 like this example from a Hosted Service:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="javascript"&gt;{
 "feature": {
  "attributes": {
   "globalid": "{4D9FC17A-661C-44F7-B688-E1AA94245F29}",
   "objectid": 2
  },
  "geometry": {
   "x": 1196029.2908000015,
   "y": 8378724.482199997
  }
 }
}&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;BR /&gt;I would assume that I would need to define a route, and somehow parametrize the OID, so I can process the getData accordingly based on the OID (which will be basically filtering by ObjectID as you explained in your answer).&lt;BR /&gt;If that's the case. The route should probably look like (assumed 1 layer only):&lt;/P&gt;&lt;LI-CODE lang="javascript"&gt;    {
        path: `/&amp;lt;name&amp;gt;/rest/services/FeatureServer/0/:objectid`,
        methods: ['GET','POST'],
        handler: 'getDataByObjectId'
    }&lt;/LI-CODE&gt;&lt;P&gt;And where I define a separate handler function in the Model to return single feature results. I guess the request parameters will expose that objectid for preparing the answer.&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;I wondered if there are more situations like these we have to handle. So we can achieve an equivalent service than a Pro-published regular FeatureService.&lt;BR /&gt;So far I have found (but I have just begun):&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;Capture Where clause (fundamental query)&lt;/LI&gt;&lt;LI&gt;Capture ObjectIDs (almost everything might leverage this)&lt;/LI&gt;&lt;LI&gt;Capture count and extent (metadata queries)&lt;/LI&gt;&lt;LI&gt;Capture spatial filter (Pro seems to leverage them by default)&lt;/LI&gt;&lt;LI&gt;Build a route and handler for direct OID queries&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;&lt;BR /&gt;Other query parameters (returnIDs only, display fields, etc) seem to be handled at AGS level already.&amp;nbsp;I Understand that I can still capture them if I need to customize the query against the datasource in advanced scenarios. But that would be more related to a query-optimization stage more than "achieving client-side compatibility".&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 19 Sep 2025 08:00:07 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-enterprise-extensibility-questions/achieving-full-compatibility-with-cdf-based/m-p/1651728#M483</guid>
      <dc:creator>Francisco_R</dc:creator>
      <dc:date>2025-09-19T08:00:07Z</dc:date>
    </item>
    <item>
      <title>Re: Achieving full compatibility with CDF - based services</title>
      <link>https://community.esri.com/t5/arcgis-enterprise-extensibility-questions/achieving-full-compatibility-with-cdf-based/m-p/1684418#M496</link>
      <description>&lt;P&gt;We were sold CDFs to behave just like feature services and they just aren't.&amp;nbsp; Our biggest problem is the performance when using something like the filter widget.&amp;nbsp; It is extremely chatty to get all the dependent dropdown values when you change your selection, making it unusable for more than 5k records in the dataset.&amp;nbsp; Our data doesn't update often so I do a daily cache so it doesn't have to hit the source data server multiple times during the day, yet still too slow to use.&lt;/P&gt;</description>
      <pubDate>Fri, 13 Feb 2026 20:19:37 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-enterprise-extensibility-questions/achieving-full-compatibility-with-cdf-based/m-p/1684418#M496</guid>
      <dc:creator>MarcBateEA</dc:creator>
      <dc:date>2026-02-13T20:19:37Z</dc:date>
    </item>
    <item>
      <title>Re: Achieving full compatibility with CDF - based services</title>
      <link>https://community.esri.com/t5/arcgis-enterprise-extensibility-questions/achieving-full-compatibility-with-cdf-based/m-p/1684803#M497</link>
      <description>&lt;P&gt;&lt;a href="https://community.esri.com/t5/user/viewprofilepage/user-id/474923"&gt;@MarcBateEA&lt;/a&gt;&amp;nbsp;Thank you for the comment. I'd like to learn more about the issue you are running into with the filter widget. The problem you are describing seems like it might be a little too complicated to fully work through in this forum. I sent you a direct message, so we can get into more details if you'd like.&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 17 Feb 2026 19:03:50 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-enterprise-extensibility-questions/achieving-full-compatibility-with-cdf-based/m-p/1684803#M497</guid>
      <dc:creator>John_Hash</dc:creator>
      <dc:date>2026-02-17T19:03:50Z</dc:date>
    </item>
  </channel>
</rss>

