Commerce Server 2007 Integration with MOSS 2007

MOSS has many inbuilt features. The scope of this POC is to integrate Commerce Server 2007 with MOSS 2007 to provide Portal Integrated e-Commerce Application

Configuring MOSS 2007 to Use the Commerce Server Membership Provider As The Basis For User Authentication

The primary tasks are to make the Central Administration and Portal sites hand-shake with Commerce Server. This needs to be done by modifying the appropriate Web.config files for these sites. By adding the Commerce Server and httpModules sections, the SharePoint Central Administration site and the Portal site will be able to create the necessary CommerceContext object. The CommerceContext object enables the Commerce Server Membership Provider to be initialized correctly, and also enables Web parts and pages in the portal to use the CommerceContext object to access Commerce Server resources such as the Product Catalog.
The UpmMembership Provider extends the Membership framework offered by ASP.Net to accommodate the use of the ASP.Net Login Controls and authenticate against Commerce Server Profiles.

Update the Web.config for MOSS Central Administration and in Portal site with below sections to avail Commerce Server data and services in MOSS

  • Commerce Server Section Group
  • Commerce Server Group
  • Http Modules
  • Assemblies
  • Membership Provider
  • Profile Section

o Determine which Web.config file is used for the SharePoint Central Administration site and which is used for the Portal site. Use the Home Directory tab in IIS Manager to determine the appropriate path of the Web.config file for each site.

o Use the Web.config file that was previously created for the Commerce Server C SharpSite as the source for the text to copy in the following instructions:

Please follow the below steps to modify the web.config file of SharePoint administration site.

Step 1: Adding Commerce Server Section Group
Copy the Commerce [sectionGroup] in [configSections] and paste it after the [System.Workflow.ComponentModel.WorkflowCompiler] section group.
[sectionGroup name=”CommerceServer”]
[section name=”application” type=”Microsoft.CommerceServer.Runtime.Configuration.CommerceApplicationSectionHandler, Microsoft.CommerceServer.Runtime, Version=6.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35″/]
[section name=”authentication” type=”Microsoft.CommerceServer.Runtime.Configuration.CommerceAuthenticationSectionHandler, Microsoft.CommerceServer.Runtime, Version=6.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35″/]
[section name=”pipelines” type=”Microsoft.CommerceServer.Runtime.Configuration.CommercePipelineSectionHandler, Microsoft.CommerceServer.Runtime, Version=6.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35″/]
[section name=”caches” type=”Microsoft.CommerceServer.Runtime.Configuration.CommerceCacheSectionHandler, Microsoft.CommerceServer.Runtime, Version=6.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35″/]
[section name=”messageManager” type=”Microsoft.CommerceServer.Runtime.Configuration.CommerceMessageManagerSectionHandler, Microsoft.CommerceServer.Runtime, Version=6.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35″/]
[section name=”catalog” type=”Microsoft.CommerceServer.Runtime.Configuration.CommerceCatalogSectionHandler, Microsoft.CommerceServer.Runtime, Version=6.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35″/]
[section name=”orders” type=”Microsoft.CommerceServer.Runtime.Configuration.CommerceOrdersSectionHandler, Microsoft.CommerceServer.Runtime, Version=6.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35″/]
[section name=”profiles” type=”Microsoft.CommerceServer.Runtime.Configuration.CommerceProfilesSectionHandler, Microsoft.CommerceServer.Runtime, Version=6.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35″/]
[section name=”contentSelection” type=”Microsoft.CommerceServer.Runtime.Configuration.CommerceContentSelectionSectionHandler, Microsoft.CommerceServer.Runtime, Version=6.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35″/]
[section name=”commerceEvent” type=”Microsoft.CommerceServer.Runtime.Configuration.EventLoggerConfigurationHandler, Microsoft.CommerceServer.Runtime, Version=6.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35″/]
[section name=”expressions” type=”Microsoft.CommerceServer.Runtime.Configuration.CommerceExpressionSectionHandler, Microsoft.CommerceServer.Runtime, Version=6.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35″/]
[/sectionGroup]
Step 2: Adding Commerce Server Group
§ Copy the [CommerceServer] section and paste it after the [SharePoint] section, just before the [system.web] section.

