Posts Tagged ‘commerce server’
Gartner has released a report on July 18, 2008 under the title “Magic Quadrant for E-Commerce ” by analyst Gene Alvarez – delivers valuable information about the eCommerce market.
Garter states that the consumerization of online technologies is creating a demand for rich Internet experiences with user-generated content. Today’s buyers desire Web sites to speed up the process of finding a product, enable comparisons of products, provide tools to help buyers understand the product, and have community-based information to help them to make the final buying decisions — all with knowledge of “who” they’re serving across multiple points of interaction.
Source: Gartner.com
The article talked about Microsoft Commerce Server 2007 and tells that it will enable customers to create full-featured Web business applications and extend their business across networks, while allowing the integration of e-commerce solutions within the customer’s existing infrastructure.
As per this article, Microsoft Commerce server SP2 has a strong set of e-commerce capabilities such as
- Shopping cart management
- Taxation
- Personalization
- Transaction Management
- Settlement
- Product visualization
- Multi-channel Integration with Kiosk, mobile devices, POS systems, interactive TV & gaming
- Web 2.0 capabilities such as social commerce.
- Community aspects – product reviews
- Rich interactive applications
- Drag and Drop in web applications
- Compare pages,
- Single page checkout
- Integration with Microsoft live search.
Thanks to Gartner for creating such a comprehensive article. You can read entire article at Gartner site
http://mediaproducts.gartner.com/reprints/microsoft/vol4/article1/article1.html
If you like this post, please click on our sponsor advertisement.
After commerce server installation, if we try to create and schedule a direct mailer, commerce server throws an error -”Direct mail <mailer id> could not be schedule” and detail error is shown below.
| Microsoft.CommerceServer.Marketing.DirectMailSchedulingException: The Direct Mail (ID=’12′) could not be scheduled. The Direct Mailer Service account may not have the permissions required to schedule tasks correctly. Please make sure that the following settings are correct: 1. A Windows User Group called ‘DML_SG’ exists on the computer running the Direct Mailer Service. 2. The Direct Mailer Service Account is a member of the ‘DML_SG’ Group. 3. The ‘DML_SG’ Group has full permissions on the ‘%windir%tasks’ folder. 4. The process calling the Marketing Management API (usually the Marketing Web Service account) is a member of the ‘DML_SG’ Group. Steps 1, 2 and 3 are automatically configured when you run the Configuration Wizard. You may need to reconfigure the ‘Direct Mailer’ feature using the ‘/r’ option of the Commerce Server Configuration Wizard. The Inner Exception and the Event Log may have more details. —> System.Web.Services.Protocols.SoapException: System.Web.Services.Protocols.SoapException: The Direct Mail (ID=’12′) could not be scheduled. The Direct Mailer Service account may not have the permissions required to schedule tasks correctly. Please make sure that the following settings are correct: 1. A Windows User Group called ‘DML_SG’ exists on the computer running the Direct Mailer Service. 2. The Direct Mailer Service Account is a member of the ‘DML_SG’ Group. 3. The ‘DML_SG’ Group has full permissions on the ‘%windir%tasks’ folder. 4. The process calling the Marketing Management API (usually the Marketing Web Service account) is a member of the ‘DML_SG’ Group. Steps 1, 2 and 3 are automatically configured when you run the Configuration Wizard. You may need to reconfigure the ‘Direct Mailer’ feature using the ‘/r’ option of the Commerce Server Configuration Wizard. The Inner Exception and the Event Log may have more details. —> Microsoft.CommerceServer.Marketing.DirectMailSchedulingException: The Direct Mail (ID=’12′) could not be scheduled. The Direct Mailer Service account may not have the permissions required to schedule tasks correctly. Please make sure that the following settings are correct: 1. A Windows User Group called ‘DML_SG’ exists on the computer running the Direct Mailer Service. 2. The Direct Mailer Service Account is a member of the ‘DML_SG’ Group. 3. The ‘DML_SG’ Group has full permissions on the ‘%windir%tasks’ folder. 4. The process calling the Marketing Management API (usually the Marketing Web Service account) is a member of the ‘DML_SG’ Group. Steps 1, 2 and 3 are automatically configured when you run the Configuration Wizard. You may need to reconfigure the ‘Direct Mailer’ feature using the ‘/r’ option of the Commerce Server Configuration Wizard. The Inner Exception and the Event Log may have more details. —> System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. —> System.UnauthorizedAccessException: An error occurred when scheduling the Direct Mailer Task for Site ‘StarterSite’, Campaign Item ’12′: An error occurred while setting up the scheduled task. Task Name: ‘dml_job_site_StarterSite_item_12_test’ Command Line: ‘C:Program FilesMicrosoft Commerce Server 2007dmlrun.exe’ Parameters: ‘/create:type=test;site=”StarterSite”;id=12 /execute’: — End of inner exception stack trace — at System.RuntimeType.InvokeDispMethod(String name, BindingFlags invokeAttr, Object target, Object[] args, Boolean[] byrefModifiers, Int32 culture, String[] namedParameters) at System.RuntimeType.InvokeMember(String name, BindingFlags bindingFlags, Binder binder, Object target, Object[] providedArgs, ParameterModifier[] modifiers, CultureInfo culture, String[] namedParams) at Microsoft.CommerceServer.Internal.Marketing.DirectMailStorage.ExecuteSchedulingMethodOnDirectMailer(String methodName, String siteName, Int32 campaignItemId) — End of inner exception stack trace — at Microsoft.CommerceServer.Internal.Marketing.DirectMailStorage.ExecuteSchedulingMethodOnDirectMailer(String methodName, String siteName, Int32 campaignItemId) at Microsoft.CommerceServer.Internal.Marketing.DirectMailStorage.TestDirectMail(Int32 campItemId, Int32 maxTestListSize) at Microsoft.CommerceServer.Internal.Marketing.DataMarketingSystemImpl.TestDirectMail(Int32 campaignItemId) at Microsoft.CommerceServer.Marketing.WebService.MarketingWebService.TestDirectMail(Int32 campaignItemId) — End of inner exception stack trace — at Microsoft.CommerceServer.Marketing.WebService.MarketingWebService.PropagateOrLogExceptionInternal(Exception except) at Microsoft.CommerceServer.Marketing.WebService.MarketingWebService.PropagateOrLogException(Exception except) at Microsoft.CommerceServer.Marketing.WebService.MarketingWebService.TestDirectMail(Int32 campaignItemId) at System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall) at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters) at Microsoft.CommerceServer.Internal.Marketing.MarketingServiceProxy.AuthorizedInvoke(String methodName, Object[] parameters) — End of inner exception stack trace — at Microsoft.CommerceServer.ServiceAgent.TryHandleWebMethodException(Exception ex, SoapHttpClientProtocol serviceProxy) at Microsoft.CommerceServer.Internal.Marketing.MarketingServiceProxy.AuthorizedInvoke(String methodName, Object[] parameters) at Microsoft.CommerceServer.Internal.Marketing.MarketingServiceProxy.TestDirectMail(Int32 campaignItemId) at Microsoft.CommerceServer.Internal.Marketing.AgentMarketingSystemImpl.TestDirectMail(Int32 campaignItemId) at Microsoft.CommerceServer.Marketing.DirectMail.Test() at Microsoft.CommerceServer.UI.MarketingManager.PrimaryController.TryTestDirectMail(DirectMail dm) For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp. |
The error still persist even though if we perform all the operations mentioned in the error message. There are two things that can solve this error.
- Open Registry using regedit.exe. Navigate to HK_LOCAL_MachineSoftwareMicrosoftSchedulingAgent and give full control to NT account under which marketing system is working (or add authenticate users).
- Restart the machine.
Note: Some times the error still exist after performing IIS reset but the error will not come if we restart the box/VPC. So, I recommend restarting IIS first. If the problem still exists then restart the machine/VPC.
If you like this post, please click on our sponsor advertisement.
We can update profile attributes either using Profile.Update() method or Profile.Update(xmldata, xmlformat) method. The second method is used when we are trying to update using xml data.
This method takes two parameters
1. XML Data
2. Profile XML Format
Commerce server accepts two types of xml formats. This is decide how the
1. ElementCentric
2. AttributeCentric
In the below example I am getting
ProfileContext profileContext = CommerceContext.Current.ProfileSystem;
Profile currency = profileContext.GetProfile(“GeneralInfo.currency_code”, “$”, “Currency”);
currency["GeneralInfo.conversion_factor"].Value = 12;
string xmlData = currency.GetXml(ProfileXmlRetrieve.SchemaAndData, ProfileXmlFormat.ElementCentric);
currency.Update(xmlData, ProfileXmlFormat.ElementCentric);
currency.Update();
Note: In order to make XMLData persist in DB, you should explicitly call Update() method after calling Update(xmldata, xmlformat) method, else XMLData will not be saved to the database.
If your XML data contains only Profile data (not schema) then you will get following error.
“Failed to update profile using specified XML”.
If you like this post, please click on our sponsor advertisement.
If your requirement is to show the list of categories and the count of products under that category then there are two approaches for this
1. You can use commerce server object model, get categories for a catalog and for each category, get product count. Populate data in table/object and send it back to front end. Trust me it will take lot of time to fetch these details.
2. You can directly access database and fetch these details. Note: Microsoft doesn’t recommend to access database directly. Here is the code to fetch product count group by category.
Select A.CategoryName, B.Products from [MyCatalog_CatalogProducts] A
Join
(
SELECT [ParentOID]
, Count([OID]) as Products
FROM [MyCatalog_CatalogProducts]
Group by [ParentOID] ) B
On A.OID = B.ParentOID
where CategoryName is not null
If you like this post, please click on our sponsor advertisement.
Commerce server 2007 provides business users to develop six different type of discounts. They are
- Simple Discount
- Minimum purchase discount
- Buy N, Get 1 free
- Paired discount
- Paired set discount
- Order discount
There are some cases where you want to associate a dynamic discount to an Order. In commerce server we have two ways to associate a discount to an order
- When a customer provides a promotion code.
- When a site wide discount is available.
If your requirement is to associate a discount to an order (like 10% off or 20$ off), use following approach to achieve this.
- In code behind, create a discount.
- Add a promotion code to a discount.
- Approve the discount. Note: If you are using discount cache, make sure you call refreshCache method.
- Create a basket and associate the promotion code and perform checkout process.
- Disapprove newly added discount.
- Delete newly added discount.
Here I am not given end to end solution, but throwing some light on the approach. If you feel it is difficult to to know which method to call for which action, you can refer to my blog – http://ravikk.spaces.live.com/blog/cns!F348D7145D1BE6C2!500.entry which explains how to know which commerce server method to call.
If you want to try before you implement in your code, you can refer to quick order code in my blog – it is having code which performs entire checkout at single action (you need to extend it by adding discount creation and deletion code). http://ravikk.spaces.live.com/blog/cns!F348D7145D1BE6C2!428.entry
If you like this post, please click on our sponsor advertisement.

