Hi,
Today I helped a user who had created a ton of items via WS where a colon got into the French name (in DTreeMultilingual, not DTree) where I had to rename the French to get rid of the colon (:) and replace it with '_'. OK, that's done. I however further noticed we have about 900 items in our system (most in the recycle bin but a few in people's personal WS) where there is a colon in the name. This appears mostly for email messages but also regular documents.
What has me perplexed is that any node creation event goes through llNode.NodeAlloc() which almost always calls LLNode.ChecknewItem() on the LLNode object for the parent which in turn ultimately calls $LLIAPI.NodeUtil,Checkname() not just on the System default language, but on any additional metadata language passed in. And the only condition of $LLIAPI.NodeUtil.Checkname() (which is called by the former), is that the name not contain a colon.
The only way past this logic is either a) the parent LLNode object bypasses the check (you could make an argument for email folders, maybe) or if instead of a parent ID, you are passed in a dapiCtx, in which case, the check is bypassed altogether.
I can't believe that either is happening, and the cases I've encountered are for objects created in a folder in a Personal WS, and objects created in the Enterprise WS by web services (both should call the default NodeAlloc method with a proper parent passed in).
Are there any scenarios I've missed? is this perhaps a known bug in CS 10.0 U 2016-06?
Thanks in advance
-Hugh Ferguson