Archive: August, 2012

Server Redundancy Keeps Your Company Healthy, Wealthy and Wise

Benjamin Franklin coined the phrase, “Healthy and Wealthy and Wise.” We all want this, especially health because without health, the other two don’t matter as much.

When we’re healthy, we tend to forget how miserable we felt the last time we had a problem. It feels so great to be healthy, that once we overcome a problem, we eagerly shift focus to “Wealthy and Wise.”

This same human nature applies to how we take care of our computers.

It feels great when all systems are humming and the computers are responding instantly. In today’s world, this is a given. How frustrating is it, as a customer, to enter a web order with long delays between pages, or hear a CSR say, “Our computers are slow today?” Delays should be unacceptable, “downtime” is catastrophic, and just the thought of losing any data is unthinkable.

How do we keep our systems as consistently “Healthy” as possible, so that our business can focus on its goals?

First, servers need to stay humming

I.T. started making servers more reliable by doubling up the weakest point of failure. Disk drives are like incandescent light bulbs; they eventually burn out. These days,we set them up in groups called “RAID arrays.”

On a SQL Server, the data should be stored on a RAID 10 array, similar to the groups of tires on an eighteen wheeler. This distributes the weight, and the truck can keep going if one of the tires blows (to be replaced it as soon as possible).

Another way to increase server reliability is to mix disks from different manufacturers or different lot numbers. If one disk has a design flaw, they don’t all burn out at once. The “claimed” average life of a disk drive used to be 12 years, and now they are claiming as much as 57 years for consumer drives and 171 years for server grade drives. In real life, drives can last 15 minutes to 15 years.

In every 10 servers that are several years old, you may typically find one or two servers that have a failed drive in a group that needs to be replaced. The server is still functioning so often nobody is even monitoring for this.

In an important server with many drives, it’s a good idea to add an extra drive as a true “hot spare” that sits in waiting 24x7x365, and then automatically joins whatever group has a failure.

Think about it: your system is replacing the flat tire without even stopping the truck! Most servers can do this today, if you plan ahead and set it up this way. If they’re big enough, you can even use retired drives for this.

Second: Double up the entire server

If any other components on the server fail, another server can take over. Obviously now, instead of doubling the cost of your disk drives, you need to also double the cost of the entire server, and do additional set up so that the second server always has a fresh copy of what is on the first server.

For Web Servers and Terminal Servers, Windows comes with the ability to set up Server groups that can work together to “share the load.” If one fails, the others in the group need to work harder but they can keep things going.

Amazingly, SQL Server 2008 comes with this capability, and SQL Server 2012 improves it further to allow what they call “SQL Server Always-On Availability Groups.”

Picture a convoy of trucks. If one breaks down, they cast it aside and the next one instantly takes the load and continues the journey.

With some advance setup work from Morse Data, your InOrder application can enjoy this protection — that is, to jump to another server without anyone realizing that the main server just went up in smoke and triggered the sprinkler system.

Speaking of sprinkler systems, someone recently asked, “Why do I need still need to do backups and pay extra for disk drive groups, and now also extra servers!?”

The answer is clear if you think about it: Why do we have fire extinguishers when we have a sprinkler system? And why do we need sprinkler systems when we have fire departments and fire insurance?

Whether you’re hosting servers or running servers in house, you still need to ask your I.T. people what the plan is to keep your servers humming.

To keep our companies — and customers happy — we need all systems humming. However, we also need them to instantly respond — which will be Part II of this series.

Share on FacebookShare on LinkedInTweet about this on TwitterShare on Google+Email this to someone

InOrder Powers Fulfillment Strategies International

With clients ranging from small start-ups to Fortune 100 companies located around the globe,and a comprehensive services offering that includes individual order fulfillment (pick-pack-ship), large-scale kit assembly (kit-pack), order processing, e-commerce, inventory management, assembly and promotion and data services, Fulfillment Strategies International is B-U-S-Y!

How does the company successfully meet the complex needs of such a wide variety of clients? They use InOrder software. The great thing about InOrder, for a company like FSI, is that it has one database – and one login. This means FSI account managers don’t have to log in and out to see individual client accounts. Sweet!

To see FSI (and InOrder) in action, have a look at “A Day in the Life of FSI” video.