[CommerceServer]
[application siteName=”CDevSite” debugLevel=”Production”/]
[pipelines][/pipelines]
[expressions schema=”Auto”/]
[caches]
[cache name=”Advertising” type=”Advertising” refreshInterval=”900″ retryInterval=”30″/]
[cache name=”Discounts” type=”Discounts” refreshInterval=”0″ retryInterval=”30″/]
[cache name=”ShippingManagerCache” type=”Shipping” loaderProgId=”Commerce.ShippingMethodCache” refreshInterval=”0″ retryInterval=”30″/]
[cache name=”PaymentMethodCache” type=”Payment”/]
[cache name=”OrdersConfigurationCache” type=”OrdersConfiguration”/]
[/caches]
[messageManager]
[cultures default=”en-US” baseName=”CommerceMessageManager” assembly=”CommerceMessageManager”]
[culture id=”en-US”/]
[culture id=”fr-fr”/]
[culture id=”ja-JP”/]
[culture id=”de-DE”/]
[/cultures]
[resources]
[resource id=”pur_badsku”/]
[resource id=”pur_badplacedprice”/]
[resource id=”pur_discount_changed”/]
[resource id=”pur_discount_removed”/]
[resource id=”pur_noitems”/]
[resource id=”pur_badshipping”/]
[resource id=”pur_badhandling”/]
[resource id=”pur_badtax”/]
[resource id=”pur_badcc”/]
[resource id=”pur_badpayment”/]
[resource id=”pur_badverify”/]
[resource id=”pur_out_of_stock”/]
[resource id=”unknown_shipping_method”/]
[/resources]
[/messageManager]
[orders honorStatus=”true” newOrderStatus=”NewOrder” sqlCommandTimeoutSeconds=”60″ sqlLongRunningCommandTimeoutSeconds=”28800″]
[addressMap]
[profileDefinition name=”Address”/]
[property from=”GeneralInfo.address_id” to=”OrderAddressId”/]
[property from=”GeneralInfo.first_name” to=”FirstName”/]
[property from=”GeneralInfo.last_name” to=”LastName”/]
[property from=”GeneralInfo.address_line1″ to=”Line1″/]
[property from=”GeneralInfo.address_line2″ to=”Line2″/]
[property from=”GeneralInfo.city” to=”City”/]
[property from=”GeneralInfo.region_code” to=”RegionCode”/]
[property from=”GeneralInfo.postal_code” to=”PostalCode”/]
[property from=”GeneralInfo.country_name” to=”CountryName”/]
[property from=”GeneralInfo.region_name” to=”State”/]
[property from=”GeneralInfo.tel_number” to=”DaytimePhoneNumber”/]
[/addressMap]
[Types]
[Type Key=”Basket” UserTypeName=”Basket” AssemblyType=”GAC” NameSpace=”Microsoft.CommerceServer.Runtime.Orders” Assembly=”Microsoft.CommerceServer.Runtime, Version=6.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35″/]
[Type Key=”PurchaseOrder” UserTypeName=”PurchaseOrder” AssemblyType=”GAC” NameSpace=”Microsoft.CommerceServer.Runtime.Orders” Assembly=”Microsoft.CommerceServer.Runtime, Version=6.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35″/]
[Type Key=”OrderTemplate” UserTypeName=”OrderTemplate” AssemblyType=”GAC” NameSpace=”Microsoft.CommerceServer.Runtime.Orders” Assembly=”Microsoft.CommerceServer.Runtime, Version=6.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35″/]
[Type Key=”OrderForm” UserTypeName=”OrderForm” AssemblyType=”GAC” NameSpace=”Microsoft.CommerceServer.Runtime.Orders” Assembly=”Microsoft.CommerceServer.Runtime, Version=6.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35″/]
[Type Key=”LineItem” UserTypeName=”LineItem” AssemblyType=”GAC” NameSpace=”Microsoft.CommerceServer.Runtime.Orders” Assembly=”Microsoft.CommerceServer.Runtime, Version=6.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35″/]
[Type Key=”Shipment” UserTypeName=”Shipment” AssemblyType=”GAC” NameSpace=”Microsoft.CommerceServer.Runtime.Orders” Assembly=”Microsoft.CommerceServer.Runtime, Version=6.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35″/]
[Type Key=”Payment” UserTypeName=”Payment” AssemblyType=”GAC” NameSpace=”Microsoft.CommerceServer.Runtime.Orders” Assembly=”Microsoft.CommerceServer.Runtime, Version=6.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35″/]
[Type Key=”CreditCardPayment” UserTypeName=”CreditCardPayment” AssemblyType=”GAC” NameSpace=”Microsoft.CommerceServer.Runtime.Orders” Assembly=”Microsoft.CommerceServer.Runtime, Version=6.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35″/]
[Type Key=”GiftCertificatePayment” UserTypeName=”GiftCertificatePayment” AssemblyType=”GAC” NameSpace=”Microsoft.CommerceServer.Runtime.Orders” Assembly=”Microsoft.CommerceServer.Runtime, Version=6.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35″/]
[Type Key=”PurchaseOrderPayment” UserTypeName=”PurchaseOrderPayment” AssemblyType=”GAC” NameSpace=”Microsoft.CommerceServer.Runtime.Orders” Assembly=”Microsoft.CommerceServer.Runtime, Version=6.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35″/]
[Type Key=”CashCardPayment” UserTypeName=”CashCardPayment” AssemblyType=”GAC” NameSpace=”Microsoft.CommerceServer.Runtime.Orders” Assembly=”Microsoft.CommerceServer.Runtime, Version=6.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35″/]
[Type Key=”OrderAddress” UserTypeName=”OrderAddress” AssemblyType=”GAC” NameSpace=”Microsoft.CommerceServer.Runtime.Orders” Assembly=”Microsoft.CommerceServer.Runtime, Version=6.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35″/]
[Type Key=”DiscountApplicationRecord” UserTypeName=”DiscountApplicationRecord” AssemblyType=”GAC” NameSpace=”Microsoft.CommerceServer.Runtime.Orders” Assembly=”Microsoft.CommerceServer.Runtime, Version=6.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35″/]
[Type Key=”ShippingDiscountRecord” UserTypeName=”ShippingDiscountRecord” AssemblyType=”GAC” NameSpace=”Microsoft.CommerceServer.Runtime.Orders” Assembly=”Microsoft.CommerceServer.Runtime, Version=6.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35″/]
[Type Key=”PromoCodeRecord” UserTypeName=”PromoCodeRecord” AssemblyType=”GAC” NameSpace=”Microsoft.CommerceServer.Runtime.Orders” Assembly=”Microsoft.CommerceServer.Runtime, Version=6.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35″/]
[/Types]
[Limits OrderFormsPerOrderGroup=”5″ PromoCodeRecordsPerOrderForm=”10″ PromoCodesPerOrderForm=”10″ LineItemsPerOrderForm=”40″ OrderTemplatesPerUser=”10″ PaymentsPerOrderForm=”10″ ShipmentsPerOrderForm=”40″ BasketsPerUser=”15″ OrderAddressesPerOrderGroup=”10″/]
[MappingFiles PipelineMappingFilename=”OrderPipelineMappings.xml” StorageMappingFilename=”OrderObjectMappings.xml”/]
[SerializationBindings]
[SerializationBinding OldType=”Microsoft.CommerceServer.Runtime.Orders.LineItem , Microsoft.CommerceServer.Runtime ,Version=6.0.1.0,Culture=neutral, PublicKeyToken=31bf3856ad364e35″ NewType=”Microsoft.CommerceServer.Runtime.Orders.LineItem, Microsoft.CommerceServer.Runtime,Version=6.0.1.0,Culture=neutral, PublicKeyToken=31bf3856ad364e35″/]
[/SerializationBindings]
[/orders]
[commerceEvent]
[add className=”Microsoft.CommerceServer.Runtime.AddItemToBasketEvent” id=”AddItemToBasket”/]
[add className=”Microsoft.CommerceServer.Runtime.RemoveItemFromBasketEvent” id=”RemoveItemFromBasket”/]
[add className=”Microsoft.CommerceServer.Runtime.SubmitOrderEvent” id=”SubmitOrder” loggingEnabled=”true”/]
[/commerceEvent]
[/CommerceServer]
Step 3: Adding “CommerceApplication” in “httpModules” Section
§ Copy the Commerce HTTP Modules to the end of the [httpModules] section.
[add name=”CommerceApplication” type=”Microsoft.CommerceServer.Runtime.CommerceApplicationModule, Microsoft.CommerceServer.Runtime, Version=6.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35″/]
[add name=”CommerceAuthentication” type=”Microsoft.CommerceServer.Runtime.CommerceAuthenticationModule, Microsoft.CommerceServer.Runtime, Version=6.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35″/]
[add name=”CommerceOrder” type=”Microsoft.CommerceServer.Runtime.Orders.CommerceOrderModule, Microsoft.CommerceServer.Runtime, Version=6.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35″/]
[add name=”CommerceCatalog” type=”Microsoft.CommerceServer.Runtime.Catalog.CommerceCatalogModule, Microsoft.CommerceServer.Runtime, Version=6.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35″/]
[add name=”CommerceProfile” type=”Microsoft.CommerceServer.Runtime.Profiles.CommerceProfileModule, Microsoft.CommerceServer.Runtime, Version=6.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35″/]
[add name=”CommerceExpressionEvaluator” type=”Microsoft.CommerceServer.Runtime.Targeting.CommerceExpressionModule, Microsoft.CommerceServer.Runtime, Version=6.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35″/]
[add name=”CommerceCache” type=”Microsoft.CommerceServer.Runtime.Caching.CommerceCacheModule, Microsoft.CommerceServer.Runtime, Version=6.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35″/]
[add name=”CommerceContentSelection” type=”Microsoft.CommerceServer.Runtime.Targeting.CommerceContentSelectionModule, Microsoft.CommerceServer.Runtime, Version=6.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35″/][add name=”CommerceDataWarehouseAuthenticationModule” type=”Microsoft.CommerceServer.Runtime.CommerceDataWarehouseAuthenticationModule, Microsoft.CommerceServer.Runtime, Version=6.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35″/]Remove or comment out the Commerce Server Authentication Module. This module is not required because ASP.NET Forms Authentication will be used for all authentications.
Step 4: Adding “Commerce Server” AssembliesCopy the commerce server assembly information from CSharpSite web.config and paste it in the [assemblies] tag in the Central Administration site’s web.config as below:
[assemblies]
[add assembly=”Microsoft.CommerceServer.Runtime, Version=6.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35″ /]
[add assembly=”Microsoft.CommerceServer.Catalog, Version=6.0.1.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35″ /][/assemblies]

