Component 'Forge' is already started - Endeca FORGE

Problem Statement:

When you try to run endeca baseline update you will see message as below:

 BASELINE SCRIPT STARTED
[07.11.15 11:38:32] INFO: Released lock 'update_lock'.
 Copy crawl files to incoming and processing folder
[07.11.15 11:38:33] INFO: Checking definition from AppConfig.xml against existing EAC provisioning.
[07.11.15 11:38:34] INFO: Definition has not changed.
[07.11.15 11:38:34] INFO: Starting baseline update script.
[07.11.15 11:38:34] INFO: Acquired lock 'update_lock'.
[07.11.15 11:38:34] INFO: [ITLHost] Starting shell utility 'cleanDir_processing'.
[07.11.15 11:38:35] INFO: [ITLHost] Starting shell utility 'cleanDir_forge-output'.
[07.11.15 11:38:36] INFO: [ITLHost] Starting shell utility 'cleanDir_temp'.
[07.11.15 11:38:38] INFO: [ITLHost] Starting shell utility 'move_-_to_processing'.
[07.11.15 11:38:39] INFO: [ITLHost] Starting copy utility 'fetch_config_to_input_for_forge_Forge'.
[07.11.15 11:38:39] INFO: [ITLHost] Starting backup utility 'backup_log_dir_for_component_ConfigurationGeneratorForge'.
[07.11.15 11:38:40] INFO: [ITLHost] Starting component 'ConfigurationGeneratorForge'.
[07.11.15 11:39:10] INFO: [ITLHost] Starting backup utility 'backup_log_dir_for_component_Forge'.
[07.11.15 11:39:11] INFO: [ITLHost] Starting component 'Forge'.
[07.11.15 11:39:11] INFO: Component 'Forge' is already started.


Solution:
It will happen if someone killed baseline update process while forge is running. Easy way to release or kill process is to get into Endeca experience manager and stop Forge process.




How to define Dimension & Property in Endeca for forgeless approach? - Oracle commerce 11.x

There are two ways to define dimension and properties for Forge-less approach:

1) Define at Product-sku-output-config(PSOC) level
Ex:
      DIMENSION:  <property name="pattern" type="string" output-name="Pattern" multiselect-type="multi-or"  is-dimension="true"  />

      PROPERTY:   <property name="description" type="string" output-name="P_Description" text-searchable="true"/>

2) Define at Index config Level
File location: /opt/app/endeca/apps/APPNAME/config/index_config/index-config.json


a) Add dimension and property as below mentioned in example and you can define searchable, filter, roll-up, dimension, multi select etc...
Ex:
{
  "indexConfig" : {
    "attributes" : {
      "jcr:primaryType" : "endeca:unstructured",
      "record.id" : {
        "propertyDataType" : "ALPHA",
        "jcr:primaryType" : "endeca:property",
        "isRecordFilterable" : true
                },
                "sku.margin" : {
          "propertyDataType" : "DOUBLE",
          "jcr:primaryType" : "endeca:property"
        },
                "product.repositoryId" : {
          "propertyDataType" : "ALPHA",
          "mergeAction" : "UPDATE",
          "isRollupKey" : true,
          "jcr:primaryType" : "endeca:property",
          "isRecordFilterable" : true

        },
                "product.price_range" : {
                  "rangeComparisonType" : "FLOAT",
                  "multiSelectType" : "OR",
                  "sourcePropertyNames" : ["sku.sortPrice"],
                  "jcr:primaryType" : "endeca:dimension"
                }

        },
    "precedenceRules" : {
    },
    "searchIndexConfig" : {
      "isWildcardEnabledInDimensionSearch" : true,
      "spellingDictMaxWordLength" : 16,
      "spellingDictMinNumWordOccurrences" : 4,
      "spellingDictMinWordLength" : 3
    }
  }
}

b) Once you update index-config.json make sure to set configurations at Endeca repository level.

    Here is the command:
   /opt/app/endeca/apps/APPNAME/control :>

                          ./index_config_cmd.sh set-config -f ../config/index_config/index-config.json -o all

c) Run Endeca indexing to see your dimension(s) and propertie(s) added

Endeca InvokeAssembler:Assembler Exception:---java.lang.NullPointerException and also Jboss log file fills in GB with StackOverflowError message

Problem Statement:

Endeca InvokeAssembler:Assembler Exception:---java.lang.NullPointerException is thrown and also Jboss Log is filling in GB in few minutes to Hour with below exception:

2015-07-09 03:46:06,987 ERROR [nucleusNamespace.atg.endeca.InvokeAssembler] (ajp-0.0.0.0-10109-20) InvokeAssembler.service():Assembler Excepti on:---java.lang.NullPointerException 2015-07-09 2015-07-09 03:46:07,664 FATAL [org.apache.jasper.runtime.JspFactoryImpl] (ajp-0.0.0.0-10109-24) Exception initializing page context java.lang.StackOverflowError

       at org.apache.catalina.core.ApplicationHttpRequest.getSession(ApplicationHttpRequest.java:544)
       at javax.servlet.http.HttpServletRequestWrapper.getSession(HttpServletRequestWrapper.java:216)
       at org.apache.catalina.core.ApplicationHttpRequest.getSession(ApplicationHttpRequest.java:544)
       at javax.servlet.http.HttpServletRequestWrapper.getSession(HttpServletRequestWrapper.java:216)
       at org.apache.catalina.core.ApplicationHttpRequest.getSession(ApplicationHttpRequest.java:544)
       at javax.servlet.http.HttpServletRequestWrapper.getSession(HttpServletRequestWrapper.java:216)
       at org.apache.catalina.core.ApplicationHttpRequest.getSession(ApplicationHttpRequest.java:544)
       at javax.servlet.http.HttpServletRequestWrapper.getSession(HttpServletRequestWrapper.java:216)
       at org.apache.catalina.core.ApplicationHttpRequest.getSession(ApplicationHttpRequest.java:544)
       at javax.servlet.http.HttpServletRequestWrapper.getSession(HttpServletRequestWrapper.java:216)
       at org.apache.catalina.core.ApplicationHttpRequest.getSession(ApplicationHttpRequest.java:544)
       at javax.servlet.http.HttpServletRequestWrapper.getSession(HttpServletRequestWrapper.java:216)
       at org.apache.catalina.core.ApplicationHttpRequest.getSession(ApplicationHttpRequest.java:544)

Solution:
If there is no default page defined you will get above exceptions.

Assembler checks for trigger condition(s), priority, segmentation, time-boxing etc..  Make sure default page does not have expired time box or segmentation.

For example : Home page will be created for each day with time boxed. Merchandiser will create home page versions for 1 week with time boxing. If there is no valid page with expired time-box then assembler never finds default Home page and throws errors in JBOSS log.

How to check time boxing on page:

Go to Endeca XM page and check for below highlighted spot.






How to Remove time box? 

Uncheck the time and make one of the page default.


FYI
XM Promote page script run is required to reflect any changes done on site.

How to schedule Endeca index using ATG ProductCatalogSimpleIndexingAdmin component? - Endeca Indexing Job

Component path: /atg/commerce/endeca/index/ProductCatalogSimpleIndexingAdmin 
# enableScheduledIndexing: defaults to false. Must be true for the above schedules to have any effect 
enableScheduledIndexing=true 
# baselineSchedule - Run a baseline every 2 Hrs 
baselineSchedule=calendar * * * * 0,2,4,6,8,10,12,14,16,18,20,22 00

OOTB - Endeca Record Filter Builder Components

The ATG-Endeca integration includes several record filter builder components. Here are few which are most commonly used:
 1) A filter that restricts the set of records returned to only those associated with specified sites. 
It uses product.siteId attribute.
 /atg/endeca/assembler/cartridge/manager/filter/SiteFilterBuilder 
 2) A filter that restricts the set of records returned to only those in the current language. 
It uses product.language attribute.
 /atg/endeca/assembler/cartridge/manager/filter/LanguageFilterBuilder
3) A filter that restricts the set of records returned to only those associated with the appropriate catalogs.
It uses product.catalogId attribute.
 /atg/endeca/assembler/cartridge/manager/filter/CatalogFilterBuilder
 To enable a specific record filter builder component, you add it to the recordFilterBuilders property of the  
/atg/endeca/assembler/cartridge/manager/NavigationStateBuilder component. 
recordFilterBuilders+=\
/atg/endeca/assembler/cartridge/manager/filter/CatalogFilterBuilder,
/atg/endeca/assembler/cartridge/manager/filter/SiteFilterBuilder 

Endeca Guided Search and Endeca deployment template ports - Endeca Ports


Service Ports:



Ports used during Endeca application creation using deployment template:

FYI:

Default ports can be replaced with any other port numbers but Port numbers can be no larger than 32767.

How to Export and Import Endeca Workbench content? - Oracle commerce 11.x version


EXPORT Commands:

1) Export all the content in public format
 runcommand[.bat/.sh] IFCR exportApplication export_folder_name

2) Export media, preview and editor configurations
runcommand.[.bat/.sh] IFCR legacyExportContent"/" export_folder_name
3)Export CAS configurations
index_config_cmd[.bat/.sh] get-config [-o OwnerName] -f FileName
4) Export all Users and tool permissions
/opt/app/endeca/ToolsAndFrameworks/11.1.0/admin/bin$
export_users.[.bat/.sh] --config config-prop-file --output output-file --admin-user admin-user --admin-password admin-password
 IMPORT Commands:
1) Import all Users and tool permissions
/opt/app/endeca/ToolsAndFrameworks/11.1.0/admin/bin$
import_users.[.bat/.sh] --input input-file --config config-file --default_user_pswd user-password -- single-app permissions --admin-user admin-user --admin-password admin-password
where:
input-file is the location of data file 
config-file is the location of the configuration property
file
2)Import all the content in public format
runcommand.[.bat/.sh] IFCR importApplication export_folder_name
3)Import CAS configurations
index_config_cmd[.bat/.sh] set-config [-o OwnerName] -f FileName
4) Import media, preview and editor configurations
 runcommand.[.bat/.sh] IFCR legacyUpdateContent "/" export_folder_name