Monday, December 5, 2011

MOS 2010 Study Guide for Microsoft Office SharePoint

I was invited to take the Beta version of the user exam for SharePoint, officially called Microsoft Office Specialist, SharePoint 2010. This was the first time that I have taken a Microsoft Office Specialist exam, though I have taken around 50 Microsoft Certified Professional Exams. But they are quite different, basically it is a simulation of SharePoint and one is assigned many different tasks to perform. Great fun.

After getting the certification I am teaching the SharePoint user interface to two students who would also like to write the exam. Since I had received it as part of a review program, I decided to use Geoff Evelyn’s MOS 2010 Study Guide for Microsoft® Office SharePoint® from O’Reilly. The books is a good match to the exam objectives, I did not spot an exam objective that is not covered here. The intended audience would be someone who has been working with SharePoint for a while, and wants to write the exam. The book does not work as well outside the intended audience, for example, a SharePoint beginner. The exercises do not work just doing them in order, as an instructor I had to fill in the gaps and do some preliminary work to get the exercises to work. Another example, page 24 mentions content types but they are not explained until page 75, where they are explained very well. A step in the direction of giving more SharePoint background is the only companion download to the book, a 13 page Appendix: Overview of SharePoint 2010.

Wednesday, November 30, 2011

Commerce Server Inventory System Part 5

Building the Inventory Catalog

Creating the Inventory Catalog

The process of creating the inventory catalog is straightforward and relies on the same tools used to create product catalogs. Before you create the inventory catalog, however, take the time to determine if your inventory needs require any changes to the inventory schema. Is there additional information that you’d like to store along with your inventory data that the default schema doesn’t support? For instance, would you like to store information about the inventory’s location in the warehouse? Maybe, in addition to naming your inventory catalogs, you want to store the unique identifiers used by your partners to help identify the catalogs. There are many difference scenarios that may justify changing the inventory and adding additional metadata to the inventory schema. Make sure to take the time to think these scenarios through before you begin to extend the inventory schema, although it is possible to add additional metadata to the schema at a later time.

Extending the Inventory Metadata

Extending the inventory schema is no different from extending the catalog or property schemas. The first step is to define a property definition to define the data you want to store along with your inventory data. Once the property definition has been defined, you can then add the new definition to either the inventory catalog metadata, thereby extending the descriptive data related to the inventory catalog, or to the inventory SKU metadata, thereby extending the descriptive data related to inventory SKUs.
The golf pro shop requires that our inventory catalog has an inventory unique identifier associated with the inventory catalog. This unique identifier is passed along with exports to trading partners, so that the trading partners know which inventory catalog they received. Additionally, all SKUs must have a warehouse location number that relates to the SKUs location in the warehouse. To accomplish this, you must first create two new property definitions: Inventory Catalog Id, and Warehouse Location. These two property definitions should have the following characteristics:


Property
Inventory Catalog Id
Warehouse Location
Property Name
InventoryCatalogId
WarehouseLocation
Display Name
Inventory Catalog Id
Warehouse Location
Data Type
Text
Text
Multilingual
False
False
Display On Site
False
False
Specification Searchable
False
False
Free Text Searchable
False
False
Minimum Length
0
0

Maximum Length
128
128

Assign To All Product Types
False
False
Store For Data Analysis
False
False


Display In Products List
False
False
Is Required
True
True
Default Value
Display as Base Property
True
True

Table 5-2


When defining property definitions for the inventory catalog and inventory SKU metadata, make sure you do not select the Multilingual property. If the Multilingual property is set to True then the property definition will not be available for selection within the inventory catalog and inventory SKU metadata. This is because the inventory catalog and SKUs have no concept of multilingual values, and are specifically excluded.

Now that the two property definitions have been defined, you must associate each of them as metadata to the appropriate entity. To assign the Inventory Catalog Id to the Inventory Catalog Metadata, you can use the Catalog and Inventory Schema Manager.

1. Click Start > All Programs > Microsoft Commerce Server > Catalog and Inventory Schema Manager.
2. Under the Task pane, click Edit Inventory Catalog Metadata. This will open the Edit Inventory Catalog Metadata screen.
3. Select “Inventory Catalog Id” from the Available Properties list, and click the Add button. This will assign the property to the assigned properties list (see Figure 4-5).

