Technical Specification Document SessionM Cartridge SessionM©2018 Proprietary and Confidential SessionM Integration Version 19
TechnicalSpecificationDocumentSessionMCartridge
SessionM©2018ProprietaryandConfidential
SessionMIntegration
Version19
TechnicalSpecificationDocumentSessionMCartridgeSolutionarchitecture
SessionM©2018ProprietaryandConfidential Page2
1 Contents1. SUMMARY...........................................................................................................................................4
2. COMPONENTOVERVIEW.....................................................................................................................5
2.1 FUNCTIONALOVERVIEW.............................................................................................................5
SessionMProfileActions......................................................................................................52.1.1
SchedulerJobs.....................................................................................................................52.1.2
2.2 USECASE......................................................................................................................................6
2.3 LIMITATIONS,CONSTRAINTS.....................................................................................................10
2.4 ASSUMPTIONS...........................................................................................................................10
2.5 COMPATIBILITY..........................................................................................................................11
3. IMPLEMENTATIONGUIDE.................................................................................................................11
3.1 SETUP.........................................................................................................................................11
3.1.1CartridgeStructure...................................................................................................................11
3.2 INSTALLATION............................................................................................................................13
3.2.1 AddingtheCartridgesinSalesforceCommerceCloudStudio...........................................13
3.2.2 ActivatingtheCartridgeinBusinessManager...................................................................14
3.3 CONFIGURATION.......................................................................................................................15
3.3.1 ImportingMetadata..........................................................................................................15
3.3.2 SettingSessionMCustomSitePreference.........................................................................16
3.3.3 ImportingJobs...................................................................................................................19
3.3.4 ImportingServices.............................................................................................................28
3.4 CUSTOMCODESECTION............................................................................................................39
3.4.1 GenericSection..................................................................................................................40
3.4.2CustomCodeforPipeline.........................................................................................................47
4 OPERATION,MAINTENANCE.............................................................................................................64
4.1 DATASTORAGE..........................................................................................................................64
4.1.1 CustomerProfilelevelattribute........................................................................................64
4.1.2 Orderlevelattribute..........................................................................................................65
4.2 AVAILIBILITY...............................................................................................................................66
4.3 SUPPORT....................................................................................................................................66
5 USERGUIDE.......................................................................................................................................66
TechnicalSpecificationDocumentSessionMCartridgeSolutionarchitecture
SessionM©2018ProprietaryandConfidential Page3
5.1 ROLES,RESPONSIBILITES............................................................................................................66
5.2 BUSINESSMANAGER.................................................................................................................66
5.3 STOREFRONTFUNCTIONALITY...................................................................................................67
6 TESTING.............................................................................................................................................67
6.1 TESTCASES.................................................................................................................................67
7 RELEASEHISTORY..............................................................................................................................67
APPENDIXA:ErrorCodes&ErrorMessages.............................................................................................67
TechnicalSpecificationDocumentSessionMCartridgeSolutionarchitecture
SessionM©2018ProprietaryandConfidential Page4
1. SUMMARYThisdocumentprovidestechnicaloverviewandimplementationdetailsforeachSessionMserviceintegratedwithinSFCCplatformwithSiteGenesisControllerversion.TheSessionMcartridges(int_int_sessionm_core,int_sessionm_controllers)extendsthefunctionalityofCommerceCloudStorefront,enablingsynchronousandasynchronousaccesstoSessionMLoyaltyCustomerswithserviceslistedbelow.
CustomerProfileSyncUp
• SessionMNewAccoutCreation• SessionMCustomerprofileupdate• SessionMCustomerProfileSync• SessionMCustomerProfileSearch
SessionMRewardRedemption
• SessionMRewardStoreIntegration• SessionMRewardPointRedemption
SessionMExportFeeds
• OrderExport• MasterCatalogExport• NavigationCatalogExport• InventoryExport• RealtimeSyncupFailedCustomersExport
SessionMImportFeeds
• CampaignandPromotionImport• CouponImportImport
SessionMActivityTimeline
• ShowActivitytimelineoforderpurchased,orderconfirmed,offerused,tierchanged
SessionMRewardStore• GetavailableandactiveoffersfromSessionM• ClicktoPurchaseOffersfromSessionM• Useofferstopurchaseproducts
SessionMCleanupTiers• Cleanupthetierstagesthatifuseronthetoptierdon’tshowunnecessary
details.
TechnicalSpecificationDocumentSessionMCartridgeSolutionarchitecture
SessionM©2018ProprietaryandConfidential Page5
2. COMPONENTOVERVIEW
2.1 FUNCTIONALOVERVIEW
SessionMProfileActions2.1.1ThissectionprovidesanoverviewforCustomerProfileDataSyncupbetweenSalesforcecommercecloudandSessionMusingSessionMcustomerAPI’s.
SessionMprovidescustomerDataprofilesyncupforthefollowingusecasescenarios
SessionMNewAccoutCreation2.1.1.1SFCCcreateaccountfeatureonstorefronttobeleveragedtointegratewithPushnewaccountcreatedatatoSMforusercreation.CartridgewillbemakingSMPOST“Users”serviceAPIcalltoPOSTthecustomerprofiledataandcreateaccountwithSM.Afterusersuccessfullysubmitthecreateaccountformonstorefront,firstSFCCaccountwillbecreatedandonsuccessfulaccountcreationSM“users”servicePOSTAPIcallwillbemadetocreateprofilewithSM.SMservicecallwillhappeninbackgroundandincaseofsuccess/failurenousermessagewillbedisplayed.Incaseofservicecallfailure,cartridgewillmakeretrytoadefinednumberoftimesandthenafteritwillsendanotificationemailtoamerchantdefinedemailIDwitharawmessageinemailbody.
SessionMCustomerprofileupdate2.1.1.2AftersuccessfulSignIn/SignUptoSFCCaccountandmovingtoaccountsection,customerisabletoseetheirprepopulateddetailsonaccountform.Thisfeatureenablesthecustomertoupdatetheirexistingdetailsbyprovidingthedetailsonaccountfromwithnewcustomerdata.
SessionMCustomerProfileSync2.1.1.3OncethecustomerisSignIntoSFCCaccount,thisfeatureenablesthecustomertoretrieveanexistingcustomerprofilewithalltheprofile’sassociatedattribute
SessionMCustomerProfileSearch2.1.1.4SearchAPIservicetobecalledduringSFCCsigninprocess,whereSMIDisnotavailableintoSFCCcustomerprofile.AftersuccessfulauthenticationinvokethesearchcallforexternalIDandsyncuptherecords.
SchedulerJobs2.1.2TheSessionMcartridgeprovidessupporttoabatchjobstomultiplescenariosasgiveninsection2.1.1.ThesejobsaredefinedforspecifictimeintervalandareconfigurablethroughBusinessManageraspermerchantneed.
TechnicalSpecificationDocumentSessionMCartridgeSolutionarchitecture
SessionM©2018ProprietaryandConfidential Page6
2.2 USECASE
S.No Module HLSDescription1 CreateProfile VerifythattheguestusercanCreatecustomeratSessionMwhenuser
registersatSFCCstorefrontfromHeader/MyAccountsection
2 CreateProfile VerifythattheguestusercanCreatecustomeratSessionMwhenuserisinCheckoutpage
3 CreateProfile VerifythattheAnonymoususercompletesCheckoutflowandoptedforAccountCreationinThankYoupagethencanCreatecustomeratSessionMwhenuserregistersatSFCCstorefront.
4 CreateProfile VerifytheAuthtokenwasfetchedfromSMandStoredinSFCCwhenCustomerwascreated
5 CreateProfile VerifythatIfrealtimecreateuserfails,re-tryshouldbeattemptedandfailuretobeloggedandaflagshouldbemarkedagainsttherecordintoSFCCandemailnotificationtobesenttoSessionMforsamefailure
6 SignIn VerifytheAuthtokenwasfetchedfromSMandStoredinSFCCwhenCustomerLogsin
7 UpdateProfile VerifythatwhencustomerupdatesProfiledataatSFCC,sameshouldbeupdatedforcustomerprofiledataatSessionM.
8 UpdateProfile Verifythatwhencustomerupdates/editaddressdataatSFCC,sameshouldbeupdatedforcustomeraddressdataatSessionM.
9 UpdateProfile VerifythatwhencustomercreatesmultipleaddressdataatSFCC,sameshouldbeupdatedforcustomeraddressdataatSessionM.
10 UpdateProfile VerifythatwhencustomerdeletesaddressdataatSFCC,sameshouldbeupdatedforcustomeraddressdataatSessionM.
11 UpdateProfile Verifytheprefferedaddress,ifcustomersmakesaaddressaspreffered
12 UpdateProfile VerifythatIfrealtimeupdateuserfails,re-tryshouldbeattemptedandfailuretobeloggedandanemailnotificationtobesenttoSessionMforsamefailure
TechnicalSpecificationDocumentSessionMCartridgeSolutionarchitecture
SessionM©2018ProprietaryandConfidential Page7
13 UpdateProfile VerifythecustomerdatafromSessionMforalreadysynced-upcustomerduringloginatSFCCstorefrontandupdatethecustomerdataatSFCCandcustomerrewardpoints
14 UpdateProfile VerifythecustomerdatafromSessionMforalreadysynced-upcustomerduringloginonCheckoutprocessatSFCCstorefrontandupdatethecustomerdataatSFCCandcustomerrewardpoints
15 UpdateProfile VerifytheFlag"IsSMProfileSyncFailed"ismarkedastrueifSMisdown(foralreadysynced-upcustomerduringloginonCheckoutprocessatSFCCstorefront)
16 SearchProfile VerifytheSFCCalreadyregisteredcustomerwhosemakingfirsttimesync-upcallwithSessionMsystembylogingin.SessionMwillsearchforuserinSessionMsystembasedomemailid.
17 SearchProfile VerifytheSFCCalreadyregisteredcustomerwhosemakingfirsttimesync-upcallwithSessionMsystembyloginin.SessionMwillsearchforuserinSessionMsystembasedomemailid.IfthesearchedemailIddoesnotexistthenupdateaFlagUsernotSyncedinSFCC
18 SyncProfile VerifytheBatchJobtoPulldatafromSessionMforrealtimefailurerecordsonly(RegisteredandsyncedCustomerdatainboththesystem)
19 BatchJobforRecordSync
VerifyBatchJobSuccess/FailurenotificationtoBatchUser
20 RewardsStore Verifythe"RewardsStore"linkispresentin"MyAccount"section(leftpanel)
21 RewardsStore Verifythe"RewardsStore"linkispresentin"MyAccount"headersection
22 RewardsStore VerifytheRewardspageisopeningafterclikingonRewardslink
23 RewardsStore VerifyRewardspageisredirectedtoerrorpageafterclikingonRewardslink,ifAuthtokenisnotgeneratedORduetoanyothererror
24 RewardsStore VerifytheBMpagehasanoptiontoturnon/offSMRewardsPage
25 InventoryFeed VerifytheInventoryJobbyrunningorscheduling
26 InventoryFeed VerifythatemailissenttotheconfiguredemailaddresswithJob
TechnicalSpecificationDocumentSessionMCartridgeSolutionarchitecture
SessionM©2018ProprietaryandConfidential Page8
status
27 CatalogFeed VerifytheCatalogJobbyrunningorscheduling
28 CatalogFeed VerifythatemailissenttotheconfiguredemailaddresswithJobstatus
29 PromotionCoupon VerifythattheSessionMCoupon/Promotion/CouponfeedisimportedfromtheSFTPlocationtoBM
30 PromotionCoupon VerifythePromotion/Campaign/CouponinBM.
31 PromotionCoupon RunthebatchjobwithnofeedfileintheFTPfolder.
32 PromotionCoupon Runthebatchjobwithafeedfilewhichisnotintheagreedformat(formattobedefined)
33 PromotionCoupon RunthebatchjobwithincorrectusernameandpasswordintheTransferfromFTPcomponentfromBM.
34 PromotionCoupon VerifythatemailissenttotheconfiguredemailaddresswithJobstatus
35 PromotionCoupon VerifythatSMImportedPromotion/CampaignisappliedduringCheckout/Orderplacementjourney
36 OrderExport VerifytheconfigurationforOrderExport-viaAPICallORviaFeedJob
37 OrderExport VerifythatSFCCOrderstoSessionMviaAPICall
38 OrderExport VerifythatemailissenttotheconfiguredemailaddresswithJobstatus
39 OrderExport VerifythatSFCCOrderstoSessionMviaSFTP
40 OrderExport VerifythatemailissenttotheconfiguredemailaddresswithJobstatus
41 OrderExport VerifytheconfigurationforPaymentmodeismaskedORfullencrypted
42 OrderExport VerifytheOrderXMLforPaymentmode
43 OrderExport VerifytheOrderXMLforSMprovidedCoupon
TechnicalSpecificationDocumentSessionMCartridgeSolutionarchitecture
SessionM©2018ProprietaryandConfidential Page9
44 OrderExport VerifytheOrderXMLforSMSalesAssociateID
45 OrderExport EverytimewhenthestatusoftheorderchangeswesendtheoffertoSessionMthattheStatusoftheorderischanged
46 OrderExport CheckiftheOrderissenttoSessionMandhasofferattachedtoitthennotifythatOfferwithdetailstoSessionMtomaketheOfferasredeemed.
47 Redemption Verifyregistereduserisabletoredeemtherewardspointsduringcheckout
48 Redemption Verifyonbillingpagetherewardspointssectionisdisplayed
49 Redemption Verifytheredeemablepointsvaluecannotbegreaterthan%ageofOrdertotal(%ageisdefinedinBM)
40 Redemption VerifytheredemptioninformationissharedwithSMandthecustomerpointbalanceisupdated
51 Redemption VerifyifRedemptionorderAPIservicecalfails,makeretryifstillfailsthenmarkthatorderforJObProcessing.Userwillbeseethankyoupage.evenOrderAPIcallfailed,weneedtoupdatethebalanceintoSFCC.
52 Redemption VerifytheJobshouldpickthefailedordersandmakeorderAPIcallfortheseordersandupdatethepointsbalanceintoSFCCandordercustomattributeswithorderAPIresponsedata
53 Redemption VerifytheCustomPreference"Redemptionlimitinpercentage"inBM
54 Redemption VerifytheCustomPreference"Valueof1SessionMpoint"inBM
55 RetryCreateProfile Verifythatthejobisrunningifandasscheduled.
56 Tier VerifytheTierstatusofthecustomerandTierDisplay
57 Tier VerifyTiershouldbeupdateddynamicallyonthebasisoforderplacementusingRedemptionpoints
58 SalesAssociateID VerifythatSalesAssociateIDfieldispresentInBusinessManagerforeachordercreated
TechnicalSpecificationDocumentSessionMCartridgeSolutionarchitecture
SessionM©2018ProprietaryandConfidential Page10
59 SalesAssociateID Verifythatifaddedonstorefront,whenanusermakesanorder,anoptiontoaddSalesAssociateIDispresentoncheckoutpage.
60 SalesAssociateID VerifythatinBusinessManagerCustomPreferences>SessionM,SalesAssociateFieldNamecanbemodified.
61 ActivityTimeline VerifytheUserandShowlast500ActivitiesUserhasdone.
62 ActivityTimeline SetpaginationandnumberofrecordsinthepreferencestoseedataintheActivitytablepage.
63 RewardStore VerifyandgetalltheavailableoffersrelatedtothatuserwhichareactiveandareavailablefromSessionM
64 RewardStore GetuserfunctionalitytopurchasetheavailableoffersfromSessionMusingtheiravailablerewardpoints
2.3 LIMITATIONS,CONSTRAINTSThissectiondetailsthelimitations,constraintsandthebestpracticeformerchantsplanningtointegratetheSessionMcartridgewithCommerceCloudStorefront.
S.No Description1 CommerceClouddoesnothavecapabilitytovalidatecustomersignupemailbelongwith
him/her.SessionMneedtoapplyvalidationchecksattheirendtopreventanypossiblefraudsasifacustomercreatesanSFCCaccountwithanemailwhichisnotownedbyhim/her
2 ThereisapossibilityoftherewardspointinSFCCnotbeinsyncwithSessionM,ifprofilesyncduringloginfailsoriftheorderredemptionservicefailsduringcheckout.TominimizethemisuseoftheredemptionpointsweshouldruntheOrderRedemptionfeedJobonveryfrequentmanneraslowaspossible.ButstilltherewillatimeframebetweenRedemptionsServicefailureatcheckoutandOrderRedemptionJobRan,duringtheperiodpointswillnotbeinSync
3 MerchantneedtowhitelisttheIPaddressintoSessionMfortheintegrationandProductionenvironments
2.4 ASSUMPTIONSThissectiondetailstheassumptionswhileintegrationSessionMcartridge
S.No Description1 ExistingcustomerDataSyncupbetweenSFCCandSMhastobetakencareofflinebyMerchants2 SFCCwillbesendingonlythecustomerprovideduserProfile/AddressdatatoSessionM3 NoBatchJobtoPushcustomerupdatesonRealtimefailure4 SFCCprovidedoutoftheboxCustomerProfilefieldsonlytobeconsideredforsyncup5 SFCCCustomerno.willbeusedtoasexternalIDintoSM,SMneedtousethesameduring
TechnicalSpecificationDocumentSessionMCartridgeSolutionarchitecture
SessionM©2018ProprietaryandConfidential Page11
legacydatamigration6 Incaseofmulti-channelupdate(SFCC,Kiosketc),SFCCcustomerIDisconsideredasexternal_id
andotherchannelcustomeridsareconsideredasproxyidsatSessionMside.7 Theorderrewardsredemptionjobwouldbeexecutedtoaverylowfrequentlyaspossible,so
thatthepossibilityofrewardpointsinSFCCnotbeinginsyncwithSessionMisminimaltoavoidmisuseofpoints
8 IfthereisacasewhereacustomergetsadiscountthroughSessionMrewardsredemptionthatheisnoteligibleforduetoSFCCrewardspointsnotbeinginsyncwithSessionM.Thenthecaseneedstobehandledbythemerchantmanually.
9 InCOPlaceOrder.JSorCOPlaceOrder.XML-OrderRedemptionAPIcallneedtobemadebeforePlacingtheOrder.BecauseincaseOrderRedemptionAPIthrowserror,thensystemwillnotallowtoFailOrder,BecauseOrderwithcreatedstateonlycanbeFailed.
10 LookandfeelofRewardsStorepagewillbemanagedbyMerchants/SessionM.11 Merchants/SessionMwillworktogethertomatchtheRewardstorestyleguidewithstorefront12 UIchangesandformvalidationhastobehandledbyMerchantonly,cartridgeonlysupport
basicSFCCoutoftheboxformvalidations13 AuthToken’sexpiryismanagedbySManditisgreaterorequaltoSFCCstorefrontsession14 LookandfeelofRewardsStorepagewillbemanagedbyMerchants/SessionM.15 Merchants/SessionMwillworktogethertomatchtheRewardstorestyleguidewithstorefront16 AuthTokensavedinCustomer’ssmAuthTokenattributewouldbesendtoSMforrenderingthe
Rewardstorepage17 AuthToken’sexpiryismanagedbySManditisgreaterorequaltoSFCCstorefrontsession
2.5 COMPATIBILITYThiscartridgeisintegratedandtestedwithsitegenesiscodebase17.4andcompatibilitymode16.2ofCommerceCloud.
3. IMPLEMENTATIONGUIDE
3.1 SETUPThissectiondescribestheControllerstructureandnameoffilesinSessionMcartridges.
3.1.1CartridgeStructureint_sessionm_core:
• package.json–initializehookorservice
cartridge/scripts:
• adaptor/CustomerProfile.js
TechnicalSpecificationDocumentSessionMCartridgeSolutionarchitecture
SessionM©2018ProprietaryandConfidential Page12
• adaptor/Rewards.js• common/CommonConstants.ds• facade/CustomerProfileFacade.js• facade/RewardsFacade.js• helper/SMHelper.js• jobs/DownloadFilesFromSFTP.js• jobs/OrderExportFeed.js• jobs/RedemptionOrderExport.js• jobs/RetrieveMultipleProfilesJob.ds• jobs/SMFetchTierDataJob.js• jobs/UploadFilesToSFTP.js• jobs/RetryCreateProfiles.js• pipelets/AppendTimeStamp.ds• pipelets/GetCatalogExportDetail.ds• pipelets/GetInventoryExportDetail.ds• pipelets/RedeemRewards.ds• pipelets/RegisterCustomer.ds• pipelets/RemoveRewardPoints.ds• pipelets/RemoveRewardsRedemption.ds• pipelets/RetrieveCustomer.ds• pipelets/RewardsPoints.ds• pipelets/UpdateCustomer.ds• services/init/ServiceInit.js• static/default/css/sessionm.css
Templates:
• default/account/tierdetails.isml• default/checkout/redeemablepoints.isml• default/mail/notification.isml• default/rewards/rewards.isml
Properties:
• resources/sessionm.properties
int_sessionm_pipelines:
• SessionM.XML
Pleasereferthescreenshotbelow:
TechnicalSpecificationDocumentSessionMCartridgeSolutionarchitecture
SessionM©2018ProprietaryandConfidential Page13
3.2 INSTALLATION
3.2.1AddingtheCartridgesinCommerceCloudStudioTouploadthecartridgesintotheSFCCserveryoufirstneedtoaddthecartridgesintoCommerceCloudstudio.Inordertodothis,followtheseinstructions:
1. InCommerceCloudUXStudioselectinthemenuFile!Import.2. IntheimportdialogselectGeneral!Existingprojectsintheworkspaceandclicknext3. EnsureSelectarchivefileisselectedandselectthecompressedcartridgefilebyclickingonthe
Browsebutton.4. ClickFinishtoimportthecartridge.5. StudiowillnowaskyouifyouwanttolinkthecartridgetoyouractiveCommerceCloudserverconnection.Clickonyesormanuallylinkthecartridgetoyourserverbycheckingtheprojectunderprojectreferencesintheserverconnectionproperties
TechnicalSpecificationDocumentSessionMCartridgeSolutionarchitecture
SessionM©2018ProprietaryandConfidential Page14
3.2.2ActivatingtheCartridgeinBusinessManagerBeforetheSessionMfunctionalitycanbecomeavailabletoSiteGenesis,thecartridgeshavetobeaddedtothecartridgepathoftheSiteinquestion.Inordertodothis,followthefollowinginstructions:
1. LogintoBusinessManager2. NavigatetoAdministration!Sites!ManageSites.3. ClickonthesitenameandonthenextpagegototheSettingstab.4. InthetextboxCartridgesappendtothe“:int_sessionm_controllers:int_sessionm_core”before
cartridgeinclusion5. ClickApply.6. ToactivatethecartridgefortheSandbox/Development/Productioninstancesrepeatsteps4and5AfterselectingtheappropriateinstancefromtheInstanceTypedropdownmenu.7. Repeatsteps3to6foreachsitethatistouseSessionM.
TechnicalSpecificationDocumentSessionMCartridgeSolutionarchitecture
SessionM©2018ProprietaryandConfidential Page15
3.3 CONFIGURATION
ThischapterwillguidetheusertoconfigurethecartridgeinBusinessManager
3.3.1 ImportingMetadataAllimportfilescanbefoundintheimportfolderwithincartridgeinstallationpack.ToimportallnecessarySessionMsettings,logintotheBusinessManagerandnavigatetoAdministration!SiteDevelopment!Import&Export.NowuploadthesessionM_metadata.xmlfileusingtheuploadbuttonand,finallygobackandusetheimportbuttontoimportthefile.Afterasuccessfulimport,youwillbeabletoconfigurethecustomsitepreferencesaccordingtoyourSessionMaccountdata.Also,verifytheCustomerProfileAttributesinBM(Site->Customers->customers)openanycustomerandnavigatetotheAttributestab.Itshouldbeasbelow:
TechnicalSpecificationDocumentSessionMCartridgeSolutionarchitecture
SessionM©2018ProprietaryandConfidential Page16
3.3.2SettingSessionMCustomSitePreferenceInBusinessManager,navigatetotheSiteGenesisSite!SitePreferences!CustomPreferences.AcustomsitepreferencegroupwiththeIDSessionMisavailable.PleaseselectitandedittheattributesaccordingtoyourSessionMaccountdataandthedatashowninfigure.InadditiontotheonessuppliedbySessionMfilloutthefollowingpropertieswiththevalueslistedagainstthem:
TechnicalSpecificationDocumentSessionMCartridgeSolutionarchitecture
SessionM©2018ProprietaryandConfidential Page17
Sr.No. SitePreferenceID Description DefaultValue
1 IsSMEnabledEnable/DisablesSessionMfeaturesglobally. YES
2 SMApiKey
TheAPIKeyforyourPropertyintheSessionMPlatform.
TechnicalSpecificationDocumentSessionMCartridgeSolutionarchitecture
SessionM©2018ProprietaryandConfidential Page18
3 SMJsUrlTheAPIendpointforyourAPIrequeststoSessionM.
4 smAdminEmailEmailAddresstosendSFCCnotificationsto
5IsSMRewardsPageEnabledcustomer
Enable/DisablesSessionMRewardStorefeature Yes
6 SMRetryAttempt
HowmanytimesdoesSFCCretryAPIrequeststoSessionM. 3
7 smNoOfOrderExported
ThenumberofordersSFCCexportstoSessionMinasinglebatch 10
8 smCcNoExportType
ChoosehowSFCChandlesCreditCardNumbers.Maskednumbersstillexposelast4,encryptedareencryptedwiththepublickeyexposedbelow. Encrypted
9 smOrderRedemetionLimit
ThemaximumpercentageofacartwhichcanbediscountedusingPoints. 80%
10 smPointValueValueofeachLoyaltyPointinUSD Yes
11smRewardsRedemptionEnabled
Enables/DisablestheShopWithPointsfeatureatcheckout. Yes
12 smRewardPageCSSEWCRewardsCloudCSSPath
13 smRewardPageJS EWCRewardsCloudJSPath
14 SMMaxOffers EWCRewardsMaxOffers 1
15 SMIncrements EWCRewardsIncrements 1
TechnicalSpecificationDocumentSessionMCartridgeSolutionarchitecture
SessionM©2018ProprietaryandConfidential Page19
16 smOfferIdSMOfferIdtobesendinOrderAPI 42
17smOrderSalesAssociateIDFieldName
SalesAssociateIDfieldwhichcustomercanfill SalesAssociateID
19 smExternalIdType ExternalIdtype SalesForce
20SM_Default_Status_to_complete_Order_Export
DefaultStatustocompleteOrderExport 5
21SM_ISOrder_Export_on_Multiple_Status
EnableOrderExportonMultipleStatus 1
22SessionM_Active_Order_Filter_Values
SessionMActiveValuesForFilteringOrders 0
23 SessionM_Activity_Count SessionMActivityCount 5
24 SessionM_Activity_Pagesize SessionMActivityPagesize 10
3.3.3 ImportingJobsPrerequisite:Makesuretoappend“int_sessionm_pipelines”inBusinessManagerunderManageSites>Settingsforyoursite
Intheintegrationpackage,ajobdefinitionisprovidedinthesessionM_jobs.xmlfile.Allimportfilescanbefoundintheimportfolderwithinthecartridgeinstallationpack.Toimportthisfilefollowtheinstructionsbelow:
1. InBusinessManagernavigatetoAdministration!Operations!Import&Export.2. Clickontheuploadbuttonandinthenextscreenselectthefilebyclickingthebrowsebutton.
Noticethatthefileisintheimportsubdirectory.Afteryouhaveselectedthefileclickontheuploadbutton.
3. Afterthefilehasbeenuploadedclickonthebackbutton.IntheJobSchedulesarea,clickontheImportbutton.
4. SelectthefileyoujustuploadedandclickontheNextbutton.5. AfterthefileissuccessfullyvalidatedclickontheNextbutton.6. MakesureMERGEisselectedandclickontheImportbutton:
PleasefindbelowscreenshotsforImportJobsandlistofJobs:
TechnicalSpecificationDocumentSessionMCartridgeSolutionarchitecture
SessionM©2018ProprietaryandConfidential Page20
TechnicalSpecificationDocumentSessionMCartridgeSolutionarchitecture
SessionM©2018ProprietaryandConfidential Page21
Enablethejobsthatneedtobeactivated, apply the configurations setting of scheduling into General and Sites sections one by one
3.3.3.1 SMRetrieveMultipleProfileJobThisJobwillpickthelistofcustomerswhicharefailedtosyncedonSFCCandwithflagvalue“IsSMProfileSyncFailed=TRUE”and“IsSMProfileCreationFailed”=FALSEwhichisbeingsetatthetimeofSignIntoSFCCaccountandwhenanewcustomerisregisteredinSessionM.
SFCCreadtheresponsecontainingSMID,external_idandemailandupdatesyncstatusas“IsSMProfileSyncFailed=FALSE”andcustomerprofilerespectively
3.3.3.2 SMExportInventoryfeedJobTheSFCCjob’sframeworkwouldbeleveragedtocreatetheInventoryfeedexportfile.ThefilewillbeintheOOTBSFCCformatandwouldsendtoanSMSFTPlocation.
TechnicalSpecificationDocumentSessionMCartridgeSolutionarchitecture
SessionM©2018ProprietaryandConfidential Page22
3.3.3.3 SMProductExportFeedTheexportfeedwouldexportallthecatalogspresentinSFCCi.e.theMastercatalogsandallthesubsequentNavigationcatalogsassignedtothesitesinSFCC.
1. ThexmlfiletobeexportedwouldbecreatedintheSFCCIMPEXfolder.2. AfterthefilehasbeencreateditwouldbeexportedtotheSessionMSFTPlocation.3. AfterthesuccessfulexportthefilewouldbearchivedatapredeterminedlocationinIMPEX.
IfSFTPtransferfailsthenthejobfinisheswitherrorandemailnotificationissentthroughemail
TechnicalSpecificationDocumentSessionMCartridgeSolutionarchitecture
SessionM©2018ProprietaryandConfidential Page23
3.3.3.4 SMExportNavigationCatalogFeedJobSFCCnavigationcatalogfeedjobisusedtoexportnavigationcatalogtoSessionMisSFCCOOTBformat.
TechnicalSpecificationDocumentSessionMCartridgeSolutionarchitecture
SessionM©2018ProprietaryandConfidential Page24
3.3.3.5 SMImportCouponsJob1. CouponfeedxmldocumentwouldbeintheSFCCformat.2. SiteforwhichthefilewillbeimportedwillbesetinthejobbythemerchantinSFCC.Aspartof
SessionMcartridgejobsetupisdoneforSFCCSiteGenesissite.3. ThexmlfiletobeimportedtoSFCCIMPEXfirst.4. AfterfilehasbeensuccessfullytransferredtoSFCCIMPEX,itwouldbeimportedinSFCC.5. AfterthesuccessfulimportthefilewouldbearchivedatapredeterminedlocationinIMPEX.6. IffileisnotavailableonSFTPtransferthenthejobfinisheswitherrorandemailnotificationis
sentthroughemail.
3.3.3.6 SMImportPromotionsJob1. Campaign&PromotionfeedxmldocumentwouldbeintheSFCCformat.2. SiteforwhichthefilewillbeimportedwillbesetinthejobbythemerchantinSFCC.Aspartof
SessionMcartridge,jobsetupisdoneforSFCCSiteGenesissite.3. ThexmlfiletobeimportedtoSFCCIMPEXfirst.4. AfterfilehasbeensuccessfullytransferredtoSFCCIMPEX,itwouldbeimportedinSFCC.5. AfterthesuccessfulimportthefilewouldbearchivedatapredeterminedlocationinIMPEX.6. IffileisnotavailableonSFTPtransferthenthejobfinisheswitherrorandemailnotificationis
sentthroughemail.
TechnicalSpecificationDocumentSessionMCartridgeSolutionarchitecture
SessionM©2018ProprietaryandConfidential Page25
3.3.3.7 SMOrderExportHTTPSJobOrderexportfeedwouldbeleveragingthelatestSFCCJobframework.AlltheorderswouldbeexportedtoSessionMthroughtheJobfeed.
InordertorunOrderExportjob,merchantshouldfirstimportcertificateusingbelowsteps:
1. MerchantshouldcreateavalidCertificateontheirend.2. ImportCertificateinBusinessManagerunderAdministration!Operations!PrivateKeysand
Certificates3. WhileImportingsetAliasas‘sm-orderexportfeed-certificate’.
Referbelowforthesame:
TechnicalSpecificationDocumentSessionMCartridgeSolutionarchitecture
SessionM©2018ProprietaryandConfidential Page26
TheorderswouldbeexportedthroughservicecallstoSessionMandtheservicecallbodywouldbeinSFCCsupportedXMLformat
3.3.3.8 SM–SFCCTierStatusDisplay
SFCCtierdatabatchjobwillfetchtierdetailsfromSessionMandstoredthedetailincustomobjectsinSFCCinordertodisplaytierdetailsoncustomeraccountpageaswellasonbillingpage.
1. ABatchJobconfiguredinSFCCBusinessManagershallrun(asperthesetschedule),whichinternallycallSessionMtierdataAPItofetchtierdetails.
2. BasedonresponsereceivedfromSessionM,SFCCcreatecustomobjectforeachtierinordertodisplaytierstatusonaccountandbillingsection.
TheTierinformationhelpcustomertoknowtheircurrenttierstatusandnextpossibletier.
TechnicalSpecificationDocumentSessionMCartridgeSolutionarchitecture
SessionM©2018ProprietaryandConfidential Page27
3.3.3.9 RetryCreateProfilesThisJobwillpickthelistofcustomersfromSFCCwhichhaveattributevalue“smUUID”=nullwhichissetwhenanewcustomerisregisteredinSessionM.
It’llcheckifthecustomerexistsonSessionMPlatform.Ifthecustomerexists,itissyncedonSFCCandsmUUIDissetwithuseridfromSessionM.IfthecustomerdoesnotexistonSessionM,customeriscreatedonSessionMPlatformandsyncedwithSFCC.
TechnicalSpecificationDocumentSessionMCartridgeSolutionarchitecture
SessionM©2018ProprietaryandConfidential Page28
3.3.4 ImportingServicesToimporttheservicefilefromintegrationpackage,followtheinstructionsbelow:
1. InBusinessManagernavigatetoAdministration!Operations!Import&Export.2. ClickontheuploadbuttonandinthenextscreenselectthefilesessionM_service.xmlbyclicking
thebrowsebutton.Noticethatthefileisintheimportsubdirectory.Afteryouhaveselectedthefileclickontheuploadbutton.
3. Afterthefilehasbeenuploadedclickonthebackbutton.IntheImport/exportServicearea,clickontheImportbutton.
4. SelectthefileyoujustuploadedandclickontheNextbutton.5. AfterthefileissuccessfullyvalidatedclickontheNextbutton.6. MakesureMERGEisselectedandclickontheImportbutton.
BelowisthelistofServicesconsumedinSessionMcartridge:
TechnicalSpecificationDocumentSessionMCartridgeSolutionarchitecture
SessionM©2018ProprietaryandConfidential Page29
3.3.4.1 SessionMNewAccoutCreationServiceSFCCCreateProfileservicebuildsanewstandardprofileforacustomer.ProvidestheprimaryoperationforaddingastandardprofiletotheSFCCandspecifyingthatcustomer’scharacteristics.BelowaretheserviceConfigurations:
ServiceConfigurationField ValueServiceName/ID int_sessionm_createprofile
Profile int_sessionm_serviceprofile
Credentials int_sessionm_createprofile
TechnicalSpecificationDocumentSessionMCartridgeSolutionarchitecture
SessionM©2018ProprietaryandConfidential Page30
3.3.4.2 SessionMCustomerProfileUpdateSFCCupdateProfileserviceupdatesastandardprofileforacustomerwithnewdata.
BelowaretheserviceConfigurationsforcustomerprofileUpdate:
ServiceConfigurationField ValueServiceName/ID int_sessionm_updateprofile
Profile int_sessionm_serviceprofile
Credentials int_sessionm_updateprofile
TechnicalSpecificationDocumentSessionMCartridgeSolutionarchitecture
SessionM©2018ProprietaryandConfidential Page31
3.3.4.3 SessionMCustomerProfileSyncSFCCRetrieveProfileServiceretrievesanexistingstandardprofileforacustomerwithalloftheprofile’sassociatedattributes.BelowaretheserviceConfigurationsforcustomerprofilesync:
ServiceConfigurationField ValueServiceName/ID int_sessionm_retrieveprofile
Profile int_sessionm_serviceprofile
Credentials int_sessionm_retrieveprofile
TechnicalSpecificationDocumentSessionMCartridgeSolutionarchitecture
SessionM©2018ProprietaryandConfidential Page32
3.3.4.4 SessionMCustomerProfileSearchSFCCsearchprofileservicesearchesforanexistingstandardcustomerprofile.Returnsthespecifiedcustomerprofilewithallofitsassociatedattributes.
BelowaretheserviceConfigurationsforcustomerprofileSearch:
ServiceConfigurationField ValueServiceName/ID int_sessionm_searchprofile
Profile int_sessionm_serviceprofile
Credentials int_sessionm_searchprofile
TechnicalSpecificationDocumentSessionMCartridgeSolutionarchitecture
SessionM©2018ProprietaryandConfidential Page33
3.3.4.5 SessionMExportOrderServiceSFCCExportOrderserviceviaHTTPSisusedtoexportordersplacedbyloggedincustomertoSessionM.TheordersareexportedindefaultSFCCformat.
BelowaretheserviceConfigurationsforSMOrderExport:
ServiceConfigurationField ValueServiceName/ID int_sessionm_exportorder
Profile int_sessionm_serviceprofile
Credentials int_sessionm_exportorder_servicecredential
TechnicalSpecificationDocumentSessionMCartridgeSolutionarchitecture
SessionM©2018ProprietaryandConfidential Page34
3.3.4.6 SessionMOrderServiceSFCCOrderserviceisusedtoexportorderstoSFTPforredemptionofrewardpoints.
BelowaretheserviceConfigurationsforSMOrderService:
ServiceConfigurationField ValueServiceName/ID int_sessionm_order
Profile int_sessionm_serviceprofile
Credentials int_sessionm_order_credential
TechnicalSpecificationDocumentSessionMCartridgeSolutionarchitecture
SessionM©2018ProprietaryandConfidential Page35
3.3.4.7 SessionMRetrieveMultipleProfileServiceSessionMRetrieveMultipleProfileserviceretrievesmultiplestandardprofilesforcustomerswithalloftheirassociatedattributes.
BelowistheserviceConfigurationsforSMRetrievemultipleCustomerService:
ServiceConfigurationField ValueServiceName/ID int_sessionm_retrievemultipleprofile
Profile int_sessionm_serviceprofile
Credentials int_sessionm_retrievemultipleprofile
TechnicalSpecificationDocumentSessionMCartridgeSolutionarchitecture
SessionM©2018ProprietaryandConfidential Page36
3.3.4.8 SessionMSFTPServiceSFCCSFTPserviceisusedtoexport/importfilesbetweenSFCCIMPEXandSessionMSFTPserver.BelowaretheserviceConfigurationsforSMOrderService:
ServiceConfigurationField ValueServiceName/ID int_sessionm_sftpservice
Profile int_sessionm_serviceprofile
Credentials int_sessionm_sftpservice
TechnicalSpecificationDocumentSessionMCartridgeSolutionarchitecture
SessionM©2018ProprietaryandConfidential Page37
3.3.4.9 SessionMTierDetailServiceSFCCtierdatabatchjobwillfetchtierdetailsfromSessionMandstoredthedetailincustomobjectsinSFCCinordertodisplaytierdetailsoncustomeraccountpageaswellasonbillingpage.
BelowaretheserviceConfigurationsforSMOrderService:
ServiceConfigurationField ValueServiceName/ID int_sessionm_tierdetail
Profile int_sessionm_serviceprofile
Credentials int_sessionm_tierdetail
TechnicalSpecificationDocumentSessionMCartridgeSolutionarchitecture
SessionM©2018ProprietaryandConfidential Page38
3.3.4.10 SessionMActivityTimelineServiceSFCCActivityTimelinepageincaseifyouwantyouruserstoseehowmanypointsarethereintherewalletandwhataretheirrecenttransactionslooklike.WhichwillappearinTierProgresstabunderAccountDetailsection.
BelowaretheserviceConfigurationsforSMOrderService:
ServiceConfigurationField ValueServiceName/ID SessionM_Activity_Timeline
Profile int_sessionm_serviceprofile
Credentials Activity_Timeline
TechnicalSpecificationDocumentSessionMCartridgeSolutionarchitecture
SessionM©2018ProprietaryandConfidential Page39
3.4 CUSTOMCODESECTION
Pre-Requisite:Makesurethecontrollercartridgesofsitesite-genesisis(say,e.g.app_sitegenesis_controllersand“int_sessionm_core,int_sessionm_controllers”,and“int_sessionm_pipelines”arespecifiedinSiteSettingspathunderManageSites>MerchantSiteaspercurrentsite.
Thissectioncoversgenericcodechangesforcontroller.
[Note]:AllSitesrelatedconstantsaredefinedinCommonConstants.jsunderint_sessionm_corecartridge.Pleasereferthesamefiletoupdatethevalueforfuturereference.
TechnicalSpecificationDocumentSessionMCartridgeSolutionarchitecture
SessionM©2018ProprietaryandConfidential Page40
3.4.1GenericSection
Core-billing.js(compiledtoapp.js)
Update“exports.init”FunctionAddbelowcodetoaddrewardredemptiondiv
varselectedPaymentMethod=$selectPaymentMethod.find(':checked').val();var$redeemRewards=$('#redeempoints');var$removeRewards=$('#removepoints');
AddnewredeemRewardsclickfunctionjustaftercreditCardListonchangefunctiontodisplayRewardpage
//selectcreditcardfromlist$('#creditCardList').on('change',function(){varcardUUID=$(this).val();if(!cardUUID){return;}populateCreditCardForm(cardUUID);//removeserversideerror$('.required.error').removeClass('error');$('.error-message').remove();});$redeemRewards.on('click',function(e){ e.preventDefault();
TechnicalSpecificationDocumentSessionMCartridgeSolutionarchitecture
SessionM©2018ProprietaryandConfidential Page41
varredeemableAmount=$("#rewardAmount").val(); varurl=util.appendParamsToUrl(Urls.rewardsPoints,{redeemableAmount:redeemableAmount,format:'ajax'}); $.getJSON(url,function(data){varfail=false;varmsg='';if(!data.success){msg=Resources.BAD_RESPONSE;fail=true;$('#rewardAmount-error').html('Unbaletoredeemgivenamount,pleasetryagainwithotheramount');}else{window.location.assign(Urls.billing);}});});$removeRewards.on('click',function(e){ e.preventDefault(); varredeemableAmount=$("#rewardAmount").val(); varurl=util.appendParamsToUrl(Urls.removeRewardsPromo,{format:'ajax'}); $.getJSON(url,function(data){varfail=false;varmsg='';if(!data.success){msg=Resources.BAD_RESPONSE;fail=true;}else{window.location.assign(Urls.billing);}});});//SMredemption$('#rewardAmount').on('change',function(e){ varamount=$("#rewardAmount").val(); if(amount%1!==0){ varvalue=$(this).val(); amount=parseFloat(value).toFixed(2); $(this).val(amount); } vardollerValue=SitePreferences.SM_AMOUNT_VALUE; vartotal=Math.round((amount/dollerValue)*100)/100; $('#pointslabel').html(total);});
Update“exports.init”FunctionAddbelowcodetoaddofferpurchaseandofferredemptionandcancelappliedcoupondiv.
$('body').on('click','button.offer-redeem',function(e){e.preventDefault();varofferId=$(this).attr('id');varname=$(this).attr('name');
TechnicalSpecificationDocumentSessionMCartridgeSolutionarchitecture
SessionM©2018ProprietaryandConfidential Page42
varoffer={'reference_id':offerId,'name':name};varurl=util.appendParamsToUrl(Urls.redeemOffer,{offerId:offerId,format:'ajax'});$.getJSON(url,function(data){varfail=false;varmsg='';if(!data.success){msg=Resources.BAD_RESPONSE;fail=true;alert('error');}else{window.location.assign(Urls.billing);}});});$('body').on('click','button.purchase-offer',function(e){e.preventDefault();varofferId=$(this).attr('offerId');varretailerId=$(this).attr('retailerId');console.log('offerId:'+offerId);varname=$(this).attr('name');varoffer={'reference_id':offerId,'name':name};varurl=util.appendParamsToUrl(Urls.purchaseAvailableOffer,{offerId:offerId,retailerId:retailerId,format:'ajax'});$.ajax({dataType:'json',url:url,async:true}).done(function(response){ if(response.success){ window.location.assign(Urls.billing); }else{ alert("Error:"+response.result.error); }});});$('body').on('click','button.cancel-redeem',function(e){e.preventDefault();varofferId=$(this).attr('id');varurl=util.appendParamsToUrl(Urls.cancelRedeem,{offerId:offerId,format:'ajax'});$.getJSON(url,function(data){varfail=false;varmsg='';if(!data.success){msg=Resources.BAD_RESPONSE;fail=true;alert('error');}else{
TechnicalSpecificationDocumentSessionMCartridgeSolutionarchitecture
SessionM©2018ProprietaryandConfidential Page43
window.location.assign(Urls.billing);}});window.location.assign(Urls.billing);});
Core-Resource.ds
Update“ResourceHelper.getUrls”FunctionAddbelowURLforRewardredemption
csrffailed:URLUtils.url('CSRF-Failed').toString(),rewardsPoints :URLUtils.url('SessionM-RedeemRewards').toString(),removeRewardsPromo :URLUtils.url('SessionM-RemoveRewardsPromo').toString(),purchaseAvailableOffer :URLUtils.url('SessionM-PurchaseAvailableOffer').toString(),
Update“ResourceHelper.getPreferences”Function
AddbelowcodetogetamountconfiguredthroughBM
CHECK_TLS:Site.getCurrent().getCustomPreferenceValue('checkTLS'),SM_AMOUNT_VALUE:Site.getCurrent().getCustomPreferenceValue('smPointValue')
Core–Template
Update“accountnavigation.isml”AddbelowconditiontoshowrewardpointsonUIjustafter‘account-nav-registered’contentassert
<iscontentassetaid="account-nav-registered"/> <isifcondition="${!empty(customer.profile.custom.smAuthToken)&&dw.system.Site.current.preferences.custom.IsSMEnabled&&dw.system.Site.current.preferences.custom.IsSMRewardsPageEnabled}"> <spanclass="toggle">Rewards</span> <ul> <li><atitle="Rewards"href="${URLUtils.https('SessionM-ShowRewards')}">Rewards</a></li> </ul> </isif>
TechnicalSpecificationDocumentSessionMCartridgeSolutionarchitecture
SessionM©2018ProprietaryandConfidential Page44
Update“accountoverview.isml”Includebelowlinetodisplaytierdetailsonaccountoverviewsectionjustafterclosingof</h1>tag.
<isincludetemplate="account/tierdetails.isml"/> <iscontentassetaid="account-landing"/>
Update“paymentmethod.isml”Includebelowcode3timesinfiletodisplayredeemablepointsonpaymentsectioninsidecreditcard,Billmelaterandcustomprocessorblock.
<divclass="payment-method<isifcondition="${!empty(pdict.selectedPaymentID)&&pdict.selectedPaymentID=='PayPal'}">payment-method-expanded</isif>"data-method="Custom"> <iscomment>TemplateincludedforSessionMpointsredemptiononcheckout</iscomment> <isifcondition="${customer.authenticated&&!customer.profile.custom.IsSMProfileSyncFailed&&customer.profile.custom['smAvailable_points']>0&&dw.system.Site.getCurrent().getCustomPreferenceValue('IsSMEnabled')&&dw.system.Site.getCurrent().getCustomPreferenceValue('smRewardsRedemptionEnabled')}"> <isincludetemplate="checkout/redeemablepoints"/> </isif> ${Resource.msg('billing.custompaymentmethod','checkout',null)}
Update“headercustomerinfo.isml”Addbelowcodeinsidescriptforrewarddisplay
//Userhassessionandisvalidated }elseif(customer.registered){ title=Resource.msgf('global.user.name','locale',null,customer.profile.firstName,customer.profile.lastName); varisSmRewardEnabled=false; varlogoutLink={ href:URLUtils.https('Login-Logout'), title:Resource.msg('global.logout','locale',null), class:'user-logoutbuttonstyle' }; if(dw.system.Site.current.preferences.custom.IsSMEnabled&&dw.system.Site.current.preferences.custom.IsSMRewardsPageEnabled){ isSmRewardEnabled=true; }RemovebelowLogin-logouthrefcodefromlinksection
},{ href:URLUtils.https('GiftRegistry-Start'), title:Resource.msg('global.header.registrylink','locale',null) },{
TechnicalSpecificationDocumentSessionMCartridgeSolutionarchitecture
SessionM©2018ProprietaryandConfidential Page45
href:URLUtils.https('Login-Logout'), title:Resource.msg('global.logout','locale',null), class:'user-logoutbuttonstyle' }]; //userhasnosession }AddsmRewardIfCondtionafterlinksectionclosing
}]; if(isSmRewardEnabled&&!empty(customer.profile.custom.smAuthToken)){ varcustomLink={ href:URLUtils.https('SessionM-ShowRewards'), title:Resource.msg('global.header.showrewards','sessionm',null) }; links.push(customLink); links.push(logoutLink); }else{ links.push(logoutLink); } //userhasnosession
Update“summary.isml”HandleSessionMerrormessagesbyapplyingbelowIfconditionPlaceOrderErrorIfcondition
<isifcondition="${pdict.PlaceOrderError!=null}"> <divclass="error-form">${Resource.msg(pdict.PlaceOrderError.code,'checkout',null)}</div> </isif> <isifcondition="${pdict.SmPLaceOrderError!=null}"> <divclass="error-form">${Resource.msg(pdict.SmPLaceOrderError.code,'sessionm',null)}</div> </isif>
Update“ordertotals.isml”Applyrewardredemptiondiscountbyaddingbelowcode
<iscomment>calculateorderleveldiscounts</iscomment> <isscript> varmerchTotalExclOrderDiscounts:dw.value.Money=LineItemCtnr.getAdjustedMerchandizeTotalPrice(false); varmerchTotalInclOrderDiscounts:dw.value.Money=LineItemCtnr.getAdjustedMerchandizeTotalPrice(true); varorderDiscount:dw.value.Money=merchTotalExclOrderDiscounts.subtract(merchTotalInclOrderDiscounts);
TechnicalSpecificationDocumentSessionMCartridgeSolutionarchitecture
SessionM©2018ProprietaryandConfidential Page46
</isscript> <issetname="rewardDiscount"value="${LineItemCtnr.getPriceAdjustmentByPromotionID('rewards_points')}"scope="page"/> <isifcondition="${!empty(rewardDiscount)}"> <trclass="order-discountdiscount"> <td>${Resource.msg('sessionm.ordertotoal.label','sessionm',null)}</td> <td><isprintvalue="${rewardDiscount.basePrice}"/></td> </tr> <isifcondition="${orderDiscount.add(rewardDiscount.basePrice)>0.0}"> <trclass="order-discountdiscount"> <td>${Resource.msg('order.ordersummary.orderdiscount','order',null)}</td> <td>-<isprintvalue="${orderDiscount.add(rewardDiscount.basePrice)}"/></td> </tr> </isif> <iselseifcondition="${!empty(orderDiscount)&&orderDiscount.value>0.0}"> <trclass="order-discountdiscount"> <td>${Resource.msg('order.ordersummary.orderdiscount','order',null)}</td> <td>-<isprintvalue="${orderDiscount}"/></td> </tr> </isif> <iscomment>rendereachsingleshipmentorshippingtotal</iscomment>
Update“htmlhead.isml”ApplyRewardandsessioncssonHeaderpageifSMflagisenableformbusinessmanager
<linkrel="stylesheet"href="${URLUtils.staticURL('/css/style.css')}"/><isifcondition="${'IsSMEnabled'indw.system.Site.current.preferences.custom&&dw.system.Site.current.preferences.custom.IsSMEnabled}"> <linkrel="stylesheet"href="${dw.system.Site.current.preferences.custom.smRewardPageCSS}"/> <linkrel="stylesheet"href="${URLUtils.staticURL('/css/sessionm.css')}"/></isif>
TechnicalSpecificationDocumentSessionMCartridgeSolutionarchitecture
SessionM©2018ProprietaryandConfidential Page47
3.4.2CustomCodeforPipeline
Account.xml
Update“CreateAccount”NodeAddCallnodeSessionM-RegisterCustomerattheendofnodetoregisterCustomeratSessionM.
2)AdddecisionnodebelowtheGetCustomernode
Makethekeyforthisnodeas!(dw.system.Site.current.preferences.custom.smLoyaltyOptIn)
TechnicalSpecificationDocumentSessionMCartridgeSolutionarchitecture
SessionM©2018ProprietaryandConfidential Page48
Andonyesconnectittoanassignnode
Connectthisassignnodetothenextassignnodebelowandconnectthenooptionofthedecisionnodetothisnodeaswell
3)AddanassignnodebelowthesetLogin.dsscript
TechnicalSpecificationDocumentSessionMCartridgeSolutionarchitecture
SessionM©2018ProprietaryandConfidential Page49
Update“EditProfile”Node
2)AddanassignnodebelowUpdateFormWithObjectAddressBook:-
TechnicalSpecificationDocumentSessionMCartridgeSolutionarchitecture
SessionM©2018ProprietaryandConfidential Page50
3)intheSubmitForm3branchunderconfirmAddadecisionNodebelowthedecisionnodewithkeyas(CurrentForms.profile.customer.email.value==CurrentForms.profile.customer.emailconfirm.value)
TechnicalSpecificationDocumentSessionMCartridgeSolutionarchitecture
SessionM©2018ProprietaryandConfidential Page51
Makethekeyforthisnodeas!(dw.system.Site.current.preferences.custom.smLoyaltyOptIn)
Andonyesconnectittoanassignnode
TechnicalSpecificationDocumentSessionMCartridgeSolutionarchitecture
SessionM©2018ProprietaryandConfidential Page52
Connectthisassignnodetothenextassignnodebelowandconnectthenooptionofthedecisionnodetothisnodeaswell
4)Repeatboththeabovedecisionandassignnodeinthechangepasswordbranchundertheassignnodewithfrom_0=CurrentForms.profile.customer.email.value
5)AddanassignnodeinthetransactionbranchasshownbelowandacallnodetoSessionM-UpdateCustomer
TechnicalSpecificationDocumentSessionMCartridgeSolutionarchitecture
SessionM©2018ProprietaryandConfidential Page53
TechnicalSpecificationDocumentSessionMCartridgeSolutionarchitecture
SessionM©2018ProprietaryandConfidential Page54
TechnicalSpecificationDocumentSessionMCartridgeSolutionarchitecture
SessionM©2018ProprietaryandConfidential Page55
Address.xml
Update“SetDefault”NodeAddCallnodeSessionM-UpdateCustomerjustaboveAddress-ListjumpnodetoupdateCustomerAddressdetailsatSessionM.
TechnicalSpecificationDocumentSessionMCartridgeSolutionarchitecture
SessionM©2018ProprietaryandConfidential Page56
Update“Add”NodeAddCallnodeSessionM-UpdateCustomerjustabovedecisionnodeconnectedtosuccessjsontoupdateCustomerAddressdetailsatSessionM.
Update“DeleteAddress”NodeAddCallnodeSessionM-UpdateCustomerjustaboveAddress-ListjumpnodeattheendtoupdateCustomerAddressDetailsatSessionM.
TechnicalSpecificationDocumentSessionMCartridgeSolutionarchitecture
SessionM©2018ProprietaryandConfidential Page57
Update“Edit”NodeAddCallnodeSessionM-UpdateCustomerattheendandjustabovesuccessjsoninteractionnode.
TechnicalSpecificationDocumentSessionMCartridgeSolutionarchitecture
SessionM©2018ProprietaryandConfidential Page58
Cart.xml
Update“Add”NodeUpdateRewarddetailsafterremovingproductfromCartbyaddingCallnodeSessionM-UpdateCartRemoveRewardfor‘deleteProduct’transitionaboveCart-Calculate.
Update“updateCart”NodeUpdateRewarddetailsaftercalculatingcartproductbyaddingAddCallnodeSessionM-UpdateCartRemoveRewardaboveCart-Calculate.
TechnicalSpecificationDocumentSessionMCartridgeSolutionarchitecture
SessionM©2018ProprietaryandConfidential Page59
COBilling.xml
Update“InitForms”NodeAddDecisionwithcondition“!(CurrentCustomer.authenticated&&dw.system.Site.getCurrent().getCustomPreferenceValue('IsSMEnabled')&&dw.system.Site.getCurrent().getCustomPreferenceValue('smRewardsRedemptionEnabled'))”andCallnodeSessionM-UpdateRewardPointsbeforetheclearFormElementtoupdatetheavailablerewardspointsincustomerprofile.
TechnicalSpecificationDocumentSessionMCartridgeSolutionarchitecture
SessionM©2018ProprietaryandConfidential Page60
Update“saveAddress”NodeAddCallnodeSessionM-UpdateCustomerattheendofnodetoUpdateCustomerAddressdetailsatSessionM.
TechnicalSpecificationDocumentSessionMCartridgeSolutionarchitecture
SessionM©2018ProprietaryandConfidential Page61
COShipping.xml
Update“SaveAddress”NodeAddCallnodeSessionM-UpdateCustomerattheendofnodetoupdatecustomeraddressdetailsatSessionM.
Login.xml
Update“Process”NodeAddCallnodeSessionM-RetrieveCustomerattheendofnodetosyncCustomerprofilewithSessionM.
TechnicalSpecificationDocumentSessionMCartridgeSolutionarchitecture
SessionM©2018ProprietaryandConfidential Page62
COPlaceOrder.xml
Update“Start”NodeBelowcodeisaddedtoupdateSessionMRewardDetailsandRedeemavailablepoints.
1. AddAssignnodebelowtheCOPlaceOrder-CreateOrder.
TechnicalSpecificationDocumentSessionMCartridgeSolutionarchitecture
SessionM©2018ProprietaryandConfidential Page63
2. AddDecisionnodewithconditionbelowassign:-(CurrentCustomer.authenticated&&dw.system.Site.getCurrent().getCustomPreferenceValue('IsSMEnabled')&&dw.system.Site.getCurrent().getCustomPreferenceValue('smRewardsRedemptionEnabled')&&!empty(Adjustment))
3. AddacallnodeSessionM-UpdateRewardPointsonfalseofabovedecisionnodeandconnecterrortransitionofcallnodetoerror.
4. On‘ok’transitionaddcallnodeAddCallnodeSessionM-RedeemPointsontrueofabovedecisionnode
5. ConnecttheabovecallnodetoCOPlaceOrder-HandlePaymentsandconnecttoerrorincaseoferror.
TechnicalSpecificationDocumentSessionMCartridgeSolutionarchitecture
SessionM©2018ProprietaryandConfidential Page64
4 OPERATION,MAINTENANCE
4.1 DATASTORAGE
4.1.1 CustomerProfilelevelattributeSomeadditionalattributesaredefinedandstoredinProfileobject.ThesearethecustomattributesandwillbesentasapartofProfilerequestobject,sothatthesamecanbeusedbySessionMforfurtherprocessing.
Sr.No. AdditionalCustomFields AttributeId Description
1 SMavailableRewardPoints smAvailablePoints
ThisfieldcapturestheavailableRewardpointsforCustomer
2SessionMStatusofcustomer’saccount smAccountStatus
AccountstatusreturnedbySM
3 SMsuspendstate smSuspended TrueorFalse
4 SessionMTierName smTierNameSMavailableTierforCustomer
5SessionMIdentifierforcustomer smUUID
SessionMIdentifierforcustomer
6 IsSMCreateProfilefailed IsSMProfileCreationFailedSetto“FALSE”ifprofileisnotcreatedinSM
7 SMSearchFailCount smSearchFailCountSetToTRUEifcustomernotfoundinSM
8 SessionMProxyIDs smProxy_idsProfilecreatedotherthanSFCC
9 IsSMProfileSyncFailed IsSMProfileSyncFailedIfprofileisnotsyncedwithSFCC
10 SMAuthToken smAuthToken SMauthenticationtoken
11 SessionMmembersince smMember_SinceSetfoenewSMCustomer
TechnicalSpecificationDocumentSessionMCartridgeSolutionarchitecture
SessionM©2018ProprietaryandConfidential Page65
profile
12SessionMrequiredpointsfornexttierlevel
smNextRequiredPoints
Pointsrequiredtoreachnexttierlevel
13 SessionMLoyaltyOptIn smLoyaltyOptInSettoTRUEifthecustomerisoptedin
14SessionM Offers Available To Purchase smOffersAvailableToPurchase
CapturestheoffersavailableinSessionM
4.1.2 OrderlevelattributeSomeadditionalattributesaredefinedandstoredinOrderobject.ThesearethecustomattributesandwillbesentasapartofOrderrequestobject,sothatthesamecanbeusedbySessionMforfurtherprocessing.
Sr.No. AdditionalCustomFields AttributeId Description
1OrderhasbeenexportedtoSessionM smExported
OrderhasbeenexportedtoSessionM
2 SMRedeemedPoints smOrderCustom1 AccountstatusreturnedbySM
3SMOrderTransactionID smOrderCustom2 TrueorFalse
4 SMOrderOfferId smOrderCustom3 SMavailableTierforCustomer
5 SMOrdercustomattribute smOrderCustom4 SessionMIdentifierforcustomer
6 SMOrdercustomattribute smOrderCustom5Setto“FALSE”ifprofileisnotcreatedinSM
7OrderhastoberedeemedbySessionM smOrderTobeRedeemed
SetToTRUEifcustomernotfoundinSM
8 SalesAssociateID smOrderSalesAssociateID String
9 SessionMOffers SessionM_Offers String
10 SessionMTrasactionID SessionM_TrasactionID String
TechnicalSpecificationDocumentSessionMCartridgeSolutionarchitecture
SessionM©2018ProprietaryandConfidential Page66
4.1.3BasketlevelattributeSomeadditionalattributesaredefinedandstoredinBasketobject.ThesearethecustomattributesandwillbesentasapartofBasketrequestobject,sothatthesamecanbeusedbySessionMforfurtherprocessing.
Sr.No. AdditionalCustomFields AttributeId Type
1 SessionMOffers SessionM_Offers String
2 SessionMTrasactionID SessionM_TrasactionID String
4.2 AVAILIBILITY
<EXPECTED AVAILABILITY /UPTIME OF ANY EXTERNAL SERVICE, INTERFACES>
<FALLBACK SOLUTION, BEHAVIOR IF EXTERNAL SERVICES ARE NOT AVAILABLE, IMPACT ON CUSTOMER STOREFRONT>
<ANY EXISTING UTILITIES THAT HELP TO DETECT AVAILABILITY/UPTIME OF EXTERNAL SERVICE, E.G. WEBSERVICE CALL, GOMEZ PING>
<ESTIMATED PERFORMANCE METRICS FOR PEAK BUSINESS HOURS IF AVAILABLE>
<NOTIFICATION PROCESS IF EXTERNAL SERVICES, INTERFACES ARE NOT RESPONDING, E.G. HOTLINE /SUPPORT PHONE NUMBER>
4.3 SUPPORT
Name Email SupportType
5 USERGUIDE
5.1 ROLES,RESPONSIBILITESTypicallymostoftheintegrationworksisdonebythebackenddeveloper.Weexpectthatthepersondoingthisintegrationisfamiliarwiththewebservice,xmlprocessingandhashandsonexperiencewiththeCommerceCloudplatform.
5.2 BUSINESSMANAGER
TechnicalSpecificationDocumentSessionMCartridgeSolutionarchitecture
SessionM©2018ProprietaryandConfidential Page67
NA [As changes required for storefront has been already covered under setup section]
5.3 STOREFRONTFUNCTIONALITY
NA [As changes required for storefront has been already covered under setup section]
6 TESTING
6.1 TESTCASESPleasereferUsecasesectionforthehighleveltestcases.
7 RELEASEHISTORY
Version Date Changes17.0 19-05-2017 InitialRelease–SiteGenesiscompatible
18.1 15-08-2018 Bugfixwithloyaltydetails
APPENDIXA:ErrorCodes&ErrorMessages
Code Description200 Indicatessuccessfulcall;returnedstringcanbeeitherokorerror
401 Indicatesunsuccessfulcall;notauthorized.
404 Indicatesunsuccessfulcall;notfoundbyID
500 IndicatesinternalerrorassociatedwithSessionM