ATG Confirm Password Bug in ProfileFormHandler

Long-billed Curlew (Numenius americanus) birds on Morro Strand State Beach during a golden sunset. Also characteristic of Montana de Oro area to the south. | Flickr

Long-billed Curlew birds by mikebaird

Hi ATG Support,

I noticed a bug in how ATG’s ProfileFormHandler (ATG Java API) handles confirm passwords when creating a new profile.  Note that this bug happens only if you persist anonymous profiles.

During registration when you call handleCreate it calls createProfileItem and then updateProfileAttributes. In updateProfileAttributes it checks if the password matches the confirm password. If they don’t match it adds a form exception.

However at this point it has updated the profile attributes including the login. Therefore after the user sees the error about the passwords not matching, corrects it and resubmits the form she will see an error that the login is already taken.

The work around is to set creatNewUser to true but since the default value is false most developers will see this bug.

Update 12-22-2010: ATG confirmed this is a bug.

Hi Frank,

Thanks for the information and details. I’m glad that using ProfileFormHandler.createNewUser=true works for you. You might want to periodically check the size of the dps_user table and purge the anonymous profiles, if needed.

For your reference, I have created PR#DPS-167714 “ProfileFormHandler Confirm Password” to track the issue.

Kind Regards,
Kristi Coleman

How to Add Products to Categories using Content Groups

Typically after you create a category in your catalog you then add products to the category.  The simple way to do that in ATG eCommerce is to use the ACC and add products to the child products property of the category.  However there is another way.

In the ATG Commerce Guide to Setting Up a Store documentation you can see in the Viewing the Product Catalog section that a category can have child products but also child product groups.

Product Catalog

Child product groups are actually content groups which are described in the Creating Content Groups chapter of the ATG Personalization Guide for Business Users.

Targeting > Profile and Content Groups window

Though the documentation shows a content group composed of features you can easily create a content group using the ProductCatalog as a content source and product as a content type.

To create a content group follow the steps in the ATG documentation for Creating New Content Groups except use an item from the ProductCatalog when specifying the Content Type.  Then create the targeting rules for this Content Group.  Now you can specify this group in the Child products (group) property of a category.

Slot not global warnings in ATG logs

In the ATG logs you may see warnings about a slot being session scoped not global.

[STDOUT] Invalid attempt to resolve component /atg/registry/Slots/ActivationFlowSlot in scope global. It is defined in scope session 

Most of the time you can safely ignore these warnings because these warnings are most likely coming from the ACC.

When browsing slots using the ACC the ACC tries to look up the slot as a global component and complains it’s a session scoped component.  In other words it’s an ACC bug that will probably never be fixed since ATG is moving away from the ACC.

Cannot Create New ATG Scenario

Though I have a distaste for scenarios on occasion there will be a time when I want to create a new scenario. On such an occasion I still start up the ACC, go to Scenarios > Scenarios and discover I can’t create a scenario because the New Scenario box is grayed out.

The issue is often because the process editor server is configured incorrectly. ATG documents how to configure the process editor server.

For example today I found I could not create a new scenario. After putting this scenarioManager.xml in localconfig/atg/scenario and then restarting ATG I was able to create new scenarios again.

<?xml version="1.0" encoding="ISO-8859-1" ?>
  <server-name xml-combine="replace">

Note that the server name must be the same as the one found at /atg/dynamo/service/ServerName.serverName. For more information about the atg.service.ServerName class, see Referring to Dynamo Servers in the Nucleus: Using Nucleus section of the ATG Programming Guide.