How to import to a numbered list from a numbered list in a different model?
How do you import to a numbered list from a numbered list in a different model - using the 'connect to Anaplan model' function? The aim of this is to store the lowest level of my organisation's hierarchy as a numbered list - this is needed as some of the organisation unit names are duplicates.
At the moment, I get the error message "Cannot add new entities to numbered list when matching involves name" when trying to import.
My intent is to use this method in conjunction with a method for sharing lists between models (explained here) to create a data hub that contains my organisation's hierarchy which can then be pushed out to several models. This will allow me to maintain one master list instead of several.
Also as a side note: in our organisation, we create and manage our hierarchy within Anaplan rather than using external uploads to Anaplan from other sources.
Best Answer
-
Hi All,
Thanks for your help on this!
I've come up with a solution to the problem. As I want to have one master list in a data hub model that pushes out to other models I need to be able to preserve the unique ID of the data hub list so that if any list items are edited (e.g. display name changes), any associated data remains. This will also preserve the ability to add/remove list items.
In my master model I created a module with my numbered list with a line item called "UID", text formatted. I concatenated "UID" with the NAME function to get the Anaplan numbered list name (i.e. the #1, #2, #3 name not the display name). The end formula looked like this: "UID" & NAME(ITEM('Organisation L3')).
In my child model I then created a numbered list and set up my import, for the numbered list, by connecting to another Anaplan model, the data hub model in this case. I connected to the module previously created (not the list). I removed the source from the Name property field and mapped my UID line item to the code property field. I then set the import to be unique by code only and ran the import. I found that if I did not concatenate "UID" to the default Anaplan numbered list names the import would fail - presumably "#" & NUMBER formats are reserved for the system.
This method aligns the numbered lists in my data hub model to the lists in my child models, a 1 to 1 relationship that won't change if the list item is edited AND will enable me to add and remove items in numbered lists within my data hub model and push any hierarchy updates to other models.
The key benefit to this is that I can have one hierarchy stored in one model. This will be especially useful for my use case as I have a number of models which all use the same hierarchy.
2
Answers
-
The best way to achive this is the ensure that you have a code for the source list. Then when you import the list details to the target you will ensure that the two lists are in sync.
2 additional points:
1. If the target list doesn't contain a code (either because of the initial data inport, or becasue you have used the "Create" action, it is always worth creating an internal process to create a code. Numbered lists are so much easier to manage if they contain a code.
2. We don't recommend using the list directly as the import source. It is better to have a module view containing the required attributes because this can be filtered and the view can be configured only to contain the required field (you cannot do either of these directly from a list)
I hope this helps
David
3 -
Hi @NicolasCadier
In addition to DavidSmith's comment, you can refer to this topics in Anapedia : https://help.anaplan.com/anapedia/Content/Import_and_Export/Import_Data_into_Models/Connect_to_a_Model_to_Import_Data.html
Hope it will help.
Gaëtan0 -
Is there a way to get Anaplan to generate a unique code for each item within the list? As I understand it, this is effectively what happens for the name property for each item in the list. (I.e. the first item of each numbered list is #1, second is #2, third #3, etc. etc.)
Also, is there a way to formulaically calculate the code property of a list?
0 -
What you are wanting to do can be done, but not in the way you are thinking or at least not the way I am reading your question (upon entry).
- Anaplan does create a unique "key", the # then number, but you can't bank on that. When a list item(s) get deleted, those # numbers are now gone and can't be used. For example, let's say you have 5 members in a list ( #1, #2, #3, #4, and #5). If you delete all of the members, and then reimport them, the numbers will now be #6, #7, #8, #9, and #10, so no reusing the older numbers.
- When using a numbered list, it is very important to use a code, either manufactured from the source system (preferred) or one that is created in Anaplan. Since this can not be done via Anaplan Connect or via our Actions, this will need to be done via a module where your concatenate several fields together with a delimiter, and then update the list with the code. Why is this code so important? If you don't have a code on a numbered list, getting data from the list (using lookup's) is impossible because you will never know what the "hidden" number is (the #number). Please note, when you are using one of our ETL partners, like Informatica, Snaplogic, Dell Boomi, or Mulesoft, it is possible to create this "code" using their formula's and transformation processes.
So, if you have don't have the code, the next question is "How do I update the numbered list". Simply create a module using that list in the Applies To. Create a line item using formula's to create the code (100_200_300) and then reimport that to the list using the member in the first column of the Action and making sure the Name (#ID) is used under the "Items unquely identified by" as seen below.
Hope this helps,
Rob
1 -
It sounds like you don't have a code, so I would use a combination of properties - including the name of the parent organization item - to identify each item in the numbered list.0
-
If this hierarchical data, then I would not advise this as the code for the hierarchy needs to have meaning. As stated above, the code in a numbered list is everything, allowing you to figure out where you are in a list. If you have a random number, from the data hub, which means nothing, how are you going to do a finditem() in a module to understand which member of the list you are looking at?
As stated earlier, it is best practice to have the code be meaningful, so you can always get back to it. For example, if my code is 100_200_300, that could mean the base members' code is 300 (which could point to a flat list of cost centers), 200 is the parent of 300 (which points to a flat list of countries), and 100 is the parent of 200 (which can be pointed to a flat list like region).
Hope this helps,
Rob
1 -
Hi Rob, for my use case the code needs to be static. All it needs to do is to match one org item in one list to an org item in another list. If both items are using the code UID#384 then if I change the parent this will update in both lists. Does that make sense?
Tying it down to a particular name could be detrimental if some of the attributes changed later on (as the name would be outdated!). If the code dynamically updated, then any data (e.g. P&L data) stored against that org unit would be lost if the org unit moves.0 -
We might be saying the same thing if the Org "flat" list is using the same code or "UID".
Rob
0 -
hey nicolas
really wanted to thank you for the formula you referred in your post name(item()). i was really looking something to extract UID of numbered list. got it, many thanks.
0