ESS: Efecte Service Management connector
ESS: Efecte Service Management connector
Efecte Service Management connector in nutshell
With help of this connector Efecte Self-Service can
- Create new Incidents & Service Requests in Efecte Service Management
- Poll updates when Incidents & Service Requests are changed in Efecte Service Management (for example when request status is changed)
- Poll and send rating data on knowledgebase articles in connection to Tips & Tricks
- Poll and send rating data and comments in on new ideas in connection to Like My Idea
- Poll dynamic user data from Efecte Service Management (MyServices)
- Poll data to maintain service offer data up to data (Catalog items)
- Send approval decisions for Visual Workflow Approvals in Efecte Service Management
- Send feedback gathered from end-users to Efecte Service Management
Most of the functionality of the connector works automatically using the default values which are referred to all across this document.
This article describes the behavior of Efecte Service Management Connector in ESS version 2022.3 or newer.
Note
For two use cases Efecte Service Management actively sends data to Efecte Self-Service. These are the announcements on issues impacting many, and approvals for Visual Workflow Automation where the decision is expected to be made in the Efecte Self-Service. For all the rest, Efecte Self-Service is the active party.
Supported templates
Out-of-the-box, there are two templates supported for the Efecte connector – Service Request (ServiceRequest) and Incident (incident). In case there is a need to support several templates, then multiple ESM connectors can be deployed for the tenant and the destination for requests can differ from the default. In this case, only one of the connectors may include the knowledge base and like my idea configuration – in case multiple connectors have either configured, the result set that will be used to display articles on home page is the one last fetched to Efecte Self-Service which may lead to confusing user experience especially with pointers to various sources inside ESM.
On the other hand, using a single template may be of interest. With proper configuration all requests can be directed to the desired template. However, pay attention to attribute codes and status values and means of potentially separating the different request types to avoid excess logs being generated through mismatching configurations.
ESM message format
Format of messages exchanged between ESS and ESM products is hardcoded.
Note: Multivalued fields for MyService feature are passed in CSV format inside xml tags.
Connection configuration
To configure connection for ESM use bean of class com.efecte.integration.connector.configuration.ConnectionConfiguration, as in the following example:
<bean id="connectionConfiguration" class="com.efecte.integration.connector.configuration.ConnectionConfiguration">
<property name="url" value="https://xxxxxxxxx.efectecloud.com/api/itsm" />
<property name="user" value="webapi-user" />
<property name="password" value="xxxxxxxxxxxxxxxxxxxxxxxxxx" />
<property name="connectionRequestTimeout" value="300" />
<property name="connectTimeout" value="300" />
<property name="socketTimeout" value="300" />
<property name="acceptSelfSignedCertificates" value="false"/>
<property name="allowAllHostnamesInCertificate" value="false"/>
</bean>Note! When multiple connectors are used, and some of them are referring to different connection configuration (such as different environment), they should have unique ID per connection configuration. In other words, make sure that you don’t have the same bean ID for two different connection configurations. This configuration applies when connecting to two different ESM environments from one ESS, so it might be a good idea to indicate the environment in the bean ID, e.g.
bean id="connectionConfigurationEnvName”
This bean support following properties:
| Name | Default value | Description |
| url | http://efecte.company.com | URL for ESM API |
| user | webapi-user | username |
| password | ESM API password | |
| acceptSelfSignedCertificates | false | If “true” self signed certificates are accepted |
| allowAllHostnamesInCertificate | false | If “true” disables verification of server host name on certificates. This should be always set to false on production systems! |
| connectionRequestTimeout | 300 | Returns the timeout in seconds used when requesting a connection from the connection manager. A timeout value of zero is interpreted as an infinite timeout. A timeout value of zero is interpreted as an infinite timeout. A negative value is interpreted as undefined (system default). |
| connectTimeout | 300 | Determines the timeout in seconds until a connection is established. A timeout value of zero is interpreted as an infinite timeout. A negative value is interpreted as undefined (system default). |
| socketTimeout | 300 | Defines the socket timeout (SO_TIMEOUT) in seconds, which is the timeout for waiting for data or put differently, a maximum period inactivity between two consecutive data packets). A timeout value of zero is interpreted as an infinite timeout. A negative value is interpreted as undefined (system default). |
Service Request configuration
Service request attributes mappings can be defined in connector-efecte.xml file. Sample configuration of all available options:
<bean id="connectorEfecte"
class="com.efecte.integration.connector.efecte.EfecteConnector">
<property name="serviceRequestAttributes">
<bean class="com.efecte.integration.connector.configuration.ServiceRequestAttributes">
<property name="templateCode" value="ServiceRequest"/>
<property name="bundleTemplateCode" value="ServiceRequestBundle"/>
<property name="folderCode" value="ServiceRequests"/>
<property name="attachmentAttribute" value="RequestAttachments"/>
<property name="statusAttribute" value="status"/>
<property name="reopenReasonAttribute" value="reopen_reason"/>
<property name="creationDateAttribute" value="created"/>
<property name="deadlineAttribute" value="deadline"/>
<property name="updatedAttribute" value="updated"/>
<property name="efecteIdAttribute" value="efecte_id"/>
<property name="languageAttribute" value="Language"/>
<property name="feedbackAttribute" value="rating"/>
<property name="resolutionTextAttribute" value="resolution"/>
<property name="supportPersonAttribute" value="support_person"/>
<property name="serviceOfferingNameAttribute" value="ServiceOffering"/>
<property name="serviceItemNameAttribute" value="ServiceItemName"/>
<property name="serviceItemExternalIdAttribute" value="ServiceItem"/>
<property name="priceAttribute" value="Price"/>
<property name="monthlySubscriptionAttribute" value="MonthlySubscription"/>
<property name="requestedForAttribute" value="RequestedFor"/>
<property name="costCenterAttribute" value="CostCenter"/>
<property name="deliveryAddressAttribute" value="DeliveryAddress"/>
<property name="orderedByAttribute" value="OrderedBy"/>
<property name="additionalInformationAttribute" value="AdditionalInformation"/>
<property name="siteIDAttribute" value="SiteID"/>
<property name="siteNameAttribute" value="SiteName"/>
<property name="requestBundleAttribute" value="RequestBundle"/>
<property name="requestBundleNameAttribute" value="RequestBundleName"/>
<property name="orderedByEmailAttribute" value="OrderedBy:email"/>
<property name="requestedForEmailAttribute" value="RequestedFor:email"/>
<property name="commentAttribute" value="external_comments"/>
<property name="reasonAttribute" value="user_reason"/>
<property name="dedicatedApproverAttribute" value="DedicatedApprover"/>
<property name="superiorApproverAttribute" value="approving_manager"/>
<property name="totalPriceAttribute" value="totalPrice"/>
<property name="quantityAttribute" value="quantity"/>
<property name="totalMonthlySubscriptionAttribute"value="TotalMonthlySubscription"/>
<property name="punchout" value="punchOutOrderId"/>
</bean>
</property>
<!-- other configuration -->
</bean> Mapping for incidents can be adjusted using tenant admin UI, support channel configuration tab. Upon creating a new support channel, the default values can be observed in the configuration.
Detailed rules for processing service request properties are as follows:
| Attribute name | Description |
| integrationIdAttribute | If present, upgrade of an existing service request will be performed (mapped in GeneralConfiguration bean, recommended not to be changed – defaults to WebShopId) |
| efecteIdAttribute | If integrationIdAttribute is empty and there is no request in ESS with given efecteIdAttribute value new service request will be created; if request with given efecteIdAttribute value is present in ESS update of existing one will be executed |
| requestedForEmailAttribute | A user with that email address must exist in organization information data in ESS. If it doesn't, the service request will be rejected with proper information in the ESS log file (sample log entry: Couldn't match user with email ... to user. Service request is not created for id ...) |
| orderedByEmailAttribute | A user with matching email has to exist in organization information data. If it doesn't exist the service request will be rejected with proper information in the ESS log file. If value of the field is empty, requestedForEmailAttribute will be used instead |
| serviceItemExternalIdAttribute | Service item with that Item ID has to exist and be valid (checks are also performed against working copy). If that condition isn't meet service request is rejected with proper information in ESS log file |
| serviceOfferingNameAttribute | If set, the service request will be created with that name. If the attribute is not set, the service offer name will be copied from service offering found based on serviceItemExternalIdAttribute |
| itemNameAttribute | If set, the service request will be created with that name. If the attribute is not set, the service item name will be copied from service item found base on serviceItemExternalIdAttribute |
| priceAttribute / monthlySubscriptionAttribute | If set, the service request will be created with that price/monthly subscription fee. If the attribute is not set, attributes will be copied from service item found base on serviceItemExternalIdAttribute |
| additionalInformationAttribute | If value of ESM's additional information attribute starts with "Description:", connector will take text after "Description:" part up to the end of line. If add info field doesn't start with "Description:" prefix, all content of attribute value will be processed |
| reasonAttribute | Collects the value that the user has gave to the field named “Reason” in the order confirmation phase. By default, the value will be mapped to the ESM attribute code “user_reason”. |
| requestBundleAttribute | The value of this attribute is unique to each bundle order in the ESS database. The value is mapped to the ESM attribute “RequestBundle”. Each bundle order may have one or more service request that each of them have own unique serviceItemExternalIdAttribute. |
| requestBundleNameAttribute | The value of this attribute is the name of the guided offering. The value is mapped the ESM attribute “RequestBundleName”. |
If the “Item quantity enabled” is selected for service offering, the following extra rules are processed for the service request:
| Attribute name | Description |
|
quantityAttribute
|
The quantity information from the order in the ESS is sent to ESM attribute which code is quantity. The attribute type in the ESM shall be number. |
|
totalPriceAttribute
|
The Total price of each service item order in the ESS is sent to ESM attribute which code is totalPrice. The attribute type in the ESM can shall be decimal number. |
|
totalMonthlySubscriptionAttribute
|
The Total monthly subscription price of each service item order in the ESS is sent to ESM attribute which code is TotalMonthlySubscription. The attribute type in the ESM can shall be decimal number. |
Note! Attributes listed above are the default values. In case these need to be changed, corresponding codes shall be introduced in the connector file.
The PunchOut functionality allows Efecte Self-Service users to use an external webshop for collecting items into their service request. The following attributes are needed in the connector for PunchOut functionality. Refer to the PunchOut Configuration Guide for further information.
| Attribute name | Description |
|
totalPriceAttribute
|
See above |
|
punchout
|
The punchout attribute’s punchOutOrderId code is used as an order identifier. It needs to have value before an approved order is sent to the PunchOut service provider. |
Tracking connector
Tracking connector triggers the poll for updates from Efecte Service Management for both Incidents and Service Requests. Default domain mapping for incidents originating from ESM to ESS and service item mapping for service requests can be configured by setting following properties of EfecteTrackingConnector bean:
| Name | Default value | Description |
| defaultIntegrationCategoryId | DEFAULT_CATEGORY | Default domain mapping for incidents |
| defaultIntegrationServiceItemId | DEFAULT_SERVICE_ITEM | Default service item mapping for service requests |
| pollNewServiceRequestEnabled | false | Enables polling of new Service Requests from ESM |
| pollNewIncidentEnabled | true | If set to false, it does not fetch incidents with empty uuid (the ones that are created in ESM and not in ESS) |
Note! By default, incidents are polled and not service requests. For polling the service requests as well, the Efecte Tracking Connector must be introduced to the connector file.
For the new service request polling to work correctly, following attributes are mandatory on ESM side:
- Request identifier conveyed in efecteIdAttribute, default ‘efecte_id’
- Status conveyed in statusAttribute.default ‘status’
- Customer identifier conveyed in requestedForEmailAttribute default ‘RequestedFor:email’
- Item ID conveyed in serviceItemExternalIdAttribute, default ‘ServiceItem’ - if value of this attribute is empty, connector will take the value from defaultIntegrationServiceItemId in tracking connector configuration
In order for the new incident polling to work correctly, following attributes are mandatory on ESM side:
- Incident identifier conveyed in efecteIdAttribute, default ‘efecte_id’
- Status conveyed in the statusAttribute.default ‘status’
- Customer identifier conveyed in customer email attribute, default customer:email
- Category ID conveyed in integrationCategoryAttribute, default WebShopCategory - if value of this attribute is empty, connector will take the value from defaultIntegrationCategoryId in tracking connector configuration (A category with the category ID needs to be published in ESS)
Polling frequency can be adjusted using 'updateFrequency' and 'errorUpdateFrequency' properties of class 'EfecteTrackingConnector'. Values are expressed in configurable units.
Note! There is very seldom a need to change 'updateQuerySlidingWindowTime' from default. Polling data will always include all datacards that are changed within the time period, and in the longer time period same tickets are return over and again to the result set. Already on the first go, the ticket will be updated in ESS. Making this window wide will potentially slow-down operations in ESS as well as ESM with no extra benefit gained.
| Name | Default value | Description |
| updateFrequency | 10 | Refresh period when data was fetched successfully |
| updateFrequencyUnit | MINUTES | Refresh period frequency unit (successful) |
| errorUpdateFrequency | 10 | Refresh period when data fetch has failed |
| errorUpdateFrequencyUnit | MINUTES | Refresh period frequency unit (error) |
When connector runs for the first time it will fetch requests and incidents since last 24h. This time can be adjusted by configuring properties initialQuerySlidingWindowTime and initialQuerySlidingWindowUnit.
Other default values for the Efecte Tracking Connector are:
| Name | Default value | Description |
| updateQuerySlidingWindowTime | 20 | From which period the data is being fetched, comparing to ESM last update time (e.g. from last 20 minutes) |
| updateQuerySlidingWindowUnit | MINUTES | Refresh period frequency unit (successful) |
| initialQuerySlidingWindowTime | 1 | From which period the data is being fetched in the first run, comparing to ESM last update time (e.g. from last 24 hours) |
| initialQuerySlidingWindowUnit | DAYS | Refresh period frequency unit (error) |
| serviceRequestPollCondition | The default condition for polling service request updates | |
| incidentPollCondition | The default condition for polling incident updates |
Configuration example:
<property name="efecteTrackingConnector">
<bean class="com.efecte.integration.connector.efecte.EfecteTrackingConnector">
<property name="updateQuerySlidingWindowTime" value="20"/>
<property name="updateQuerySlidingWindowUnit" value="MINUTES"/>
<property name="initialQuerySlidingWindowTime" value="1"/>
<property name="initialQuerySlidingWindowUnit" value="DAYS"/>
<property name="updateFrequency" value="10" />
<property name="updateFrequencyUnit" value="MINUTES" />
<property name="errorUpdateFrequency" value="10" />
<property name="errorUpdateFrequencyUnit" value="MINUTES" />
<property name="defaultIntegrationServiceItemId" value="DEFAULT_SERVICE_ITEM" />
<property name="pollNewServiceRequestEnabled" value="false" />
<property name="defaultIntegrationCategoryId" value="DEFAULT_EFECTE_CATEGORY"/>
<property name="serviceRequestPollCondition" value="and $creator$ = 'WebAPI'"/>
<property name="incidentPollCondition" value="and $creator$ = 'WebAPI'"/>
<property name="pollNewIncidentEnabled" value="true" />
</bean>
</property>If 'updateQuerySlidingWindowTime' property is not configured in tracking connector, value of 'pollingInterval' multiplied by two (2) will be used as default sliding window size.
Feedback form
Feedback form is supported by default in ESM connector. Attributes used for mapping to ESM fields can be configured by adjusting properties of bean EfecteFeedbackFormConnector class and in the actual form through the admin UI, Feedback management tab. Following properties are supported:
| Name | Default value | Description |
| templateCode | feedback_management | Feedback form template code |
| folderCode | feedback | Feedback form folder |
| efecteIdAttribute | ticket_id | Name of attribute that contains ticket ID |
| customerAttribute | customer | Name of attribute that contains customer reference |
| ratingAttribute | ticket_rating | Name of attribute that contains numerical rating |
Example configuration of EfecteFeedbackFormConnector inside EfecteConnector in connector-efecte.xml:
<bean id="defaultConnectorEfecte" class="com.efecte.integration.connector.efecte.EfecteConnector">
<property name="connectionConfiguration" ref="connectionConfiguration" />
<property name="feedbackFormConnector">
<bean class="com.efecte.integration.connector.efecte.EfecteFeedbackFormConnector">
<property name="feedbackAttributes">
<bean class="com.efecte.integration.connector.configuration.FeedbackAttributes">
<property name="templateCode" value="feedback_management" />
<property name="folderCode" value="feedback" />
<property name="efecteIdAttribute" value="ticket_id" />
<property name="customerAttribute" value="customer" />
<property name="ratingAttribute" value="ticket_rating" />
</bean>
</property>
</bean>
</property>
</bean>Note
For giving feedback to issues that are first recorded to the Efecte Service Management tool, please make sure issues are first polled to the Efecte Self-Service portal through tracking connector. The ESS needs to have the issue in its database before feedback can be given.
Tips & Tricks
This feature allows for importing Knowledge Base from Efecte Service Management system. For more details kindly refer to ConfiguringTipsTricks guide for end-to-end configuration.
Integration Suite configuration
All configuration files for Integration Suite are located in /etc/integration-hub/ directory and its subdirectories. Tenant specific connectors are located under tenant-configs/{tenant_name} subdirectories.
To configure support for "Tips & Tricks" in Integration Suite please edit connector-efecte.xml file. Add bean of class "EfecteKnowledgeBaseConnector" and provide it with ESM connection configuration bean.
<bean id="connectionConfiguration"
class="com.efecte.integration.connector.configuration.ConnectionConfiguration">
<property name="url" value=" http://efecte.efecte.com/efecte " />
<property name="user" value="webapi-user" />
<property name="password" value="PASSWORD" />
</bean>
<bean id="efecteKnowledgeBaseConnector" class="com.efecte.integration.connector.efecte.EfecteKnowledgeBaseConnector">
<property name="connectionConfiguration" ref="connectionConfiguration"/>
</bean>Note! It is a good practice to share connection configuration between Efecte connectors, so following code (commonly used in configurations):
<bean id="defaultConnectorEfecte" class="com.efecte.integration.connector.efecte.EfecteConnector">
<property name="connectionConfiguration">
<bean class="com.efecte.integration.connector.configuration.ConnectionConfiguration">
<property name="url" value="http://efecte.company.com" />
<property name="user" value="webapi-user" />
<property name="password" value="PASSWORD" />
</bean>
</property>
</bean>can be replaced with:
<bean id="defaultConnectorEfecte" class="com.efecte.integration.connector.efecte.EfecteConnector">
<property name="connectionConfiguration" ref="connectionConfiguration"/>
</bean>Configuring knowledge base template parameters
In order to adjust names of attributes used in ESM for Knowledge Base support, template parameters can be configured by adding property knowledgeBaseAttributes to efecteKnowledgeBaseConnector bean. Otherwise default settings will be used.
<bean id="efecteKnowledgeBaseConnector" class="com.efecte.integration.connector.efecte.EfecteKnowledgeBaseConnector">
<property name="connectionConfiguration" ref="connectionConfiguration"/>
<property name="knowledgeBaseAttributes" >
<bean id="knowledgeBaseAttributes" class="com.efecte.integration.connector.configuration.KnowledgeBaseAttributes">
<property name="templateCode" value="knowledge_base_article"/>
<property name="pollingFolderCode" value="knowledge_base"/>
<property name="updateReadStatsFallbackFolderCode" value="knowledge_base"/>
<property name="ratingFallbackFolderCode" value="knowledge_base"/>
<property name="publishedInEssAttr" value="published_in_self_service"/>
<property name="publishedInEssValue" value="Yes"/>
<property name="deletedAttr" value="deleted"/>
<property name="nameAttr" value="solution_name"/>
<property name="descriptionAttr" value="solution_description"/>
<property name="categoryAttr" value="category"/>
<property name="adGroupsAttr" value="ad_groups"/>
<property name="efecteIdAttr" value="efecte_id"/>
<property name="updatedAttr" value="updated"/>
<property name="ratingAttr" value="rating"/>
<property name="rankingAttr" value="rating"/>
<property name="readStatsAttr" value="read_count"/>
<property name="keywordsAttr" value="solution_keywords"/>
<property name="keywordsSeparator" value=","/>
</bean>
</property>
</bean>Following properties of KnowledgeBaseAttributes class bean are supported:
| Name | Default value | Description |
| templateCode | knowledge_base_article | Knowledge Base template code |
| pollingFolderCode | if pollingFolderCode is defined then articles are polled only from this folder. If pollingFolderCode is NOT defined then articles are polled without folder limitation. |
|
| ratingFallbackFolderCode | knowledge_base | Name of fallback folder code used when saving vote. |
| updateReadStatsFallbackFolderCode | knowledge_base | Name of fallback folder code used when updating read stats. |
|
|
Name of attribute, indicating if article should be fetch to ESS |
|
|
Value of attribute named in publishedInEssAttr indicating that article should be fetched. |
|
|
Name of attribute, indicating if KB article is deleted |
|
|
Name of attribute that contains name of KB article |
|
|
Name of attribute that contains content of KB article |
|
|
Name of attribute that contains category of KB article |
|
|
ESM attribute that is used for Tips & Tricks filtering based on the EIM role of logged user |
|
|
Name of attribute that contains efecte id of KB article |
|
|
Name of attribute that contains last update date of KB article |
|
|
Name of attribute, indicating where knowledge base feedback should be stored |
|
|
Name of attribute, indicating where knowledge base ranking is stored |
|
|
Name of attribute that contains read statistic of KB article |
|
|
Name of the attribute that contains the keywords of a KB article |
|
|
If a KB article has multiple keywords, this keyword separator must be used |
Configuring "Tips & Tricks" update frequency
By default, if no error occurs, knowledge base will be updated every 2 hours. If error occurs, refresh time is changed to 2 minutes.
Scheduling start delay (time after which connector will start to work measured since integration hub start) can be configured using property startUpDelay for connectorScheduler bean in hub.xml file.
| Name | Default value | Description |
| startUpDelay | 20000 | Time (in miliseconds) after which first fetch is done (default: 20 seconds) |
Example from hub.xml:
<bean name="connectorScheduler" class="com.efecte.integration.container.ConnectorScheduler">
<property name="taskScheduler" ref="taskScheduler"/>
<property name="startUpDelay" value="20000"/>
</bean> Update and error update frequencies can be configured in connector xml configuration (connector-efecte.xml). Please use following properties:
| Name | Default value | Description |
| updateFrequency | 2 | Refresh period when knowledge base was fetch with success (default: 2 hours) |
| updateFrequencyUnit | HOURS | Refresh period frequency unit (successful) |
| errorUpdateFrequency | 2 | Refresh period when knowledge base fetch fails (default: 2 minutes) |
| errorUpdateFrequencyUnit | MINUTES | Refresh period frequency unit (error) |
Example from connector-efecte.xml:
<bean id="efecteKnowledgeBaseConnector" class="com.efecte.integration.connector.efecte.EfecteKnowledgeBaseConnector">
<property name="connectionConfiguration" ref="connectionConfiguration"/>
<property name="updateFrequency" value="30"/>
<property name="updateFrequencyUnit" value="SECONDS"/>
</bean>Like My Idea
This feature allows for displaying and commenting ideas stored in Efecte Service Management system.
All configuration files for Integration Suite are located in /etc/integration-hub/ directory and its subdirectories. Tenant specific connectors are located under tenant-configs/{tenant_name} subdirectories.
To configure support for "Like My Idea" in Integration Suite please edit connector-efecte.xml file. Add "http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd" schema locations to main beans definition.
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd">Add "annotation-config" element and bean of class "EfecteLikeMyIdeaConnector" and provide it with ESM connection configuration bean. Also add one bean of type "EfecteConnectorContext".
<bean id="efecteLikeMyIdeaConnector" class="com.efecte.integration.connector.efecte.EfecteLikeMyIdeaConnector" autowire="constructor">
<property name="connectionConfiguration" ref="connectionConfiguration"/>
<property name="likeMyIdeaAttributes" >
<bean id="likeMyIdeaAttributes" class="com.efecte.integration.connector.configuration.LikeMyIdeaAttributes">
<property name="nameAttr" value="demand_name"/>
<property name="ratingFallbackFolderCode" value="ideas"/>
<property name="descriptionAttr" value="demand_details"/>
<property name="efecteIdAttr" value="efecte_id"/>
<property name="createdAttr" value="created"/>
<property name="likesAttr" value="likes"/>
<property name="dislikesAttr" value="dislikes"/>
<property name="templateCode" value="ideas"/>
<property name="pollingFolderCode" value="ideas"/>
<property name="deletedAttr" value="deleted"/>
<property name="commentsAttr" value="comment"/>
<property name="publishedInEssAttr" value="publish_for_rating" />
<property name="publishedInEssValue" value="Yes" />
</bean>
</property>
</bean> Following properties of LikeMyIdeaAttributes class bean are supported:
| Name | Default value | Description |
| templateCode | demand_management_eng | Like My Idea template code |
| pollingFolderCode | ideas | if pollingFolderCode is defined then ideas are polled only from this folder. If pollingFolderCode is NOT defined then ideas are polled without folder limitation. |
| ratingFallbackFolderCode | ideas | Name of fallback folder code used when saving vote. |
|
|
Name of attribute, indicating if article should be fetch to ESS |
|
|
Value of attribute named in publishedInEssAttr indicating that article should be fetched. |
|
|
Name of attribute, indicating if idea is deleted |
|
|
Name of attribute containing creation date |
|
|
Name of attribute that contains name of idea |
|
|
Name of attribute that contains content of idea |
|
|
Name of attribute that contains efecte id of idea |
|
|
Name of attribute containing number of likes |
|
|
Name of attribute containing number of dislikes |
|
|
Name of attribute that contains comments |
Configuring "Like My Idea" update frequency
By default, if no error occurs, "like my ideas" will be updated every 2 hours. If error occurs, refresh time is changed to 2 minutes.
Scheduling start delay (time after which connector will start to work measured since integration hub start) can be configured using property startUpDelay for connectorScheduler bean in hub.xml file. Please observe instructions in Tips & Tricks section.
Update and error update frequencies can be configured in connector xml configuration (connector-efecte.xml). Please use following properties:
| Name | Default value | Description |
| updateFrequency | 2 | Refresh period when Ideas fetched with success (default: 2 hours) |
| updateFrequencyUnit | HOURS | Refresh period frequency unit (successful) |
| errorUpdateFrequency | 2 | Refresh period when Idea fetching fails (default: 2 minutes) |
| errorUpdateFrequencyUnit | MINUTES | Refresh period frequency unit (error) |
Example from connector-efecte.xml:
<bean id="efecteLikeMyIdeaConnector" class="com.efecte.integration.connector.efecte.EfecteLikeMyIdeaConnector">
<property name="connectionConfiguration" ref="connectionConfiguration"/>
<property name="updateFrequency" value="30"/>
<property name="updateFrequencyUnit" value="SECONDS"/>
</bean> My Services
My Services is a common name for set of integration mechanisms enabling external systems to dynamically modify content of catalog that is visible to users.
Defining MyServices Fields
- Go to ESS admin page -> Integrations -> External data fields
- Press Add MyServices field button
- Enter configuration
- Field name - enter name that will be used as alias for this MyServices field
- Data from - select Efecte Service Management connector
- Template data from Efecte Service Management mapped to MyServices field (Login to Efecte Service Management -> Administration -> Templates -> select template)
- Folder code – optional, limits the elements to be retrieved to defined folder
- Template code - fill with use value from Template code
- Name attribute code - code of attribute used as name (this attribute may be visible to user)
- Technical ID attribute code - code of attribute used as DataCard identifier (should be marked as Primary attribute in ESM)
- User attribute code - reference to template describing user associated with this template (target template needs to have an email attribute for user associations to work correctly)
- Press Update button - if there are no errors, in MyServices field elements table you should see names of DataCards from Efecte Service Management
- You can verify this by looking at a table with DataCards associated with selected template in ESM
My Services & offering catalog
MyService entry as source for Service Item IDs
- On admin page, open Services tab and select Service Item in a Service Offer
- In Item properties, open External Data Link drop-down and select name of External Data field
- From 'Item ID' drop-down select the element you need.
ID of selected element will be used as ItemID when users are placing orders for the given item.
Associations between Users and DataCards
Connector is not only responsible for retrieval of DataCards information, but also for:
- tracking associations between DataCards and users
- altering said associations
In order to use this functionality:
- On admin page, open Service and select Service Item
- In Service Item properties, open MyServices Link drop-down and select name of MyServices field
- From Sub-itemsdrop-down select:
- User using - in this case user will be presented with a list of DataCards he is associated with
- User not using - in this case user will be presented with a list of DataCards he is not associated with
Submitting order for Service Item will result in
- Removing
- Adding
association between user placing order and DataCard
Catalogs items
Following ESM attribute data types are supported when configuring catalog items
| Field name | ESM attribute type |
| Technical ID | String |
| Name | String |
| Model | String |
| Information page | String |
| Price | Decimal Number |
| Monthly subcription | Decimal Number |
Connector sample
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">
<bean id="connectionConfiguration" class="com.efecte.integration.connector.configuration.ConnectionConfiguration">
<property name="url" value="https://xxxxxxxxx.efectecloud.com/api/itsm" />
<property name="user" value="WebAPI" />
<property name="password" value="xxxxxxxxxxxxxxxxxxxxxxxxxx" />
<property name="connectionRequestTimeout" value="300" />
<property name="connectTimeout" value="300" />
<property name="socketTimeout" value="300" />
<!--property name="acceptSelfSignedCertificates" value="true"/>
<property name="allowAllHostnamesInCertificate" value="true"/-->
</bean>
<bean id="defaultConnectorEfecte" class="com.efecte.integration.connector.efecte.EfecteConnector">
<property name="connectionConfiguration" ref="connectionConfiguration" />
<!-- property name="generalConfiguration"> NOT RECOMMENDED TO BE CHANGED
<bean class="com.efecte.integration.connector.configuration.GeneralConfiguration">
<property name="dateTimeFormat" value="yyyy-MM-dd HH:mm:ss z"/>
<property name="integrationIdAttribute" value="WebShopId"/>
<property name="integrationCategoryAttribute" value="WebShopCategory"/>
</bean>
</property -->
<!-- property name="serviceRequestAttributes">
<bean class="com.efecte.integration.connector.configuration.ServiceRequestAttributes">
<property name="templateCode" value="ServiceRequest"/>
<property name="bundleTemplateCode" value="ServiceRequestBundle"/>
<property name="folderCode" value="ServiceRequests"/>
<property name="attachmentAttribute" value="RequestAttachments"/>
<property name="statusAttribute" value="status"/>
<property name="reopenReasonAttribute" value="reopen_reason"/>
<property name="creationDateAttribute" value="created"/>
<property name="deadlineAttribute" value="deadline"/>
<property name="updatedAttribute" value="updated"/>
<property name="efecteIdAttribute" value="efecte_id"/>
<property name="languageAttribute" value="Language"/>
<property name="feedbackAttribute" value="rating"/>
<property name="resolutionTextAttribute" value="resolution"/>
<property name="supportPersonAttribute" value="support_person"/>
<property name="serviceOfferingNameAttribute" value="ServiceOffering"/>
<property name="serviceItemNameAttribute" value="ServiceItemName"/>
<property name="serviceItemExternalIdAttribute" value="ServiceItem"/>
<property name="priceAttribute" value="Price"/>
<property name="monthlySubscriptionAttribute" value="MonthlySubscription"/>
<property name="requestedForAttribute" value="RequestedFor"/>
<property name="costCenterAttribute" value="CostCenter"/>
<property name="deliveryAddressAttribute" value="DeliveryAddress"/>
<property name="orderedByAttribute" value="OrderedBy"/>
<property name="additionalInformationAttribute" value="AdditionalInformation"/>
<property name="siteIDAttribute" value="SiteID"/>
<property name="siteNameAttribute" value="SiteName"/>
<property name="requestBundleAttribute" value="RequestBundle"/>
<property name="requestBundleNameAttribute" value="RequestBundleName"/>
<property name="orderedByEmailAttribute" value="OrderedBy:email"/>
<property name="requestedForEmailAttribute" value="RequestedFor:email"/>
<property name="commentAttribute" value="external_comments"/>
<property name="reasonAttribute" value="user_reason"/>
<property name="dedicatedApproverAttribute" value="DedicatedApprover"/>
<property name="superiorApproverAttribute" value="approving_manager"/>
<property name="totalPriceAttribute" value="totalPrice"/>
<property name="quantityAttribute" value="quantity"/>
<property name="totalMonthlySubscriptionAttribute" value="TotalMonthlySubscription"/>
</bean>
</property -->
<!-- property name="approvalResponseAttributes"> NOT RECOMMENDED TO BE CHANGED
<bean class="com.efecte.integration.connector.configuration.ApprovalResponseAttributes">
<property name="templateCode" value="approval"/>
<property name="folderCode" value="approvals"/>
<property name="efecteId" value="efecte_id"/>
<property name="actualApprover" value="ActualApprover"/>
<property name="approvalDecision" value="ApprovalDecision"/>
<property name="reason" value="Reason"/>
<property name="esmApprovedCode" value="approved"/>
<property name="esmRejectedCode" value="rejected"/>
</bean>
</property -->
<!-- property name="efecteTrackingConnector">
<bean class="com.efecte.integration.connector.efecte.EfecteTrackingConnector">
<property name="updateQuerySlidingWindowTime" value="20"/>
<property name="updateQuerySlidingWindowUnit" value="MINUTES"/>
<property name="initialQuerySlidingWindowTime" value="1"/>
<property name="initialQuerySlidingWindowUnit" value="DAYS"/>
<property name="updateFrequency" value="10" />
<property name="updateFrequencyUnit" value="MINUTES" />
<property name="errorUpdateFrequency" value="10" />
<property name="errorUpdateFrequencyUnit" value="MINUTES" />
<property name="defaultIntegrationServiceItemId" value="DEFAULT_SERVICE_ITEM" />
<property name="pollNewServiceRequestEnabled" value="false" />
<property name="defaultIntegrationCategoryId" value="DEFAULT_EFECTE_CATEGORY"/>
<property name="serviceRequestPollCondition" value="and $creator$ = 'SefServicePortal'"/>
<property name="incidentPollCondition" value="and $creator$ = 'Webshop'"/>
</bean>
</property -->
<!-- property name="feedbackFormConnector">
<bean class="com.efecte.integration.connector.efecte.EfecteFeedbackFormConnector">
<property name="feedbackAttributes">
<bean class="com.efecte.integration.connector.configuration.FeedbackAttributes">
<property name="templateCode" value="feedback_management" />
<property name="folderCode" value="feedback" />
<property name="efecteIdAttribute" value="ticket_id" />
<property name="customerAttribute" value="customer" />
<property name="ratingAttribute" value="ticket_rating" />
</bean>
</property>
</bean>
</property -->
</bean>
<bean id="efecteKnowledgeBaseConnector" class="com.efecte.integration.connector.efecte.EfecteKnowledgeBaseConnector">
<property name="connectionConfiguration" ref="connectionConfiguration"/>
<property name="knowledgeBaseAttributes" >
<bean id="knowledgeBaseAttributes" class="com.efecte.integration.connector.configuration.KnowledgeBaseAttributes">
<property name="templateCode" value="knowledge_base_article"/>
<property name="pollingFolderCode" value="knowledge_base"/>
<property name="updateReadStatsFallbackFolderCode" value="knowledge_base"/>
<property name="ratingFallbackFolderCode" value="knowledge_base"/>
<property name="publishedInEssAttr" value="published_in_self_service"/>
<property name="publishedInEssValue" value="Yes"/>
<property name="deletedAttr" value="deleted"/>
<property name="nameAttr" value="solution_name"/>
<property name="descriptionAttr" value="solution_description"/>
<property name="categoryAttr" value="category"/>
<property name="efecteIdAttr" value="efecte_id"/>
<property name="updatedAttr" value="updated"/>
<property name="ratingAttr" value="rating"/>
<property name="rankingAttr" value="rating"/>
<property name="readStatsAttr" value="read_count"/>
<property name="keywordsAttr" value="solution_keywords"/>
<property name="keywordsSeparator" value=","/>
</bean>
</property>
</bean>
</beans>
Table of Contents