Figure 4-5

4. Click the Save and Close button to finish.
The process for extending the inventory SKU metadata to include the Warehouse Location is similar to extending the inventory catalog metadata, except that you click the Edit Inventory SKU Metadata from the task pane and then add the Warehouse Location to the Assigned Properties list box (see Figure 4-6).


Figure 4-6

Now that the inventory catalog schema has been extended, you can create your inventory catalog. Since the two property definitions were created with the Display as Base Property set to True, these property definitions will display as base properties for the inventory catalog and the inventory SKU screens rather than custom properties. Creating the inventory catalog will be in our next blog post in this series.

Based on my book on Commerce Server.  Part 6 is here Part 1.

Monday, June 13, 2011

Book Review: Pro SharePoint 2010 Search

Just read the book Pro SharePoint 2010 Search yesterday, looking for gaps in my understand of search. It is a good coverage of SharePoint Search, it does not cover FAST Search. That the authors had real life experience was obvious from the coverage also of third party, I found this part especially interesting. Also enjoyed the brief discussion of the search algorithm. The discussion on changing the ranking model was good, and some of the issues with changing the user's language settings were clearly explained. I would recommend this book. I received it as part of a review program.

Commerce Server Inventory System Part 4

Inventory Site Resources

In addition to metadata stored about the Inventory System, Commerce Server also has inventory settings stored as site resources. Site resources are entities that provide functionality to a specific Commerce Server site. These settings can be viewed and modified through the Commerce Server Manager (see Figure 4-3). Inventory site resources override properties defined within the Inventory System metadata.
The inventory site resources include the following:
· Display Backordered Items. This resource is used to indicate whether or not backordered SKUs are displayed on the Web site. If the value is -1 (True), then backordered SKUs are displayed on the Web site, whereas a value of 0 (False) indicates that backordered SKUs are not displayed on the Web site.
· Display Out of Stock Items. This resource is used to indicate whether or not out-of-stock SKUs are displayed on the Web site. If the value is -1 (True), then out-of-stock SKUs are displayed on the Web site, whereas a value of 0 (False) indicates that out-of-stock SKUs are not displayed on the Web site.
· Display Preordered Items. This resource is used to indicate whether or not pre-ordered SKUs are displayed on the Web site. If the value is -1 (True), then pre-ordered SKUs are displayed on the Web site, whereas a value of 0 (False) indicates that pre-ordered SKUs are not displayed on the Web site.
· Ignore missing Skus. This resource is used to indicate whether products that are missing SKUs are treated as in stock or out-of-stock. A product or product variant may be missing a SKU if the inventory metadata has not yet been defined for the product or product variant. If the value is -1 (True), then products or product variants missing SKUs are treated as in stock, whereas a value of 0 (False) indicates that products or product variants missing SKUs are treated as out-of-stock.
· Inventory Database. This resource is used to store the inventory database connection string. This connection string must be unique across all Commerce Server sites.
· Record Inventory Deltas. This resource is used to indicate whether or not to record quantity decrements and increments when buyers purchase items or return items on the Web site. If the value is -1 (True), then increments and decrements are recorded, whereas a value of 0 (False) indicates increments and decrements are not recorded.
· Stock Handling. This resource is used to indicate whether or not there is special handling associated to SKUs. Special handling includes back-orders and pre-orders. A value of 0 (False) indicates that there is no special handling, and that SKUs cannot be back-ordered or pre-ordered. A value of 1 (True) indicates that there is special handling, and that SKUs can be back-ordered and pre-ordered. This setting overrides the Backorderable and Preorderable metadata settings associated with the Inventory System.
· Use stockout threshold for floor. This resource is used to indicate whether to use a global value for the stockout threshold or to identify the stockout threshold individually for each SKU. A value of 0 (False) indicates that the stockout threshold for all SKUs is overridden to be 0. A value of -1 (True) indicates that the stockout threshold defined for the SKU (i.e. the floor value) is used.
Figure 4-3
Figure 4-3 shows the Inventory System site resources that are modified through the Commerce Server Manager.
Determining the condition of the SKU is an important concept to understand. The condition of a SKU could be out-of-stock, in stock, back-ordered, or pre-ordered. Settings from both the Inventory System metadata, as well as Inventory Site Resources, are used in determining the condition of a SKU. This model is depicted in Figure 4-4.

