Transform authors have to define URNs when defining new cross-language transforms.
See here for documentation related to this: https://beam.apache.org/documentation/programming-guide/#create-x-lang-transforms
Some example URNs used today.
Kafka read: "beam:external:java:kafka:read:v1"
Kafka write: "beam:external:java:kafka:write:v1"
Currently this URN is defined by the cross-language transform author (or whoever coverts a given transform to a cross-language transform). They can choose arbitrary URNs.
This is OK as long as we only have few cross-language transforms and as long as we do not deploy transforms with conflicting URNs in the same expansion service but as usage of cross-language transforms increase we could run into conflicts due to this.
We should define a convention so that a cross-language transform author can define a URN that will not run into URNs selected by other cross-language transform authors.