When hot linking a Module file into another file, the necessary, but not all attributes (layers, line types, complex profiles, etc...) of the source file will be appended to the attributes of the host file. This means that if any element in the hotlink module uses an attribute that is not available in the host file, then ARCHICAD will add the new attribute to the host file.
If an attribute with the same name already exists in the host file, then elements in the hotlink module will use the existing attribute.
If you create a new attribute in the source file, it will be imported into the host file when you first update the hotlink. But the new attribute will be carried over only if there is an element in the source file using that attribute. Note, however, that if you modify an existing attribute in the source file, it will NOT change in the host file when you update the hotlink. To change the existing attribute in the host file you need to use the Attribute Manager and have to overwrite the host file's attribute with the properties of the source file's attribute. This is because ARCHICAD identifies attributes by name and ID only, and not by its properties.
As an exception to attributes, layer combinations and pen sets are not imported with hotlinks. This is because layer combinations are only meaningful in the context of a given layer set, and since not all layers are imported with the hotlink, importing the layer combination is of little practical use. The same thing is true for pen sets: pen sets are combinations of pens with different properties (color, pen weight and description). You can import a pen set only through Attribute Manager. Since you cannot create a new pen (there are 255 of them in each ARCHICAD project), you can only change their properties within a certain pen set. So if you change a property of a pen in the source file, it won't change the same property of the same pen in the host file as described above. To achieve this you need to save a Pen Set in the source file then import it into the host file via Attribute Manager.
Name or ID?
Every attribute (except pens) has a name and an ID. It might happen that both the host and the linked file has an attribute with the same name and/or ID. In this case - as a general rule - the name determines what will happen: If the name of the attribute to be appended already exists in the host file, then the attribute will not be appended to the host file, and elements in the hotlinked module will use the attribute already defined in the host file.
Example: File "A" has a Surface named "Wood" which has a light pine texture associated with it. You hotlink file "B", which also has a Surface called "Wood" with a dark oak texture. The hotlinked elements that come from file "B" will have light pine appearance in file "A".
So, when an element "looks different" in the host file and the source file, this is probably the reason.
What's the deal with IDs?
Assume you have a fill with ID#31 with the name "Tiles" in the host file, and you have a fill with the same ID#31, but with name "Concrete" in the Hotlinked file. In this case, the "Concrete" fill will be appended to the host file's attributes, but since the ID#31 is already taken, it will get a new ID (the next available number in the host file, say #62). The hotlinked elements using that fill will then refer to this attribute (#62, Concrete). This does not matter much as far as display is concerned, elements will look as expected (with the "Concrete" fill).
However, this might be a slight inconvenience when it comes to using the Attribute Manager. Attribute manager has two functions: "Append" and "Overwrite".
Append will copy over the attribute from one file to the other, and assign an unused ID to the attribute.
Overwrite will overwrite an attribute of one file with the attribute in the other file that has the same ID.
Example: You have "#31-Tile" in file "A" and "#31-Concrete" in file "B":
Appending attributes from "B" to "A" will create a new fill: "#62-Concrete"
Overwriting attributes from "B" to "A" will delete "#31-Tile" and replace it with "#31-Concrete"
It's not hard to see why it quickly becomes an issue if you have the same attribute with different IDs in different files: Maybe different users modified how "Concrete" looks in different files, an you just want to standardize it. But if "Concrete" has a different ID in every file, then it's pretty hard to achieve that using the Attribute Manager. For this reason, it is highly recommended to keep a unified set of attributes for a project consisting of several files. Have a good template, and limit who can modify attributes.
Keeping Attributes consistent across multiple files
If you want to handle the attributes uniformly over a set of files, you can keep a designated "attributes.PLN file", in which all the attributes are created. This file will not hold any model data. When you need to modify attributes, you would do that in the "attributes.PLN" and then use the Attribute Manager to overwrite the changed attributes in all the other files. This is time consuming, so it is essential that you start off with a good template with most of the attributes pre-defined before you even start the project.
Unifying Attributes of a file set
What if you already have a set of files with different sets of attributes? This is a possible way to unify/standardize attributes:
Create the "attributes.PLN" file with using the attribute set of one of the files (File/New/"Use Latest Project Settings")
Using the Attribute Manager, append all of the attributes from all of the other projects to the "attributes.PLN". Now you have a file that has all the attributes you will ever need
Using the Attribute manager overwrite the attributes of all the files from the "attributes.PLN"
Hotlink the "attributes.PLN" file into all the other files, and from this point on, manage all the attributes in this file
Please note that a new attribute will only be added to the host file's attribute set if there is an element in the source file ("attributes.PLN") associated with the new attribute. If you don't want elements of "attributes.PLN" appear in the host file, you don't have to hotlink it in the host file (step 4). You can always keep attributes up-to-date in "attributes.PLN" and follow up with modifications in all the other files of the file set using the Attribute Manager in these files.
Please also note one more fact that was mentioned above in this article: "if you modify an existing attribute in the source file, it will NOT change in the host file when you update the hotlink. To change the existing attribute in the host file you need to use the Attribute Manager and have to overwrite the host file's attribute with the properties of the source file's attribute. This is because ARCHICAD identifies attributes by name and ID only, and not by its properties."