Step 5: Configure Central Administration to recognize Commerce Server Membership
Copy the below code snippet to [system.web] section of the Web.config file for the Central Administration. Note: Paste it before the closing [/system.web].
[membership defaultProvider=”UpmMembershipProvider”]
[providers]
[clear /]
[add applicationName=”CSharpSite ”
enablePasswordRetrieval=”false”
enablePasswordReset=”true”
requiresQuestionAndAnswer=”true”
requiresUniqueEmail=”true”
enableCreateDate=”true”
enableEmailAddress=”true”
enableLastLoginDate=”true”
profileDefinition=”UserObject”
passwordFormat=”Hashed”
name=”UpmMembershipProvider”
type=”Microsoft.CommerceServer.Runtime.Profiles.UpmMembershipProvider”/]
[/providers]
[/membership]

Step 6: Configuring the Commerce Server Profiles section

This section contains settings which configure the functionality of profiles and catalog sets. The [userProfile] node resides in the [CommerceServer][profiles] node in the web.config.
Uncomment the profiles section in [commerceserver] node.

[userProfile
profileDefinition=”UserObject”
userIdProperty=”GeneralInfo.email_address”
organizationIdProperty=”AccountInfo.org_id”
catalogSetIdProperty=”AccountInfo.user_catalog_set”
userIdSource = “ASP.NET”
userIdKey = “GeneralInfo.email_address”
userIdTarget = “GeneralInfo.user_id”
/]
[organizationProfile
profileDefintion=”Organization”
organizationIdProperty=”GeneralInfo.org_id”
catalogSetIdProperty=”GeneralInfo.org_catalog_set”
/]