As FSI Vice President & General Manager Forrest Marbutt says, “Just imagine all those InOrder-powered orders going out the door!” Thanks, Forrest!

Share on FacebookShare on LinkedInTweet about this on TwitterShare on Google+Email this to someone

Morse Data Adopts Ducks to Benefit the Special Olympics

Quack! Quack! 35,000 yellow rubber ducks will splash into the Chicago River from the Columbus Drive Bridge in downtown Chicago and race down river towards the finish line starting at 10:00 a.m. on Thursday, August 9th, 2012.


The Rubber Ducky Derby is the annual signature fundraising event that benefits the Illinois Special Olympics.

This year we’ve adopted a duck for each of our employees and you can adopt one, too — just visit www.duckrace.com/Chicago to learn how to enter the race. The cost to adopt a single duck is $5.00 or you can purchase a Quack Pack at $25.00 which consists of buying 5 ducks and getting 1 duck free.

In addition to the pride and glory of winning the race and beating out 34,999 ducks, you also have a chance to win several nice prizes including a 2012 Chevy Equinox LS and a Caribbean Vacation.

Please join us in supporting the Special Olympics and the Windy City Rubber Ducky Derby. Hopefully the 35,000 yellow rubber ducks will “Get InOrder” and ours will swim the fastest and win the race. Wish us luck — and please do join in the fun for this great cause!


2012 Windy City Rubber Ducky Derby Promo With Athletes

2010 Windy City Rubber Ducky Derby – Duck Drop

Share on FacebookShare on LinkedInTweet about this on TwitterShare on Google+Email this to someone

Using Prospect User-Defined Fields to Make List Creation More Powerful

Many InOrder users are familiar with User-Defined Fields (UDFs) on Prospect records. These can be used to collect demographic information about your potential customers. They can be exposed on your web interface for your visitors to enter information such as age, gender, interests, where they first heard about you, or any other type of question that helps you target specific prospects and provide them with a more personalized experience.

Because these UDFs are all available as Selection Criteria in [List Creation], you can use these fields to pull very specific mailing lists.

But what if you want to make [List Creation] more powerful and include more prospect-based criteria than exists as built-in choices? These Prospect UDFs don’t have to be merely the Q&A fields your prospects answer themselves. You can also have UDFs as “concept” fields; updated regularly using a scheduled “SQL statement” job that categorizes customers based on buying behaviors or patterns that you are looking for.

InOrder client Rod’s Western Palace wanted to do just this. They needed lists of people who purchased any product from a specific department. But they also wanted to be able to pull a list of people who had purchased any product that was NOT in that same department. We worked with them to achieve this by adding two “concept” fields, both simple Yes/No fields that are recomputed by a nightly job that reviews each customer’s order history.

Here is how you can implement this type of Prospect UDF at your company.

First, create one or more Prospect UDFs in the [Client Setup] window. Make sure to set the ‘Data Type’ appropriately (YesNo, Text, Number, etc) for the type of information you will be populating into the field.

Rod’s used two UDFs set to the YesNo data type. The first (UDF Field 1) was called ‘Tack Buyers’ (customers who ordered items from the Tack department) and the other (UDF Field 2) ‘No Tack Buyers’ (customers who placed an order but never ordered any items from the Tack department).

In the screenshot, we show you how to do this using our test database with “Chocolate Buyers” as the example:

Next, determine the criteria to calculate the computed value for this field on each prospect record. If the criteria is based on items ordered, what distinguishes the items? SKU? Inventory Type? Inventory Status? One of the 21 Inventory User-Defined Fields? Do the items need to be part of a posted shipment in order to be used in determining the calculation? This criteria will be used to build your SQL statement.

Next, if you know SQL then you can build the SQL statement, otherwise contact Morse Data Technical Support for assistance. If you build this statement in-house, remember to always have Morse Data Technical Support approve your statement before executing it against your live database, to avoid unexpected results, and to stay within the terms of your software agreement. (We recommend having Morse Data help you the first time, and then consider trying it yourself if you ever need to make adjustments or add new fields.)

Here is an example update statement that uses inventory types, with a description of what each step does.

1) Insert the two Prospect UDFs into prospect records where they currently do not exist, and set the values to ‘N.’:

