web
You’re offline. This is a read only version of the page.
close
Skip to main content
Community site session details

Community site session details

Session Id :
Microsoft Dynamics AX (Archived)

EP Purchase page: An unexpected error has occurred.An item with the same key has already been added

(1) ShareShare
ReportReport
Posted on by 20

On Purchase requisition list page, i am getting an error as

"An item with the same key has already been added"

If i am checking on Event viewer, I can see error as

--------------------------------------------------------------------
An unexpected error has occurred.

An item with the same key has already been added.

System.ArgumentException
   at System.ThrowHelper.ThrowArgumentException(ExceptionResource resource)
   at System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add)
   at System.Collections.ObjectModel.KeyedCollection`2.AddKey(TKey key, TItem item)
   at System.Collections.ObjectModel.KeyedCollection`2.InsertItem(Int32 index, TItem item)
   at Microsoft.Dynamics.AX.Framework.Services.Client.TableMetadata.InitializeDefaultLookupFields(TableMetadata table)
   at Microsoft.Dynamics.AX.Framework.Services.Client.TableMetadata.PostCreateInitialization(TableMetadata table)
   at Microsoft.Dynamics.AX.Framework.Services.Metadata.Caching.TripleKeyedItemCache`4.<>c__DisplayClassc.<GetItemInternal>b__b()
   at Microsoft.Dynamics.AX.Framework.Services.Metadata.Caching.CacheBase.CacheRead(ICacheReadArgs cacheReadArgs, Action tryReadAction, Action readThroughAction)
   at Microsoft.Dynamics.AX.Framework.Services.Metadata.Caching.TripleKeyedItemCache`4.GetItem(TMainKey key)
   at Microsoft.Dynamics.AX.Framework.Services.Client.TableMetadata.PostCreateInitialization(TableMetadata table)
   at Microsoft.Dynamics.AX.Framework.Services.Metadata.Caching.TripleKeyedItemCache`4.<>c__DisplayClassc.<GetItemInternal>b__b()
   at Microsoft.Dynamics.AX.Framework.Services.Metadata.Caching.CacheBase.CacheRead(ICacheReadArgs cacheReadArgs, Action tryReadAction, Action readThroughAction)
   at Microsoft.Dynamics.AX.Framework.Services.Metadata.Caching.TripleKeyedItemCache`4.GetItem(TMainKey key)
   at Microsoft.Dynamics.AX.Framework.Services.Client.TableMetadata.PostCreateInitialization(TableMetadata table)
   at Microsoft.Dynamics.AX.Framework.Services.Metadata.Caching.TripleKeyedItemCache`4.<>c__DisplayClassc.<GetItemInternal>b__b()
   at Microsoft.Dynamics.AX.Framework.Services.Metadata.Caching.CacheBase.CacheRead(ICacheReadArgs cacheReadArgs, Action tryReadAction, Action readThroughAction)
   at Microsoft.Dynamics.AX.Framework.Services.Metadata.Caching.TripleKeyedItemCache`4.GetItem(TMainKey key)
   at Microsoft.Dynamics.AX.Framework.Services.Client.TableMetadata.PostCreateInitialization(TableMetadata table)
   at Microsoft.Dynamics.AX.Framework.Services.Metadata.Caching.TripleKeyedItemCache`4.<>c__DisplayClassc.<GetItemInternal>b__b()
   at Microsoft.Dynamics.AX.Framework.Services.Metadata.Caching.CacheBase.CacheRead(ICacheReadArgs cacheReadArgs, Action tryReadAction, Action readThroughAction)
   at Microsoft.Dynamics.AX.Framework.Services.Metadata.Caching.TripleKeyedItemCache`4.GetItem(TMainKey key)
   at Microsoft.Dynamics.AX.Framework.Services.Client.TableMetadata.PostCreateInitialization(TableMetadata table)
   at Microsoft.Dynamics.AX.Framework.Services.Metadata.Caching.TripleKeyedItemCache`4.<>c__DisplayClassc.<GetItemInternal>b__b()
   at Microsoft.Dynamics.AX.Framework.Services.Metadata.Caching.CacheBase.CacheRead(ICacheReadArgs cacheReadArgs, Action tryReadAction, Action readThroughAction)
   at Microsoft.Dynamics.AX.Framework.Services.Metadata.Caching.TripleKeyedItemCache`4.GetItem(TMainKey key)
   at Microsoft.Dynamics.AX.Framework.Services.Client.QueryDataSourceMetadataExtensions.SFKeyExpansionHelper(QueryDataSourceMetadata dataSource, SurrogateForeignKeyReplacementFieldSet replacementFieldSet, ILookup`2 displayedFieldsByDataSourceName, Stack`1 visitedTables, SurrogateForeignKeyRelplacementStatus status)
   at Microsoft.Dynamics.AX.Framework.Services.Client.QueryDataSourceMetadataExtensions.ExpandSurrogateForeignKeys(QueryDataSourceMetadata dataSource, SurrogateForeignKeyReplacementFieldSet replacementFieldSet, ILookup`2 displayedFieldsByDataSourceName, Stack`1 visitedTables, SurrogateForeignKeyRelplacementStatus status)
   at Microsoft.Dynamics.AX.Framework.Services.Client.QueryDataSourceMetadataExtensions.ExpandSurrogateForeignKeys(QueryDataSourceMetadata dataSource, SurrogateForeignKeyReplacementFieldSet replacementFieldSet, ILookup`2 displayedFieldsByDataSourceName, Stack`1 visitedTables, SurrogateForeignKeyRelplacementStatus status)
   at Microsoft.Dynamics.AX.Framework.Services.Client.QueryMetadataExtensions.ExpandSurrogateForeignKeys(QueryMetadata queryMetadata, SurrogateForeignKeyReplacementFieldSet replacementFieldSet, IEnumerable`1 displayedFields)
   at Microsoft.Dynamics.AX.Framework.Services.Client.Forms.UIHelpers.CreateQueryForDisplay(QueryMetadata queryMetadata, IEnumerable`1 displayedFields)
   at Microsoft.Dynamics.Framework.Portal.UI.WebControls.AxListPageContentArea.get_ListPageDisplayQuery()
   at Microsoft.Dynamics.Framework.Portal.UI.WebControls.AxListPageContentArea.InitializeListPageContentArea()
   at Microsoft.Dynamics.Framework.Portal.UI.WebControls.AxListPageContentArea.OnLoad(EventArgs e)