Step 7: Adding Users in the Central AdministrationLocate Central Administration, Application Management, Authentication Providers, Default zone entry. Make sure that you have the PortalSite Web Application selected in the drop-down list.

o Click Forms.

o Change the Membership Provider Name to UpmMembershipProvider. This should match the name that is in the membership section of the Web.config file.Locate Central Administration, Application Management, and Policy for Web Application. Make sure that you have selected the Portal Web Application.

o Click Add Users.

o Select Default zone, and then click Next.

o Type the e-mail address of the user that you added previously by using the Commerce Server Customer and Orders Manager, and then click Check User.

o If the user name is successfully recognized, it will be underlined. Select Full control, and then select Finish.

o If the user name is not recognized, run a SQL Server trace on the Commerce Server Profiles database to make sure that the queries are running against the database. Additionally, make sure that the entry for the provider is in the Web.config file for Central Administration, and look for errors in the event log.

Step 8: Copy the following XML files from the CSharpSite (IIS Virtual Directory) to the root folder of the Central Administration site:

o OrderObjectMappings.xml
o OrderPipelineMappings.xml

Run Central Administration to make sure that these changes were made correctly. If errors occur, check the Web.config file for syntax issues.Even if the page displays correctly, check the event log. Some permissions errors may be hidden.

Configure the MOSS portal to use the Commerce Server Membership provider:
Step 1: Follow the above 6 steps to configure Portal site for Commerce Server.

Step 2: Comment out the existing [authentication], [identity], and [authorization] sections. This will disable the default Windows authentication and authorization.

Step 3: Copy the below configuration settings contents to the Web.config file for the Portal site. Paste this after the previous sections that you just commented out. This sets up the site for Forms Authentication and denies anonymous access.

[authentication mode=”Forms”]
[forms loginUrl=”/_layouts/login.aspx” name=”.ASPXFORMSAUTH” /]
[/authentication]
[authorization]
[deny users=”?” /][/authorization] View the Portal site in a Web browser. You should be redirected to the logon page. Log on and use the user credentials that you added by using the Customer and Orders Manager.

Step 4: Copy the following XML files from the CSharpSite (IIS Virtual Directory) to the root folder of the Portal site:

o OrderObjectMappings.xml
o OrderPipelineMappings.xml

Step 5: Restart the IIS

Step 6: Run the Portal site and look for errors.

[Note : I am not able to Post scripts tag in here replace all “[” & “]” with “<" & ">“

Leave a Reply

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>