Figure 4-4
The first aspect that is evaluated is whether or not the product catalog is mapped to an inventory catalog. If not, then the site resource setting for “Ignore missing Skus” is evaluated to see how the lack of an inventory catalog should be handled. If the value is false, then the SKU is considered to be in stock. If the value is true, then the SKU is considered to be out-of-stock. If the product catalog is mapped to an inventory catalog, then the “Stock Handling” resource setting is evaluated to see if special handling rules are applied.
If the “Stock Handling” value is false, then the SKU “Status” property is evaluated. If the status is disabled, then the SKU is considered out-of-stock. If the status is ignored, then the SKU is considered in stock. If the status is enabled, then the onhand quantity is compared to the effective stockout threshold. If the onhand quantity is greater than the effective stockout threshold, the SKU is considered in stock. If the onhand quantity is less than or equal to the effective stockout threshold, the SKU is considered out-of-stock.
If the “Stock Handling” resource setting is true, then the process is the same for the disabled and ignored statuses. If the status is enabled, then the special handling rules are evaluated. If the onhand quantity is greater than the effective stockout threshold, then the SKU is considered in stock. If the SKU is pre-orderable and the onhand quantity is greater than the effective stockout threshold and the pre-order limit, then the SKU is considered pre-orderable. If the SKU is back-ordered and the onhand quantity is greater than the effective stockout threshold, the pre-order limit, and the back-order limit, then the SKU is considered back-order. Otherwise, the SKU is considered out-of-stock.
This example serves as an excellent example of how the Inventory System metadata and site resources work together to manage inventory in Commerce Server. The various settings and configurations allow for a great deal of flexibility and control over how the Commerce Server inventory processes operate.
Based on my book on Commerce Server. Part 5 is here. Part 1.

Using Today in a SharePoint calculated column

Sometimes one can be too tricky for ones own good. Was recently talking about the workaround to name a column Today, then create a calculated column using Today, and then to delete the placeholder column. Works like a treat, but of course the Calculated column does not automatically update the calculated column unless the item changes. Now we know why they hid this feature. Of course one could make a timer job....With thanks to Vaidotas.

Friday, June 10, 2011

Developer Dashboard

$cs=[Microsoft.SharePoint.Administration.SPWebService]::ContentService
$dds=$cs.DeveloperDashboardSettings
$dds.DisplayLevel=[Microsoft.SharePoint.Administration.SPDeveloperDashboardLevel]::On
$dds.Update()

Wednesday, May 25, 2011

Recipe: IIS 7.0 Compression for SharePoint 2010

%Windir%\system32\inetsrv\config\applicationHost.config around line 445


<httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files">

<scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" dynamicCompressionLevel="9"/>

<dynamicTypes>


cd \windows\system32\inetsrv

APPCMD.EXE set config –section:httpCompression /dynamicCompressionDisableCpuUsage:75

APPCMD.EXE set config –section:httpCompression /dynamicCompressionEnableCpuUsage:20

APPCMD.EXE set config –section:urlCompression /dynamicCompressionBeforeCache:true


XML rendered in blog with help of http://centricle.com/tools/html-entities/



Tuesday, May 24, 2011


http://www.mctsummit.eu/Sessions.aspx?ID=8

See you there! I will be presenting one SharePoint Deep Dive for ITPros and one for Developers.


Monday, April 25, 2011

Writing programmatically to the web.config file

SharePoint 2010 has a change that requires the following PowerShell:

$cs = [Microsoft.SharePoint.Administration.SPWebService]::ContentService

$cs.RemoteAdministratorAccessDenied = $false

$cs.Update()

OnTaskCreated not firing in loop

This bug with OnTaskCreated still exists

http://social.msdn.microsoft.com/Forums/en-US/sharepointworkflow/thread/2273b142-46d8-49a0-bd33-1f953d84b2c8

Thursday, April 7, 2011

Errata MOC 10175 SharePoint Dev


1. Lab 13 is gets message office not activated. Workaround to copy theme file from C:\Program Files (x86)\Microsoft Office\Document Themes 14 or run ospprearm from Office 2010 directory


