The other day we had an interesting discussion about how to seal of entities from other espaces.
Ofcourse the way to go is make the Entity private (set Public to No)
Any public action that will expose that entity will make TrueChange go red obviously.
So you need to make a structure.
However, you can always include the <Entity> Identfier in the structure without any hassle.
This means in the consuming espace you will see you have the "fill/use" the <entity> Identifier without actually knowing the real entity.

My question is simple, why is it possible to expose the <Entity> Identfier,even if the entity itself is private?

I guess it's useful, so you can enforce a strong typing, even if you don't need to reference the entity itself. But you still have the option to expose it as an integer or text (whatever is the underlying data type on the entity identifier).

but why expose it as an identifier? I find it a bit vague :)
Tecnically you can't expose them directly.
They only appear on other espaces if you have another public action, entity or structure with attributes of that type.

So if you really don't want it to be known just fix your aplication architecture to take it into account, removing them from other public elements.
(Note that this is easily done if you make the entity public, add it on the consumer espace and then do a find usages to find what is actually using it.)

If nothing is using the entity identifier it will disappear from the dropdown and cant be choosen again.

João Rosado