Wednesday 12 October 2016

ATG | Persist price information for incomplete orders

By default ATG won't persists price information for incomplete orders. If you print incomplete order from dyn/admin, you won't get price information.

Incomplete Order without price information :
========================================================================= 
------ Printing item with id: o120001 
<add-item item-descriptor="order" id="o120001"> 
<set-property name="description"><![CDATA[o120001]]></set-property> 
<set-property name="relationships"><![CDATA[r30001]]></set-property> 
<set-property name="commerceItems"><![CDATA[ci3000001]]></set-property
<set-property name="shippingGroups"><![CDATA[sg120001]]></set-property>
<set-property name="profileId"><![CDATA[260000]]></set-property> 
<set-property name="siteId"><![CDATA[homeSite]]></set-property> 
<set-property name="orderClassType"><![CDATA[default]]></set-property>
<set-property name="creationSiteId"><![CDATA[homeSite]]></set-property>
<set-property name="creationDate"><![CDATA[10/12/2016 22:50:01]]></set-property>
<set-property name="paymentGroups"><![CDATA[pg120001]]></set-property>
</add-item>
=========================================================================

To achieve this update orderStateSaveModes (Order state to save mode mapping) property of /atg/commerce/order/processor/SavePriceInfoObjects/ processor [add mapping for INCOMPLETE order].

Example Mapping :

INCOMPLETE=ALL

The valid save modes are :
  • ALL : Saves all PriceInfo types.
  • ALL_NO_AUDIT : Saves all PriceInfo types, but does not save audit trail information (pricing adjustments and detailed price info objects).
  • ORDER : Saves only the OrderPriceInfo object (not shipping, item, tax).
  • ORDER_NO_AUDIT : Saves only the OrderPriceInfo object, with no audit information.
  • NONE : Saves no pricing information.
ProcSavePriceInfoObjects also includes a defaultSaveMode to use if the current order state does not have an entry in the orderStateSaveModes map.

Incomplete Order with price information (post above configuration change) :
=========================================================================
------ Printing item with id: o120001 
<add-item item-descriptor="order" id="o120001"> 
<set-property name="description"><![CDATA[o120001]]></set-property> 
<set-property name="relationships"><![CDATA[r30001]]></set-property> 
<set-property name="commerceItems"><![CDATA[ci3000001]]></set-property>
<set-property name="shippingGroups"><![CDATA[sg120001]]></set-property>
<set-property name="profileId"><![CDATA[260000]]></set-property>  
<set-property name="siteId"><![CDATA[homeSite]]></set-property> 
<set-property name="orderClassType"><![CDATA[default]]></set-property> 
<set-property name="creationSiteId"><![CDATA[homeSite]]></set-property> 
<set-property name="taxPriceInfo"><![CDATA[ai10005]]></set-property>
<set-property name="creationDate"><![CDATA[10/12/2016 22:50:01]]></set-property>
<set-property name="priceInfo"><![CDATA[ai10001]]></set-property> 
<set-property name="paymentGroups"><![CDATA[pg120001]]></set-property> 
</add-item>
=========================================================================

ATG 11.1 CRS | SEVERE: Unable to retrieve sites - unable to locate root node

After starting weblogic server, tried to hit CRS home page. But got the blank page.

Below is the exception from logs.

==========================================================================
Oct 12, 2016 9:46:58 PM com.endeca.infront.site.SiteManager getSite
SEVERE: Unable to retrieve sites - unable to locate root node
**** Error      Wed Oct 12 21:47:00 IST 2016    1476289020935   /atg/endeca/assembler/droplet/InvokeAssembler   A problem occurred assembling the content for content item /content/Web/Home Pages. The response received was {previewModuleUrl=http://localhost:8006/ifcr, @type=ContentSlot, atg:currentSiteProductionURL=/crs/homeus, canonicalLink=com.endeca.infront.cartridge.model.NavigationAction@2a2248a2, ruleLimit=1, @error=com.endeca.infront.content.ContentException: com.endeca.navigation.ENEConnectionException: Error establishing connection to retrieve Navigation Engine request 'http://localhost:15000/graph?node=0&profiles=site.homeSite|sitegroup.siteGroupUS|NoPriceRange&offset=0&nbins=0&merchdebug=1&irversion=640'. Tried all: '1' addresses, but could not connect over HTTP to server: 'localhost', port: '15000' Check MDEX Logs and specified query parameters. , contentCollection=/content/Web/Home Pages}. Servicing the error open parameter.
==========================================================================

Solution : Start\re-start MDEX Engine.

Sunday 2 October 2016

ATG | Configure Last-Modified Property for repository items

Sometimes we need to persist the information, when a repository item was most recently modified. In ATG there is a way to configure last-modified property for item descriptor. 



Follow below steps to configure last-modified property for a given item-descriptor.

1. The item descriptor must contain a date or timestamp property that stores the last-modified value. This property must be persistent (add column in one of the existing table) and single-valued.

   <property name="lastActivity" data-type="timestamp"/>

2. The item descriptor sets the last-modified-property attribute to the name of the last-modified property (defined in above step).

    <item-descriptor name="customerServiceArticle" last-modified-property="lastActivity">

3. The item descriptor sets the updateLastModified <attribute> (attribute of item descriptor) element to true.

<attribute name="updateLastModified" value="true"/>

Example item descriptor (Only demonstrating last modified property).
==========================================================================
<item-descriptor name="customerServiceArticle" last-modified-property="lastActivity">

    <attribute name="updateLastModified" value="true"/>

    <table name="customer_articles" type="primary">
        <property name="lastActivity" data-type="timestamp"  column-name="last_updated"/>
    </table>

</item-descriptor>
 =========================================================================

Note : This property is automatically (no code required) updated with the current time when the item is added or updated.