As part of an Account Manager for B2C Commerce infrastructure upgrade, there will be changes related to the Account Manager Login UI page. These changes take effect with the July release of Account Manager (AM). The first change is related to the URL path, and the second is related to changes in the attribute values used in the Account Manager UI Login page.
1. The URL Path to Account Manager UI Login page will change, but domain name stays the same.
You can continue to use https://account.demandware.com/ to access the Account Manager UI. If you have saved a link to the AM UI page in your browser that includes /dwsso/XUI/ in the path (for example, https://account.demandware.com/dwsso/XUI/*), that link will no longer work. You can use only https://account.demandware.com/ to access the AM UI page.
Note: All the URLs for OAuth flows starting with /dwsso/oauth2/* & /dw/oauth2/* will continue to work
When: This change will be effective starting with the July release of Account Manager
2. Changes to attribute values used in Account Manager UI Login page
If you don't use attribute values in the Account Manager Login UI page for any automation or in any custom tools, you can ignore this change. However, if you use attribute values used in the Account Manager Login UI page, please note these changes.
a. In the AM Login page the User Name, attribute value “id” is changing from "idToken2" to "username". To avoid any impact from this change, use the “placeholder” attribute. Its value doesn’t change. For our internal automation we use “placeholder” attribute as well.
Current AM Login Page code for User Name<input type="text" id="idToken2" name="callback_1" value="" data-validator="required" required="" data-validator-event="keyup" class="form-control input-lg" placeholder="User Name" autofocus="">
New AM Login Page code for User Name<input id="username" name="username" value="" type="text" autocomplete="username" autofocus="" aria-invalid="" placeholder="User Name">
b. In the AM UI Login page the Password, attribute value “id” is changing from "idToken2" to "password". To avoid any impact from this change, use the “placeholder” attribute. Its value doesn’t change. For our internal automation we use “placeholder” attribute as well.
Current AM Login Page code for Password<input type="password" id="idToken2" name="callback_1" value="" data-validator="required" required="" data-validator-event="keyup" class="form-control input-lg" placeholder="Password" spellcheck="false" autofocus="">
New AM Login Page code for Password<input id="password" name="password" value="" type="password" autocomplete="current-password" aria-invalid="" placeholder="Password">
c. In the AM Login UI page the click “LOG IN” button, attribute value of “id” is changing. To avoid any impact from this changed, use the “value” attribute. Its value doesn’t change. For our internal automation we use “placeholder” attribute as well.
Current AM Login Page code for Login Button<input id="loginButton_0" name="callback_3" type="submit" role="button" index="0" value="Log in" class="btn btn-lg btn-block btn-uppercase btn-primary">
New AM Login Page code for Login Button<input tabindex="4" class="btn-primary" name="login" id="kc-login" type="submit" value="Log in">
Table of what is changing in Account Manager Login Page & what you must use for any automation
| AM Login Page | Current Attribute value | New Attribute value (DO NOT USE) | MUST USE for any automation |
| User Name | id="idToken2" | id="username" | placeholder="User Name" |
| Password | id="idToken2" | id="password" | placeholder="Password" |
| Log In button | id="loginButton_0" | id="kc-login" | value="Log in" |
When: This change will be effective starting July release of Account Manager
Impact:
This table lists sample codes. Do not use the “id” attribute and its value in the Account Manager UI Login page for any automation and tools.
| Sample code | Before July release of AM | After July release of AM code marked with ❌ will not work | |
xpath | //input[@id='idToken2'] | ✅ | ❌ |
| //input[@name='callback_1'] | ✅ | ❌ | |
| //input[@placeholder='User Name'] | ✅ | ✅ | |
| //input[@placeholder='Password'] | ✅ | ✅ | |
plain javascript | document.getElementById("idToken2").value | ✅ | ❌ |
| document.querySelector("input[name='callback_1']").value | ✅ | ❌ | |
| document.evaluate("//input[@placeholder='User Name']", document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue.value | ✅ | ✅ | |
| document.evaluate("//input[@placeholder='Password']", document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue.value | ✅ | ✅ | |
jQuery | $("#idToken2") | ✅ | ❌ |
| $("input[name='callback_1']") | ✅ | ❌ | |
| $("input[placeholder='User Name']") | ✅ | ✅ | |
| $("input[placeholder='Password']") | ✅ | ✅ | |
Angular | <input id="idToken2" [(ngModel)]="username"> | ✅ | ❌ |
| <input name="callback_1" [(ngModel)]="username"> | ✅ | ❌ | |
| <input placeholder="User Name" [(ngModel)]="username"> | ✅ | ✅ | |
| <input placeholder="Password" [(ngModel)]="password"> | ✅ | ✅ | |
plain python | from lxml import html tree = html.fromstring(html_content) | ✅ | ✅ |
| el = tree.get_element_by_id("idToken2") | ✅ | ❌ | |
| el = tree.cssselect("input[name='callback_1']")[0] | ✅ | ❌ | |
| el = tree.xpath("//input[@placeholder='User Name']")[0] | ✅ | ✅ | |
| el = tree.xpath("//input[@placeholder='Password']")[0] | ✅ | ✅ | |
| el.attrib['value'] = 'myPersonalValue' | ✅ | ✅ | |
python selenium | driver.find_element(By.ID, "idToken2") | ✅ | ❌ |
| driver.find_element(By.NAME, "callback_1") | ✅ | ❌ | |
| driver.find_element(By.XPATH, "//input[@placeholder='User Name']") | ✅ | ✅ | |
| driver.find_element(By.XPATH, "//input[@placeholder='Password']") | ✅ | ✅ | |
java selenium | driver.findElement(By.id("idToken2")) | ✅ | ❌ |
| driver.findElement(By.name("callback_1")) | ✅ | ❌ | |
| driver.findElement(By.xpath("//input[@placeholder='User Name']")) | ✅ | ✅ | |
| driver.findElement(By.xpath("//input[@placeholder='Password']")) | ✅ | ✅ |
004576800

We use three kinds of cookies on our websites: required, functional, and advertising. You can choose whether functional and advertising cookies apply. Click on the different cookie categories to find out more about each category and to change the default settings.
Privacy Statement
Required cookies are necessary for basic website functionality. Some examples include: session cookies needed to transmit the website, authentication cookies, and security cookies.
Functional cookies enhance functions, performance, and services on the website. Some examples include: cookies used to analyze site traffic, cookies used for market research, and cookies used to display advertising that is not directed to a particular individual.
Advertising cookies track activity across websites in order to understand a viewer’s interests, and direct them specific marketing. Some examples include: cookies used for remarketing, or interest-based advertising.