Request a topic or
contact an Arke consultant
404-812-3123
March 2008

Arke Systems Blog

Useful technical and business information straight from Arke.

About the author

Author Name is someone.
E-mail me Send mail

Recent comments

Archive

Authors

Disclaimer

The opinions expressed herein are my own personal opinions and do not represent my employer's view in anyway.

© Copyright 2024

The Importance of Your Customer Data Lifecycle

This is a first of a series of articles I will be writing on customer data in business.  I'm starting off with a broad scope, but plan on breaking down into how CRM can help in these situations in future articles.

 

When you think of companies, what do you think of as their most important asset?  Is it what they produce?  If it the real estate they own?  Perhaps their employees, as so many are wont to claim.  While all of these might be important, none of it matters without customers.  A company’s information on their customers is their lifeline to continued success and profitability.  Without it, they have no reliable way to upsell their returning customers.  They have no way to follow up and make sure their customers’ needs are fulfilled.  Further, loss of customer information can lead to lawsuits and public embarrassment.  All told, the data you have on a customer has a lifecycle.

This lifecycle begins when you acquire a new customer.  Who is responsible for entering a customer’s data?  Does everyone follow established procedure when they enter new information? What is the initial follow-up procedure?  Consistency ensures that all future maintenance and manipulation can be done with a minimum of fuss. This is also a good time to ask questions of your new customers.  Most will appreciate the attention.  As a personal example, I enjoyed a particularly good beer recently, and wrote the maker, Anheuser-Busch asking them to produce more.  A couple weeks later, I got a call from them, wanting to know more.  They spent an hour on the phone with me, picking my brain about what I like.  In the end, they knew a lot about my beer habits, and I felt useful.

The main lifecycle of most customer data is while they are active customers.  This is the part that is most obviously critical to a business.  How are customers being upsold? What market trends can be gleaned from current sales? When they leave, why are customers leaving?  These three questions are closely tied together, and really lead to one determinant question.  Are you fulfilling your customers’ needs? Without the answer to this key problem, a company can never truly thrive.  As an example, Google’s whole business model is built around getting buyers and sellers together as effectively as possible.  Most people think of Google as a search company, but in reality their business is advertising.  Their AdWords (and its counterpart, AdSense) product is designed to create an efficient market where companies can bid on commonly used search terms.  Between this, and the ROI (return on investment) tools they offer to their customers, Google has built one of the most effective systems in the world of connecting company and customer.

Finally, in its end time, customer data must be secured and stored. Is there a data retention policy in place? What security measures are being taken to ensure that sensitive data is not inadvertently released? What is being done to mine this old customer information?  Old data is both a treasure trove and a security hazard. Properly analyzed, old data might reveal former customers that have a need of a new offering you have, or a fixable flaw in why you they are former customers.  Flipside, an embarrassing data leak can lead to a company being in the papers for all the wrong reasons.  Likely the most famous example is when CardSystems released 40 million credit card numbers accidentally.  Charges were even brought against them by the FTC.  This kind of loss could even sink a company.

The lifecycle of customer data is easily the most overlooked process in companies today.  As it is not a physical, tangible object, many tend to undervalue such information, even though it represents the core of what a company does. After all, without anyone to sell to, what would a business do?


Posted by Wayne Walton on Monday, March 17, 2008 2:16 PM
Permalink | Comments (0) | Post RSSRSS comment feed

How to move SharePoint sites around

I found an incredibly useful article about deploying and migrating SharePoint content.

http://sharepointnutsandbolts.blogspot.com/2007/10/stsadm-export-content-deployment.html


Categories: SharePoint
Posted by Eric Stoll on Monday, March 17, 2008 10:31 AM
Permalink | Comments (0) | Post RSSRSS comment feed

Asp:LinkButton as an Asp:Panel's Default Button in FireFox

The asp:LinkButton doesn’t work as a panel's DefaultButton in FireFox

Here’s a link explaining the issue:

http://kpumuk.info/asp-net/using-panel-defaultbutton-property-with-linkbutton-control-in-asp-net/

I’ve written a custom control similar to the one in the article (Arke:LinkButton). Which fixes the FireFox issue.

 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace Arke.Web.UI.WebControls
{
[DefaultProperty("Text")]
[ToolboxData("<{0}:LinkButton runat=server></{0}:LinkButton>")]
public class LinkButton : System.Web.UI.WebControls.LinkButton
{
protected override void OnLoad(System.EventArgs e)
{
Page.ClientScript.RegisterStartupScript(GetType(), "addClickFunctionScript", _addClickFunctionScript, true);
string script = String.Format(_addClickScript, ClientID);
Page.ClientScript.RegisterStartupScript(GetType(), "click_" + ClientID, script, true);
base.OnLoad(e);
}
private const string _addClickScript = "addClickFunction('{0}');";
private const string _addClickFunctionScript =
@"  function addClickFunction(id) {{
var b = document.getElementById(id);
if (b && typeof(b.click) == 'undefined') b.click = function() {{
var result = true; if (b.onclick) result = b.onclick();
if (typeof(result) == 'undefined' || result) {{ eval(b.href); }}
}}}};";
    }
}

To use this control...

  1. Add "using Arke.Web.UI.WebControls;" to your code behind.
  2. Register the assembly in the Asp.NET page "<%@ Register Assembly="Arke.Web" Namespace="Arke.Web.UI.WebControls" TagPrefix="Arke" %>"
  3. Add the control (or change your asp:LinkButtons to Arke:LinkButtons) "<Arke:LinkButton ID="ArkeLoginButton" Text="log in" runat="server" CssClass="login_button" />"
View Trenton Adams's LinkedIn profileView Trenton Adams's profile

Posted by Trenton Adams on Thursday, March 13, 2008 1:16 PM
Permalink | Comments (0) | Post RSSRSS comment feed

Using the connection strings in your web.config for LINQ

I ran into a problem with using LINQ when deploying code to different environments, when the dbml and the web code were in separate assemblies.  After doing some research I ran across the following blog by Rick Strahl: LINQ To SQL and the Web.Config ConnectionString Value

It's a good read, and really helped me understand what's going on under the hood with the LINQ connections.  Anyway, I ended up writing a partial class that allowed me to keep the nice default constructor with LINQ DataContexts, and also use a simple connection string in the web.config file.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace WebProject.Data
{  
    public partial class WebProjectDataContext   
    {       
        public WebProjectDataContext() :
            base(System.Configuration.ConfigurationManager.ConnectionStrings["WebProjectConnectionString"].ToString(), mappingSource)       
        {           
            OnCreated();       
        }   
    }
}

 

You'll need to change your LINQ classes' DataContext Properties so that it doesn't read from the app.config file (set connection to NONE).  That will keep LINQ's code generator from creating the default constructor.  You can then place a partial class like the one above in the assembly.  LINQ will then use your web.config's ConnectionString when creating the DataContext with the default constructor.

View Trenton Adams's LinkedIn profileView Trenton Adams's profile

 

kick it on DotNetKicks.com


Posted by trenton adams on Wednesday, March 5, 2008 8:01 PM
Permalink | Comments (0) | Post RSSRSS comment feed