Hi Roger,
Thanks for taking the time to answer my question.
I try to convince myself using client validation / UX argumentation. The most
common user journey we experience – but maybe that’s not a typical user journey
for all TLDs? – is:
1. A candidate Registrant visits the Registrar website
2. The candidate Registrant checks one or more domains
3. The candidate Registrant repeats step 1 and 2 on 1 or more other
Registrar websites (this is typically what we see in the logs).
4. He selects a Registrar (most of the time, cost is the deciding factor)
5. The candidate Registrant “adds the domain to his cart” on the website of
the selected Registrar
6. He fills in his contact details (Registrant details)
7. The candidate Registrant “buys” the domain (incl. some web hosting)
I understand that the current situation is really bad for Registrars: in step 6
the Registrant fills in his details, everything looks OK, but after selecting
his web hosting etc. he clicks they “buy” button, but it seems his “contact
details” are not valid.
I just don’t see yet why transactions would not be another valid approach to
this problem. At step 6, the Registrar could perform the following actions:
1. Start transactions. Mode = auto-rollback
2. Create contact within transaction (transaction ID as extension)
3. Create domain within transaction (transaction ID as extension).
Registrant id = contact id of previous command
4. Stop transaction. Create contact and Create domain are not persisted as
transaction is auto-rollback.
(Step 1 and 2 and step 3 and 4 could be combined by allowing “start/stop
transaction” as an extension of any command. But that’s just optimization.
Principles are best explained by describing all steps.)
2 to 4 steps seem a lot for a client just to validate a contact, especially in
terms of RTT, but:
1. It all depends on implementation. Using an asynchronous implementation,
the negative effect of 2 commands is negligible.
2. As far as UX is concerned, the final delay is hardly noticed by the
Registrant.
But far more important than this possible disadvantage are the advantages:
1. It’s a simple concept. Everybody knows transactions, rollback, etc.
2. I can imagine as a former developer that implementation is very
straightforward for Registries with a transactional database as backend
3. The use of object extensions is straightforward: just apply them as you
would do otherwise. No key/value concept needed.
4. Last but not least, it has a huge range of possibilities. Example
situations which can be covered by transactions:
* A Registrant wants to either register 2 domains or none if one of the
2 domains can’t be registered for some reason.
* Various Registry policies can be detected early:
i.
Registrants can only register domains using the code points only known to their
country code
ii. A
Registrant from a foreign country (ccTLDs) can only register domains for 1 year
iii. More
general: a Registrant with extension X=Y is only allowed to register a domain
if the domain extension A=B
* It could even be extended to other commands, e.g. testing transfer
requests / domain deletes / … without actually executing them
* …
Not convinced? No hard feelings of course 😊
Kind regards
Pieter
--
Pieter Vandepitte
Product Expert
+32 16 28 49 70
www.dnsbelgium.be<http://www.dnsbelgium.be>
[DNS_PUNT_Belgium_RGB]
From: regext <[email protected]> on behalf of Roger D Carney
<[email protected]>
Date: Tuesday 17 July 2018 at 18:36
To: Registration Protocols Extensions <[email protected]>
Subject: Re: [regext] REGEXT Interim Meeting (2018JUN05) Notes
Good Morning,
Thanks Pieter. I think the real goal of Validate is improved customer
experience.
I don’t think wrapping this in a transaction helps as the error identification
is still occurring to late in the process.
There are quite a few steps in the registration process but today one of the
main issues comes at domain create time (this is basically the last step in the
process along with collecting fees).
Today, validating contacts in terms of their “roles”/contactType
(Registrant/Admin/Tech/etc) occurs at Domain Create time, which is way too late
for a good customer experience. A contact maybe a valid contact for the
Registry but it may not be a valid contact for the “role” /contactType. So what
we want to do is validate this data in as full of context as we can before the
Domain Create / Collection of fees. Getting an error at this point (domain
create) causes a painful customer experience and a lot of additional processing
to occur.
Thanks
Roger
From: regext [mailto:[email protected]] On Behalf Of Pieter Vandepitte
Sent: Friday, July 06, 2018 7:05 AM
To: Registration Protocols Extensions <[email protected]<mailto:[email protected]>>
Subject: Re: [regext] REGEXT Interim Meeting (2018JUN05) Notes
Short question regarding the validate extension:
Isn’t the purpose of the validate extension to do what actually transactions
are meant for? Ultimately the goal of the validate extension is to check
whether a group of commands are possible: create some contacts, link the
contacts to a domain with a specific role.
Why not trying to add a layer on top of EPP to enable transactions? Start a
transaction, add commands to a transaction, execute a transaction with either
commit or auto roll back?
I think that would lead to a much simpler model and could easily deal with
other objects and other extensions.
Thoughts?
Pieter
--
Pieter Vandepitte
Product Expert
+32 16 28 49 70
www.dnsbelgium.be<http://www.dnsbelgium.be>
[DNS_PUNT_Belgium_RGB]
From: regext <[email protected]<mailto:[email protected]>> on
behalf of Roger D Carney <[email protected]<mailto:[email protected]>>
Date: Tuesday 3 July 2018 at 20:04
To: Registration Protocols Extensions <[email protected]<mailto:[email protected]>>
Subject: [regext] REGEXT Interim Meeting (2018JUN05) Notes
Sorry about the tardiness, please enjoy, see everyone in a couple weeks.
Meeting started at 11:06 (UTC-5)
Attendees: Roger Carney, James Gould, Jody Kolker, Jim Galvin
Agenda
1. Validate draft (comments, concerns, implementations)
2. Registry Mapping
a. Continue the lively discussion that was started in London
b. Policy Extension Review: how a server implements an extension, the
SHOULD(s), MAY(s), etc.
Jim Galvin mentioned that co-chairs have been discussing milestones and updated
charter with AD (Adam). Hopefully circulate new Charter to the group next week.
Planning two meetings for IETF-102.
James Gould said that he has started implementing the Validate draft in their
SDK. I mentioned that Nominet has already implemented.
We started out discussing the Validate draft, specifically the questions James
Gould posted to the list Monday June 4, 2018, copied below:
1. I don’t see the purpose of the <validate:cd> element in the check
command.. Initially, I thought the <validate:cd> may support a list within a
list (e.g., <validate:contact>), but that is not the case. There is also a
little confusion with the use of <validate:cd> in both the check command and
response. My recommendation is to remove the <validate:cd> element from the
check command and simply move all its sub-elements to sub-elements of the
<validate:contact> element. [Interim] Interesting for removal, post to list.
2. Is the extension meant to validate the contact details of existing
contacts by contact id and also non-existent contacts based on the contact
details, by contact type and by tld? [Interim] Yes, both scenarios. For “new”
contacts pass all data, don’t try to short cut it with only id, if only id is
passed server will assume it is an existing contact. Change response
validate:cd to include TLD and contact type attributes. Discussed the
preferences of smaller payload versus complicated payload, went with simpler.
Add a new section to 2.0 describing validate:id (Need to have response pass
back contact type and tld).
a. If both cases are true, then wouldn’t you have a choice of referencing
the contact by identifier for an existing contact or defining the contact
attributes for a non-existing contact?
b. Also, what if you desire to use the same contact information for multiple
contact types for a tld?
1. Do you need to replicate the same attributes for each contact type?
[Interim] Simple method would
2. It may be better to define a single contact (existing with contact
identifier) or contact attributes for non-existing with the list of contact
types. I imagine that you always want to validate a contact within the scope
of a tld. [Interim] Interesting, thoughts?
3. I view definition of only the check command and response with many
contacts and with extensibility via the kv elements as somewhat non-optimal.
Other options include:
a. Instead of supporting multiple contacts in an individual command, why not
support the check or info of an individual contact with attribute extensibility
via command / response extensions. Yes, you can validate only a single contact
with multiple target types and a tld at a time, but you get to use existing
contact command / response extensions to define the additional contact
attributes without having to use key / value pairs. [Interim] One goal is to
pass in multiple contacts and validate as a whole
b. Create a validate command / response extension of the contact mapping
that extends the contact create to function as a no-op with the additional
attributes used to validate usage of the contact (e.g., object - domain,
contact types, tld), which would define a validate contact validate create
command. The contact info could have been extended by the validate extension
to function as a validate usage command with the usage attributes consistent
with the contact validate create command (e.g., object – domain, contact types,
tld). In this case, the contact commands can be directly extended by the
validate extension. [Interim] So does key/value make sense here. Can this
validate extension be able to be extended with other extensions (e..g. registry
has a VAT extension instead of this)?
4. Each element needs to be fully described.. I include some examples below:
a. <validate:contact> element does not define the required “contactType” or
“tld” attributes. [Interim] Add more descriptions
b. There is no description of any of the <validate:cd> sub-elements in the
check command or response. [Interim] Add more descriptions
5. Wouldn’t be better to include a required “valid” attribute in the check
response <validate:cd> element with an optional reason and reason language
similar to the domain check response? I’m not sure if there is a real need to
define a whole list of validity errors using the list of <validate:kv>
elements. It may be good enough to short circuit the validation by simply
saying yes or no and if no a human readable reason. There would be no need for
the <validate:response> element or the <validate:kv> elements. [Interim]
Should the response look more like a check response (result, and free form text
response if invalid)? I like the draft format better but I understand the
consistency part
6. I don’t recommend directly referencing the
urn:ietf:params:xml:ns:contact-1.0 elements, since it adds a direct dependency
to inclusion of the contact XML schema and namespace for a subset of the
elements that are really specific to the validate mapping. I would prefer for
the validate XML schema to stand on its own by only referring to epp and
eppcom, with no cross references to contact. This would mean copying and
pasting elements directly from the contact XML schema into the validate XML
schema, which is an inconvenient, but makes it easier to implement. [Interim]
There has been discussion on list on this topic, continued discussion will be
good.
We did not make it to the Registry Mapping discussions.
_______________________________________________
regext mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/regext