Sunday 25 December 2016

Endeca | Add a new site to an existing application

You can easily add new site to existing endeca application by following below steps.

Nature

1. Export the application you want to modify (Add a site).
   a. Navigate to application control directory.
   b. Invoke this command to export application.
        runcommand.<bat|sh> IFCR exportApplication <destination directory>
   c.  Navigate to destination directory and unzip the exported zip file.

2. Add the default site ID, site node and site definition for you new site.
  a. Navigate to the pages node(directory) of your unzipped exported application. 
  b. Open the _.json file in an editor and add a default site ID.
      For example:
      {
         "defaultSiteId": "/TestStoreDE",
         "ecr:type": "page-root"
      }
  c) Navigate to the <export directory>\pages directory. Note that the application already has an
      existing site. For example, the Store application has an existing site with TestStoreUS as the
      site_ID.
  d) Create a folder for your new site parallel to the existing site. The name that you provide for the folder
       becomes the site_ID, for example
TestStoreDE.
  e) Navigate to the existing site in your application, for example pages\
TestStoreUS.
  f) Copy the site definition file, _.json, from the folder and paste it into your new site folder, for example
      pages\
TestStoreDE\_.json.
  g) Use a text editor to update the site definition with unique information appropriate for your new site. For example, the following new site has been updated with a unique URL pattern, display name, and
      description.
      {
          "ecr:type": "site-home",
          "urlPattern" : "/
TestStoreDE",
          "displayName" : "German Store",
          "description" : "This is German Store",
      }

  h) If you want the site to have its own unique icon to identify it in Experience Manager, you can replace
      the default site icon with one of your own by copying an image to the same directory as the site's
      JSON file.The image must be 16 by 16 pixels, and be named siteIcon.<extension>, for example
      pages\TestStoreDE\siteIcon.png. The supported formats are JPG, JPEG, PNG, GIF, and TIF.         Oracle recommends using the PNG format.
  i) Save and close the file.

3. If you want your site to filter a subset of relevant records, you need to add a site-based filter to your site.
    a) Navigate to the new site directory pages/<new site_ID>, for example pages/TestStoreDE.
    b) Create an XML file and name it filterState.xml. The following file filters records so that only those
         records in the furniture category can appear in the site.
          <Item class="com.endeca.infront.navigation.model.FilterState"
                     xmlns="http://endeca.com/schema/xavia/2010">
                   <Property name="recordFilters">
                     <List>
                          <String>product.category:furniture</String>
                     </List>
                   </Property>
          </Item>
   c) Save and close the file.
4. A site needs at least one page in order to display so copy and paste pages that you want from your original site to your new site.
For example, you could copy the browse or account folder from pages/TestStoreUS to pages/TestStoreDE.
5. Import the content with the new site information.
   a. Navigate to application control directory.
   b. Invoke this command to import updated application.
       runcommand.<bat/sh> IFCR importContent pages <path to source>.

Saturday 24 December 2016

Endeca Baseline Error on Linux VM | Can't locate strict.pm in @INC

While running baseline on new Endeca application got below error.

Error : Can't locate strict.pm in @INC (@INC contains <path to some perl directories>)

Can't Locate

Solution :

1. Run below commands.

export PERLLIB=$ENDECA_ROOT/lib/perl:$ENDECA_ROOT/lib/perl/Control:$ENDECA_ROOT/perl/lib:$ENDECA_ROOT/perl/lib/site_perl
export PERL5LIB=$ENDECA_ROOT/lib/perl:$ENDECA_ROOT/lib/perl/Control:$ENDECA_ROOT/perl/lib:$ENDECA_ROOT/perl/lib/site_perl

2. Restart PlatformServices and trigger indexing again.

Note : Set ENDECA_ROOT properly before running this command.

Wednesday 7 December 2016

ATG 11.2 BCC Full Deployment ConcurrentUpdateException

While running full deployment on ATG 11.2 first time it failed due to below exception.

============================================================================
2016-12-06 19:25:53,345 ERROR [STDERR] (RepositoryWorkerThread-1(Add-Update Phase)) atg.repository.ConcurrentUpdateException: no rows updated oldVersion=36 for item=deploymentProgress:1100003 in GSATransaction=atg.adapter.gsa.GSATransaction@1890638 thread=RepositoryWorkerThread-1(Add-Update Phase) transaction=TransactionImple < ac, BasicAction: aaf04af:134f:4e650790:b4cf status: ActionStatus.RUNNING >
============================================================================

Solution : Run full deployment with DeploymentManager.maxThreads=1 configuration.

Step 1 : Open the dyn/admin of BCC instance.
Step 2 : Open DeploymentManager component.
Step 3 : Update maxThreads property to 1.
Step 4 : Run full deployment again.