--------------------------------------------------------------------

And if i am refreshing the EP page, i get unhandled exception and event viewer shows an error as

---------------------------------------------------------------------

An unhandled error has occurred. To view details about this error, enable debugging in the web.config file or view the Windows event logs.

Object reference not set to an instance of an object.

Microsoft.Dynamics.Framework.Metadata.AX

   at Microsoft.Dynamics.AX.Framework.Services.Client.QueryMetadataExtensions.<CreateDisplayQuery>b__23(QueryDataSourceMetadata d)
   at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()
   at System.Linq.Lookup`2.Create[TSource](IEnumerable`1 source, Func`2 keySelector, Func`2 elementSelector, IEqualityComparer`1 comparer)
   at Microsoft.Dynamics.AX.Framework.Services.Client.QueryMetadataExtensions.CreateDisplayQuery(QueryMetadata queryMetadata, IEnumerable`1 displayedFields, Boolean trimViews)
   at Microsoft.Dynamics.AX.Framework.Services.Client.Forms.UIHelpers.CreateQueryForDisplay(QueryMetadata queryMetadata, IEnumerable`1 displayedFields)
   at Microsoft.Dynamics.AX.Framework.Services.Client.InfoPartMetadata.GetDisplayDataAccessObjectMetadata()
   at Microsoft.Dynamics.Framework.Portal.UI.WebControls.AxDataAccessObjectDataSource.EnsureDataAccessObject()
   at Microsoft.Dynamics.Framework.Portal.UI.WebControls.AxDataAccessObjectDataSource.get_DataAccessObject()
   at Microsoft.Dynamics.Framework.Portal.UI.WebControls.AxInfoPart.InitializeDataSourcePaging()
   at Microsoft.Dynamics.Framework.Portal.UI.WebControls.AxInfoPart.CreateChildControls()
   at System.Web.UI.Control.EnsureChildControls()
   at Microsoft.Dynamics.Framework.Portal.UI.WebControls.AxPreviewPaneBuilder.Build()
   at Microsoft.Dynamics.Framework.Portal.UI.WebControls.AxPartContentArea.CreateChildControls()
   at System.Web.UI.Control.EnsureChildControls()
   at Microsoft.Dynamics.Framework.Portal.UI.WebControls.AxPartContentArea.OnLoad(EventArgs e)
   at System.Web.UI.Control.LoadRecursive()
   at System.Web.UI.Control.LoadRecursive()
   at System.Web.UI.Control.LoadRecursive()
   at System.Web.UI.Control.LoadRecursive()
   at System.Web.UI.Control.LoadRecursive()
   at System.Web.UI.Control.LoadRecursive()
   at System.Web.UI.Control.LoadRecursive()
   at System.Web.UI.Control.LoadRecursive()
   at System.Web.UI.Control.LoadRecursive()
   at System.Web.UI.Control.LoadRecursive()
   at System.Web.UI.Control.LoadRecursive()
   at System.Web.UI.Control.LoadRecursive()
   at System.Web.UI.Control.LoadRecursive()
   at System.Web.UI.Control.LoadRecursive()
   at System.Web.UI.Control.LoadRecursive()
   at System.Web.UI.Control.LoadRecursive()
   at System.Web.UI.Control.LoadRecursive()
   at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

------------------------------------------------------------------

Same issue is there on Purchase order List page.

This error is occurring in multiple environments including Production server.

Error goes away on development system EP page, if i refresh cache(AOD,data.dictionary) from EP default page and then i open purchase landing page, it throws an 1st error of key already exist and then if refreshing it works for both purchase order and purchase requisition. 

But if i am landing to purchase requisition page after refresh, it throws an 1st error and 2nd error afterwards on reload.

Error again appears if IIS is reset or on next day.

I did full compile,full CIL and sync but no luck.

*This post is locked for comments

I have the same question (0)

Under review

Thank you for your reply! To ensure a great experience for everyone, your content is awaiting approval by our Community Managers. Please check back later.

Helpful resources

Quick Links

Responsible AI policies

As AI tools become more common, we’re introducing a Responsible AI Use…

Abhilash Warrier – Community Spotlight

We are honored to recognize Abhilash Warrier as our Community Spotlight honoree for…

Leaderboard > 🔒一 Microsoft Dynamics AX (Archived)

#1
Community Member Profile Picture

Community Member 2

#1
Guy Terry Profile Picture

Guy Terry 2 Moderator

#1
Martin Dráb Profile Picture

Martin Dráb 2 Most Valuable Professional

Last 30 days Overall leaderboard

Featured topics

Product updates

Dynamics 365 release plans