2. Page 4-46 Lab 4, should delete the where clause.


3. Careful with timing in lab 2 page 2-53, allow the timer job time to run at each step, otherwise you will get errors.


4.Page 5-39 Lab 5, unfortunately has access denied problems changing the web config file, Lab works as stated, as long as the students do not look in the web config file to see if it really changed! Fix is this Powershell:



$cs = [Microsoft.SharePoint.Administration.SPWebService]::ContentService


$cs.RemoteAdministratorAccessDenied = $false


$cs.Update()


5. Page 5-41 needs to add the references as well as just the using statements, but the students should be able to work that out.


6. Page 10-34 needs also a test for .jpeg files to make it harmonize with the page 10-32 test.


7. Page 10-34 needs to add to create a new page called training.


8. Page 12-24 has the students typing in unneccessary xml to link to a taxonomyreporter page that does not exist.


9. Page 1-28 Best practice would have been to store value of CatchAccessDeniedException and set it back afterward to its original value, but not to false again at the end of the try code.


10. The manuals have bad spacing in Lab 6, use the lab instructions at the back of the manual instead.


11. The manuals also have wrong spacing in Lab 2 PowerShell commands.


12. Solution file for Lab 9 has a wrong elements.xml file.


13. Lab 2 does not update the content type for outcomes, so new item does not show the new fields. Quickest solution is to delete the content types section from the schema.xml.


REST is not handled, but would need to load down the ADO patch to get it to work on the vm.


A hotfix is needed if the host OS for this course is W2008 and not Windows 2008 R2. Hotfix 971677.


I would have liked some best practice double dot referencing on page 9-28, but I recommending talking the lab thru afterward to point this out.


Module 5 says that after events are asynchronous, but there is a new setting with SP2010, the SPEventReceiverDefinition that can set to SPEventReceiverSynchronization.Synchrononous, to make the after event sychronous.


Sunday, March 20, 2011

Commerce Server Inventory System Part 3

The Inventory Schema

Just as the Catalog System has a schema used as a template to define the product catalog, so too does the Inventory System have a schema used to define an inventory catalog. There are two types of inventory metadata: Inventory Catalog Metadata, and Inventory Stock-Keeping Unit (SKU) Metadata.
* Inventory Catalog Metadata: This metadata is similar to catalog metadata, except that it pertains to the Inventory System. This metadata includes the catalog name, date created, description, and the last modified date.
* Inventory Stock-Keeping Unit (SKU) Metadata: The SKU is the unique identifier for a product, and allows a product to be tracked for inventory purposes. See Table 4-1 for detailed SKU metadata properties.
Inventory Stock-Keeping Unit (SKU) Metadata
Property Name
Property Description
Backorder Availability date
The backorder availability date property is the earliest date when the back-ordered SKU is available for shipping.
Backorder Limit
The backorder limit property defines a limit for the number of SKUs that can be back-ordered. This value must be below the stockout threshold, and is used to prevent overselling and the inability to fulfill orders. If an item is pre-orderable and back-orderable, the pre-order limit is applied before the back-order limit.
Backorderable
The backorderable property is used to indicate that a SKU can be back-ordered. This is applied when the onhand quantity is less than the stockout threshold. A SKU is backordered when it has already been selling and gone out-of-stock. If the SKU has not been selling and is out-of-stock, it is considered pre-orderable.
Backordered Quanity
The backordered quantity property indicates the number of units that have been back-ordered for a particular SKU. This property is maintained by the system.
Catalog Name
The catalog name property indicates the inventory catalog used to store SKU information.
Excess Onhand Quanity
The excess onhand quantity property indicates the total quantity of SKUs above which the inventory is in excess. This property can be used to indicate that there’s too much inventory for a particular SKU.
Last Modified
The last modified property indicates the last time a modification was made to the SKU. This property is maintained by the system.
Last Restocked
The last restocked property indicates the date when the inventory for a SKU was last restocked.
Memo
The memo property is a repository for notes or comments about the SKU.
Onhand Quantity
The onhand quantity property indicates the quantity of a SKU in inventory that is available to be sold.
Preorder Availability Date
The preorder availability date indicates the earliest date when the pre-ordered SKU will be available for shipping.
Preorder Limit
The preorder limit property defines a limit for the number of SKUs that can be pre-ordered. This value must be below the stockout threshold, and is used to prevent overselling and the inability to fulfill orders. If an item is pre-orderable and back-orderable, the pre-order limit is applied before the back-order limit.
Preorderable
The preorderable property is used to indicate that a SKU can be pre-ordered.
Preordered Quantity
The preordered quantity property indicates the number of units that have been pre-ordered for a particular SKU. This property is maintained by the system.
Reorder Point
The reorder point property is used to indicate when the inventory should be replenished for a particular SKU if the onhand quantity falls below the specified value.
Status
The status property is used to determine the condition of the inventory. There are three statuses: Disabled, Ignored, and Enabled. If the status is disabled, then the inventory SKU condition is considered out-of-stock and unavailable. If the status is ignored, then the inventory condition is considered in stock but unavailable. If the status is enabled, then the inventory condition is can either be in stock, pre-ordered, back-ordered or out-of-stock, depending on the values specified in other SKU properties. See Figure 4-4 for more information.
Stockout Threshold
The stockout threshold property defines the lowest quantity of items that must be available for a SKU to be considered in stock.
Target Quantity
The target quantity property is the amount of inventory you want to have available before reordering the SKU. This value should be set based on observed buying patterns.
Unit Of Measure
The unit of measure property defines the meaning of the unit value for a SKU.
Table 4-1
All of the properties listed in Table 4-1 work together to drive the functionality of the Inventory System. It is important to again reiterate that it’s not enough to simply set these values and expect that your Web site will automatically work the way it should. The Web site must use the Inventory APIs to drive the functionality.
Based on my book on Commerce Server. Part 4 is here. Part 1.

