When Importing Data or Opening a Nutrient Profile, Receive the Following Error, "Item has already been added. Key in dictionary:" (Doc ID 2035729.1)

Last updated on MARCH 08, 2017

Applies to:

Oracle Agile Product Lifecycle Management for Process - Version 6.1.0.3 and later
Information in this document applies to any platform.

Symptoms

When attempting to import Custom Sections, Extended Data and User Groups data, some of the data is produced an error (see full error message below) that the "Item has already been added. Key in dictionary."

Note that this same error may appear also when attempting to open a Nutrient Profile.

ERROR

Exception: System.Web.HttpUnhandledException: Exception of type 'System.Web.HttpUnhandledException' was thrown. ---> System.ArgumentException: Item has already been added. Key in dictionary: 'WPPLayer4MI' Key being added: 'WPPLayer4MI'
at System.Collections.Hashtable.Insert(Object key, Object nvalue, Boolean add) at System.Collections.Hashtable.Add(Object key, Object value)
at Xeno.Prodika.ExtendedAttributes.ExtendedAttributeTypeBOsBulkLoader.AddToTypeBOsByAttributeId(IExtendedAttributeTypeBO extendedAttributeTypeBO)
at Xeno.Prodika.ExtendedAttributes.ExtendedAttributeTypeBOsBulkLoader.CreateEATypeBOs() at Xeno.Prodika.ExtendedAttributes.ExtendedAttributeTypeBOsBulkLoader.ProcessRootObjects()
at Xeno.Prodika.Common.BulkLoaderBase.Load() at Xeno.Prodika.ExtendedAttributes.ExtendedAttributeServiceCacheEntries.LoadExtendedAttributes()
at Xeno.Prodika.ExtendedAttributes.ExtendedAttributeServiceCacheEntries..ctor(IServiceContext serviceContext)
at Xeno.Prodika.ExtendedAttributes.ExtendedAttributeService.CreateCacheEntries() at Xeno.Prodika.Caching.DomainCache.DomainCacheSlotProxy..ctor(String cacheName, String cacheID, CreateCacheDataDelegate cacheDataDelegate, UpdateCacheDataDelegate updateCacheDataDelegate)
at Xeno.Prodika.Caching.DomainCache.DomainCacheManager.Create(String cacheName, String cacheID, CreateCacheDataDelegate cacheDataDelegate, UpdateCacheDataDelegate updateCacheDataDelegate)
at Xeno.Prodika.Caching.ConcreteSlots.ObjectCacheSlot..ctor(String cacheName, String cacheID, CreateCacheDataDelegate createCacheDataDelegate, UpdateCacheDataDelegate updateCacheDataDelegate) at Xeno.Prodika.ExtendedAttributes.ExtendedAttributeService.Initialize() at Xeno.Prodika.ExtendedAttributes.ExtendedAttributeService.get_CacheEntries()
at Xeno.Prodika.ExtendedAttributes.ExtendedAttributeService.GetExtendedAttributeTypeBO(String Pkid)
at Xeno.Prodika.ExtendedAttributes.ExtendedAttributesFacade.GetManagerByAttributeTypePkid(String pkid)
at Xeno.Prodika.ExtendedAttributes.BusinessObjects.ExtendedAttributesCollection.CreateBusinessObject(IXDataObject dataObject)
at Xeno.Prodika.BusinessObjects.Common.BusinessObjectDOListBase.Initialize(IXDataManager dataManager, IXDataObjectCollection dataObjects, IXDataObjectFilter dataObjectFilter)
at Xeno.Prodika.ExtendedAttributes.BusinessObjects.ExtendedAttributesCollection..ctor(IExtendedAttributesFacade facade, IExtendedAttributesContainer extAttrContainer)
at Xeno.Prodika.GSMLib.BusinessObjects.Impl.NutrientProfileBO.get_ExtendedAttributes()
at Xeno.Web.UI.Common.Controls.ExtendedAttributesControls.ExtendedAttributeList.SetDataSource(IExtendedAttributesBOContainer extAttrContainer)
at prodika.frmNutrientProfile.InitializeExtendedAttributeListControl()
at prodika.frmNutrientProfile.initializeFormControls() at prodika.XManagedSpecBaseForm.OnLoad(EventArgs e)
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
--- End of inner exception stack trace ---
at System.Web.UI.Page.HandleError(Exception e)
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
at System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
at System.Web.UI.Page.ProcessRequest()
at System.Web.UI.Page.ProcessRequestWithNoAssert(HttpContext context)
at System.Web.UI.Page.ProcessRequest(HttpContext context)
at ASP.baseforms_frmnutrientprofile_aspx.ProcessRequest(HttpContext context)
at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)

 

EXPECTED BEHAVIOR

It should not matter if some of the data already exists and the data should be overwritten or added to current data.

STEPS TO REPRODUCE

1. Exporting data from source server to target server.
2. Getting errors like, "Item has already been added. Key in dictionary:" (for example, receiving error on a nutrient profile).
3. As a workaround, re-importing the data appears to work.



Cause

Sign In with your My Oracle Support account

Don't have a My Oracle Support account? Click to get started

My Oracle Support provides customers with access to over a
Million Knowledge Articles and hundreds of Community platforms