Insert tblProspectUserField (lab_KEY, lab_FIELD_NUMBER, lab_USER_DEFINED)
Select lab_key,’3′,’N’
from tblProspect pro
where not exists
(Select * from tblProspectUserField prev
where prev.lab_KEY = pro.lab_KEY
and prev.lab_FIELD_NUMBER = ‘3’)–Chocolate Buyer Prospect Field
Go
Insert tblProspectUserField (lab_KEY, lab_FIELD_NUMBER, lab_USER_DEFINED)
Select lab_key,’5′,’N’
from tblProspect pro
where not exists
(Select * from tblProspectUserField prev
where prev.lab_KEY = pro.lab_KEY
and prev.lab_FIELD_NUMBER = ‘5’) –Non-Chocolate Buyer Prospect Field
Go

2) Update the value on the first UDF to ‘Y’ if: there exists a posted order associated with this customer, and that order contains a posted line item of an inventory item belonging to one of three inventory types:

Update puf
Set lab_user_defined = Case
When Exists (Select * from tblPostedOrder por
INNER JOIN tblPostedLine pli on por.por_ORD_KEY = pli.por_ORD_KEY
INNER JOIN tblInventoryPrimary inp on inp.own_OWNER_CODE = pli.own_OWNER_CODE
and inp.inp_SHORT_ITEM_NUMBER = pli.inp_SHORT_ITEM_NUMBER
Where por.cus_key = puf.lab_KEY
and inp.ity_INVENTORY_TYPE_CODE IN (‘DK’, ‘MK’, ‘WT’))
THEN ‘Y’
ELSE ‘N’
END
From tblProspectUserField puf
Where puf.lab_FIELD_NUMBER = ‘3’ –Chocolate Buyer
Go

3) Update the value of the second UDF to ‘Y’ if: there exists a posted order associated with this customer and there exists no posted orders associated with the customer containing a posted line item where the inventory item belongs to one of three inventory types:

Update puf
Set lab_user_defined = Case
When Exists (Select * from tblPostedOrder por
INNER JOIN tblPostedLine pli on por.por_ORD_KEY = pli.por_ORD_KEY
INNER JOIN tblInventoryPrimary inp on inp.own_OWNER_CODE = pli.own_OWNER_CODE
and inp.inp_SHORT_ITEM_NUMBER = pli.inp_SHORT_ITEM_NUMBER
Where por.cus_key = puf.lab_KEY)
AND NOT Exists (Select * from tblPostedOrder por
INNER JOIN tblPostedLine pli on por.por_ORD_KEY = pli.por_ORD_KEY
INNER JOIN tblInventoryPrimary inp on inp.own_OWNER_CODE = pli.own_OWNER_CODE
and inp.inp_SHORT_ITEM_NUMBER = pli.inp_SHORT_ITEM_NUMBER
Where por.cus_key = puf.lab_KEY
and inp.ity_INVENTORY_TYPE_CODE IN (‘DK’, ‘MK’, ‘WT’)
THEN ‘Y’
ELSE ‘N’
END
From tblProspectUserField puf
Where puf.lab_FIELD_NUMBER = ‘5’ –Non-Chocolate Buyer

A regularly-scheduled SQL job similar to this one allows Rod’s Western Palace to perform targeted mailings to their buyers of specific items.  Once you are back in the [List Creation] window, these fields are available for use as Selection Criteria.

The nicest part about these SQL statements is that they can consider more complex logic that you might want to build into a UDF, like only considering sales that occurred in the last 120 days, sales that were not returned, or sales of specific items that were placed where the order was responding to an abandoned cart email campaign.  If you can think of it, there is probably a way to compute it.  And amazingly, these SQL statements can evaluate hundreds of thousands of customers and their respective order history, usually in a matter of minutes each night!

Share on FacebookShare on LinkedInTweet about this on TwitterShare on Google+Email this to someone

1 (888) 667-7332

Contact Us

Literature Downloads


Contact

Corporate Headquarters
Morse Data Corporation
16 Pierce Street
Dover, NH 03820
Toll Free: (888) 667-7332
Phone: (603) 742-2500
Fax: (603) 742-8178
Technical Offices
Morse Data Corporation
9661 W. 143rd St. Suite 200
Orland Park, IL 60462
Toll Free: (800) 860-9515
Phone: (708) 873-0010
Fax: (708) 873-9967

About