Monday, March 14, 2011

InfoPath FormService MemoryCacheSize default

Technet says 250 MB. MSDN says 300 MB.
I suspect the first figure is correct. The 300 MB is the threshold as explained here.


Friday, February 25, 2011

Kerberos for SharePoint 2010

Just reading this excellent white paper http://technet.microsoft.com/en-us/library/ff829837.aspx
and want to be sure that I have the main points clearly in mind. My previous blog on Kerberos is here. http://software-smith.blogspot.com/2010/02/using-kerberos-with-moss-2007-and.html

1. Service Apps only use C2WTS if incoming auth is classic or Windows claims.
2. Reporting Services is not claims aware, needs classic Kerberos as does RSS viewer with authenticated feed.
3. When C2WTS with Kerberos, must use constrained delegation. eg. Excel, PerfomancePoint, InfoPath, Visio services. All require C2WTS with Kerberos. Cannot cross domain boundaries.
4. Basic delegation: BDC, Access, Reporting, Project. Can cross domain boundaries, no protocol transition.
5. According to the documentation PowerPivot is claims aware and does not need delegation. It uses C2WTS to get Windows Identity to connect to AS Vertipaq. On refresh Vertipaq/PP service uses SSS and NTLM to connect to data source, there would only be a need for Kerberos if this SQL was linked to a second SQL server. PowerPivot refresh and data collection requires classic authentication. I think the statement that PowerPivot is claims aware is wrong.
6. In multihop scenarios, cannot change from Constrained to Basic delegation.
7. SharePoint does not support Kernel mode authentication.
8. Cross forest Kerberos delegation is not possible, even with trusts.



Friday, February 18, 2011

SharePoint Myths

Myth 1. It takes 3 synchs for a profile deletion to work. See the mythbuster here.
Myth 2. You cannot use SharePoint for good looking internet sites. See some of the sites here.
Do you have a SharePoint myth you would like to see busted? Please send an email to the address here.

Monday, February 14, 2011

SharePoint 2010 Mirroring and Log Shipping

All databases can be mirrored for high availability except:
WebAnalyticsServiceApplication_StagingDB_
User Profile Service Application_SyncDB_
User Profile Service Application_SocialDB_
FASTSearchAdminDatabase
Reporting Services databases.

The only databases that can be logged shipped or use async mirroring:
WSS_Content
WSS_UsageApplication (not recommended)
Secure_Store_Service_DB_
All ProjectServer DBs if all db logs are synched
DefaultPowerPivotServiceApplicationDB (SQL server only)

This is according to this TechNet article updated July 29, 2010.

Another TechNet article also updated July 29, 2010 indicates that the following databases can also be log shipped:

Application_Registry_server_DB_
Managed Metadata Service_
PerformancePoint Service Application_
WebAnalyticsServiceApplication_StagingDB_
WebAnalyticsServiceApplication_ReportingDB_
User Profile Service Application_SocialDB_

Technically, I would concur with extending this list to include these.

With thanks to C. Liu

Saturday, February 5, 2011

CQWP (Content Query Web Part) and Dynamic Filtering

Basically you can use the token PageFieldValue to use a value on the current page layout. This works if it is a Managed MetaData field. Similarly you can use the PageQueryString to add a value to use in the query. A good example of using these values is here.

CQWP (Content Query Web Part) and Common View Fields

SharePoint 2010 exposes the Common View fields on the web part tool pane. Hence it is no longer necessary to export the web part, edit these fields and reimport. The documentation should be updated to reflect this.

Thursday, January 27, 2011

SharePoint 2010 Enterprise Search

Although you can have the query component and the query processor on two separate machines, the "Did you mean?" functionality will not work since it only uses the local query component.

List of sites using Commerce Server 2007 or 2009

Here is a list of public sites using Commerce Server 2007 or 2009. As we do partner training, we have a section called "Notes from the field" where a partner presents some of their sites and the interesting facets of those projects. Let us know if you know of other sites and we will add them to the list.

http://www.20minutenmobile.ch/
http://www.360-5.com/
http://store.aigle.com/
http://www.amway.com/
http://www.apoteket.dk/
http://www.apoteket.se/
http://www.astleyclarke.com/
http://www.bd.dk/
http://www.bilka.dk/
http://www.bolia.com/
http://www.booksdirect.co.uk/
http://www.brandsource.com/
http://www.buylifetime.com/
http://www.bwt-filter.com/
http://www.bwt-group.com/
http://www.bygghemma.se/
http://www.camaieu.fr/
http://www.calphalon.com/
http://www.camaieu.fr/
http://www.chaparral-racing.com/
http://www.chem.agilent.com/
http://www.clarks.co.uk/
http://store.ctvolympics.ca/
https://www.dolce-gusto.de/
http://www.doubleday.com.au/
http://www.doubleday.co.nz/
http://www.douweegbertsenmeer.nl/
http://sites.dymo.com/Pages/home.aspx?locale=enUS
http://www.dynamicsexchange.com/
http://www.ebgames.com/
http://educacional.bmf.com.br/
http://www.extra.com.br/
http://www.festool.de/
http://www.gamestop.com/
http://www.gevalia.com/
http://www.gracobaby.com/
http://www.hanes.com/
http://www.hsslivehire.com/
http://www.jules.fr/
http://www.kalligo.fr/
http://www.ocean.slb.com/
http://rockshop.hardrock.com/
http://www.harrods.com/
http://www.mathon.fr/


Saturday, January 22, 2011

Sample credit card numbers for testing Commerce Server 2009

• American Express: 3400-0000-0000-009
• Visa: 4111-1111-1111-1111
• MasterCard: 5111-1111-1111-1118
• Discover: 6011-0000-0000-0004

Friday, January 7, 2011

Commerce Server Inventory System Part 2



Inventory Systems Features

The Inventory System in Commerce Server comes with many important features that aid in the real-time management of inventory for items in your catalog. These features allow you to do the following:
* Display real-time inventory conditions of your products and product variants, including in stock, out-of-stock, back-ordered, or pre-orderable.
* Filter products and product variants listings to show only those products that are currently available in stock.
* Decrement inventory levels when orders are processed.
* Receive notifications when inventory levels reach an out-of-stock threshold.
* Integrate inventory levels with LOB applications.
* Gain insight into how well products and product variants are selling.
As the Inventory System deals with physical items that can be sold, it is common to refer to items as a stock-keeping unit (SKU) rather than a product or product variant. A SKU is a unique identifier that enables a product to be tracked for inventory purposes.

Inventory Conditions

There are two primary inventory conditions that exist for your SKUs: in stock and out-of-stock. When a SKU is in stock your customers should be able to purchase it normally, with each processed order decrementing the inventory total for the SKU. When a product is out-of-stock, however, special handling conditions may apply.
The easiest way to handle out-of-stock inventory is to not show it on the Web site, thereby preventing customers from purchasing the SKU. While this is a simple way to handle out-of-stock inventory, it is probably not an acceptable solution for most online Web sites. Instead, many Web sites prefer to display out-of-stock inventory as back-ordered. Back-ordered indicates that the SKU is temporarily out-of-stock. Typically a back-order availability date is also displayed with the SKU, indicating the earliest date that the back-ordered SKU is available. It is possible to still allow the customer to purchase back-ordered SKUs and indicating to the customer that the order cannot be fulfilled until the inventory has been replenished.
In addition to the back-ordered inventory status, a SKU may be listed as pre-orderable. A Web site may want to list a SKU as pre-orderable, indicating that the SKU is not in stock and is not available until a future availability date. Marking SKUs as pre-orderable is a popular way to satisfy the demands of customers that want to purchase popular items before they are available. Allowing the pre-order of SKUs is quite popular in the book publishing industry, and is how many books end up as best sellers before they are even published.
If a SKU is both pre-orderable and back-ordered, the Inventory System first uses the associated pre-order limit to satisfy purchases. Once this limit has been exceeded, the back-order limit is then applied. Once both the pre-order and back-order limits have been exhausted, the SKU is then considered out-of-stock and no available for purchase.
Figure 4-2
Figure 4-2 shows the possible purchasing conditions that can exist for SKUs in the Inventory System. If an item is in stock, then it is available for purchase. If an item is out-of-stock, then it is either not available for purchase, back-orderable, or pre-orderable. It is important to recognize that while the Inventory System may have various conditions attached to SKUs (such as back-ordered or pre-orderable) the Web site itself must manage these conditions appropriately. Unless you use the Starter Site, your Web site will not automatically associate these purchasing states to the SKUs. You have to develop your Web site to respond in this fashion, through the Inventory APIs.

Integration into the Orders System

The Inventory System is able to work directly with the Orders System so that inventory levels remain accurate and the customer’s orders are processed appropriately. The interaction between these two systems through the use of two pipeline components: CheckInventory and UpdateInventory.
The CheckInventory pipeline component is part of the Basket pipeline and checks the inventory status for SKUs in the customer’s basket. This component will return information to the Web site that indicates the current condition of the SKU. Based on the condition of the SKU, the Web site can then render the customer’s basket appropriately.
The UpdateInventory pipeline component is part of the Checkout pipeline, and checks the inventory status for SKUs and updates the SKU quantities in the Inventory System. In addition to updating inventory quantities for the SKUs, this component also handles out-of-stock conditions. If there are multiple SKUs currently being processed, and one is out-of-stock and is not back-orderable or pre-orderable, the other SKUs are not processed.
Both the CheckInventory and UpdateInventory pipeline components have the ability to return warnings and errors through the pipeline. The Web site can then respond to these warnings and errors appropriately.

Additional Inventory Features

The Inventory System also includes the following features:
* Inventory APIs. The Inventory APIs allow developers to directly interact with the Inventory System.
* Imports and exports of data. Inventory data can be imported and exported either using the Catalog Manager or by directly using the Inventory APIs.
* Bulk updates and deletions. With bulk updates and deletions, you have the ability to update or delete multiple SKUs in the inventory catalog from a single operation.
* Transactional operations. All operations performed during an import or an export can be run in a transaction, so that any errors that occur cause the entire operation to roll-back.
* Integration into LOB systems through BizTalk adapters. The Commerce Server BizTalk adapters allow you to integrate the Inventory System with other LOB systems.
* Full text search. All metadata associated with the Inventory System can be searched and queried along with metadata from the Catalog System.
While the Inventory System has a rich set of inventory management functions, it may not satisfy the inventory needs of all companies. The Inventory System for Commerce Server is an extension of the Catalog System designed to provide real-time management of inventory. Consequently, the Commerce Server Inventory System does not provide any warehousing, manufacturing, or logistical information about the inventory. If your company has these types of requirements you will need to weigh the benefits of using a third party application or extending and customizing the Inventory System. In some situations it may be best to purchase a 3rd party application to manage and control these processes, and utilize the BizTalk adapters to integrate it into Commerce Server.

Based on my book on Commerce Server. Part 3 is here.