Thanks for stopping by our booth at the 2013 National Logistics Forum in Washington, D.C.!

Browse by Category

EasyMock Fundamentals Series — Part 2

Tech 1-01Welcome to the second installment of my EasyMock Fundamentals series where I take you through the ins and outs of the open source Java library, EasyMock. EasyMock can be used in conjunction with a unit testing framework, such as JUnit or TestNG, to facilitate better unit testing without all the 2nd degree dependency issues. EasyMock provides the means (through the use of mock objects) to specify the response that will be returned when the code being tested makes calls to external methods. This will allow the result of the unit test to be isolated from variables outside of the scope of the unit test code.

Mocking Objects

Basic steps for EasyMock use

1. Import EasyMock

  • import static org.easymock.EasyMock.*;  // non-static imports may also be used

2. Create mock object

  • private ClassOrInterface mock;
  • mock = createMock(ClassOrInterface.class);  // throws AssertionErrors for all unexpected method calls
  • mock = createNiceMock(ClassOrInterface.class);  // allows all method calls and returns appropriate empty values (0, null or false)

3. Specify expectations for mock (in other words, “I’m going to tell you what you should expect to do”)

  • mock.doThis();
  • mock.doThat();
  • specify that the last method could be called x times
    • expectLastCall().once();  // default one call
    • expectLastCall().times(3);  // exact calls
    • expectLastCall().times(2, 5);  // min, max calls
    • expectLastCall().atLeastOnce();  // one or more times
    • expectLastCall().anyTimes();  // 0 or more times
    • specify method response or return value
      • expect(mock.doThis()).andReturn(returnValue, i.e. “true”);

4. Make mock available for use (in other words, “I’m done telling you what you should expect to do, now get ready to do it.”)

  • replay(mock)

5. Run unit test that will call doThis() and doThat()

  • verify proper response
    • assertTrue(doThis());

6. Verify that expected behavior was called (did everything get called the expected number of times?)

7. Verify(mock)

Tips

Prefer Nice Mocks

There are basically 3 different ways to have EasyMock create a mock object for you.

  1. createMock(Foo.class)
  2. createNiceMock(Foo.class)
  3. createStrictMock(Foo.class)

Each way gives you a mock object with slightly different behaviors/restrictions. Consult the EasyMock API for specifics, but unless you have valid reason to not, the preferred method is createNiceMock(). Nice mocks are, as their name suggests, ‘nice’. ‘Forgiving’ is probably a more appropriate term in that, as the API states, nice mocks will return 0false, or null for unexpected invocations. Meaning:

  • for methods that return intdoublelongcharfloatbyteshort (non\-boolean primitives) – the returned value is 0
  • for methods that return boolean (not sure about Boolean) – the returned value is false
  • for methods that return Object (or anything that extends Object) – the returned value is null

The benefits are not obvious without further explanation. Try to think of it in these terms. Nice mocks allow you to configure them the way you want for the behavior you care about without having to configure them for the behavior you don’t care about and are not relying on for your test. For example, let’s assume you want a mock for an object that has a getId() method. Chance are you don’t care what getId() does and if the code you’re testing doesn’t care what it does, but happens to call it in a log statement or something that is irrelevant to your test, then a nice mock will allow you to not have to setup an expectation for that method (see Example 1).

package com.partnet.foo;
public class Foo {
  private Emailer emailer;
  public void doSomethingCool() {
    // I don't care about this and don't want to setup an expectation for it
    log.debug("emailerId:" + emailer.getId());
    // something worthy of being unit tested
    emailer.sendEmail(...);
  }
}

Additionally, if another developer were to remove that log statement, the unit test wouldn’t have to change because the expectation was never added and the tests wouldn’t break just because a log statement was removed.

Prefer “Relaxed” Expectations

The term “relaxed” refers to the IExpectationSetters API as it relates to configuring the number of times an expectation is valid. Specifically, the methods once()times(count), and times(min, max) should be avoided unless you really care and/or your test relies on them. The methods anyTimes() and atLeastOnce() should be used instead. These “execution count” methods set the number of times a given method is expected to be called. The reason the latter methods should be preferred is that, while setting up explicit method call counts is certainly valid, implementations change over time and often times those changes have no effects on the functionality of a given object. For example, who cares how many times emailer.getId() is called in the above example and does the fact that it gets called multiple times have any effect on the calling code? Clearly not. However, if an expectation like the following was added:

EasyMock.expect(mockEmailer.getId()).andReturn(1).once();

and later the log statement was removed or an additional log statement was added that called getId() again, the unit test would fail.

However, this practice is not an across-the-board standard as it makes sense to setup an expectation like the following:

EasyMock.expect(mockEmailer.sendEmail(...)).andReturn(true).once();

because sending multiple emails is most likely not expected or okay.

Please note that not specifying one of the “execution count” methods is the same as using the once() method (i.e. once() is assumed unless otherwise instructed).

Stub Returns

andReturn() vs. andStubReturn()

EasyMockSupport

Introduced in version 2.5.2, EasyMockSupport is your friend. It saves you the trouble of having to call reset()replay(), and verify() on all your mock objects. As the javadoc shows, an example usage is as follows:

package com.partnet.foo;
public class TestFoo
  extends EasyMockSupport {  // this is key
  @Test
  public void test() {
    resetAll();  // reset all existing mocks
    // create mocks
    firstMock = createMock(A.class);
    secondMock = createMock(B.class);
    replayAll();  // put all mocks (new & existing) in replay mode
    // use mocks
    verifyAll();  // verify all mocks (new & existing)
  }

This is the second in my three-part EasyMock Fundamentals series. Please leave your questions or comments in the comment section below and be on the lookout for the final installment next week.

Quick Links

EasyMock Fundamentals — Part 1

EasyMock Fundamentals — Part 3

EasyMock Fundamentals — Part 1

High Tech In my three-part EasyMock Fundamentals series, I will take you through the ins and outs of the open source Java library. EasyMock can be used in conjunction with a unit testing framework, such as JUnit or TestNG, to facilitate better unit testing without all the 2nd degree dependency issues. EasyMock provides the means (through the use of mock objects) to specify the response that will be returned when the code being tested makes calls to external methods. This will allow the result of the unit test to be isolated from variables outside of the scope of the unit test code.

An Introduction to EasyMock Fundamentals

Refer to the official EasyMock documentation for more detailed explanation of the tool (latest as of this writing EasyMock3.1 Docs) including download, setup, and a brief usage example.

Please note that, for the sake of simplicity, not all the details of the code examples have been included.

Stubs vs. Mocks

An alternative to using a mock object is to create a stub object; a lightweight implementation of the interface for the external methods, that just return the expected response. These two approaches are best illustrated with an example.

Let us say you want to write a unit test for an object Foo that does something cool, doSomethingCool(), and uses another object, Emailer, to send emails while doing something cool as follows:

package com.partnet.foo;
public class Foo {
  private Emailer emailer;
  public Foo(Emailer emailer) {
    this.emailer = emailer;
  }
  public void doSomethingCool() {
    // something worthy of being unit tested
    emailer.sendEmail(...);
  }
}
package com.partnet.foo;
public interface Emailer {
  boolean sendEmail(...) throw EmailerException;
}

If you’re trying to test the doSomethingCool() method, you don’t want to, shouldn’t have to, and thankfully don’t need to worry about what emailer.sendEmail() does (assuming the implementation of the call has no impact on the code you’re testing of course).

The assumption here is that the real implementation of Emailer, say it’s called FancyEmailerImpl, is a non-simplistic object that may require some configuration or won’t work in a non-real environment. In this case you do not want to have to create a real FancyEmailerImpl and use it in your testing because again, what it does has no bearing on the code you’re actually trying to test.

Stub Objects

Using the stub object approach, you could create a stubbed-out/dummy version of Emailer like the following:

// stub object
package com.partnet.foo;

public StubEmailer
  implements Emailer
{
  public boolean sendEmail(...) throws EmailerException {
    return true;
  }
}

Simple, easy, done… right? Yep, you can now just setup your unit test as follows and test away:

// stub object use
package com.partnet.foo;

public TestFoo {
  @Test
  public void test() {
    Emailer stubEmailer = new StubEmailer();
    Foo myFoo = new Foo(stubEmailer);

    myFoo.doSomethingCool();
  }
}

The downside to this approach is that you end up building and maintaining a bunch of stub code. Additionally, stub code can be difficult to write as you get into stubbing out more complex objects that you want to test around. For example, if the code you’re testing sets an ID on your Emailer and later retrieves it via setId()/getId() methods, this behavior would need to be stubbed out correctly.

Mock Objects

The alternative to writing stubs is writing mocks, or more correctly, using a mock object library to create mock objects for you. EasyMock is such a library. The following demonstrates how to use EasyMock to mock out the Emailer from above.

// mock object example
package com.partnet.foo;

public TestFoo {
  @Test
  public void test() {
    Emailer mockEmailer = EasyMock.createMock(Emailer.class);
    Foo myFoo = new Foo(mockEmailer);

    myFoo.doSomethingCool();
  }
}

Simple, easy, no stub code to maintain. Even cooler is how you solve the problem mentioned above regarding setId()/getId(). This is where the concept of Expectations comes in (in terms of EasyMock, these are called IExpectationSetters). An Expectation is basically you telling a mock object how to behave and what you expect to happen when you run the unit test code: “When this happens, do this”, “When your getId() method is called, return this value”, “I expect that your setId() method will be called”. After your unit test code has run, you can then ask EasyMock to verify that everything you expected to happen actually occurred so that you can be assured your code does what you think it does.

Downloads

The latest EasyMock files can be downloaded from a link on the EasyMock Download page.

Integration

Add these to the classpath:

  • easymock.jar
  • cglib (2.2) – to perform class mocking
  • Objenesis (1.2) – to perform class mocking

Note that EasyMock only works with Java 1.5.0 and above.


This is the first in my three-part EasyMock Fundamentals series. Please leave your questions and comments in the comment section below and look for my next post next week.

Quick Links

EasyMock Fundamentals — Part 2

EasyMock Fundamentals — Part 3

Contracting Entry Requirements: Is it Time to Reconsider?

ChessA lot of concern has been raised recently among Acquisition professionals within the Federal Government over how sequestration and future budgets will impact Workforce development and sustainment. DOD has made progress in recent years with some serious initiatives fueled by the Defense Acquisition Workforce Development Fund and Congressional recognition that the contracting and pricing workforces need special care and attention in order to meet the dangers inherent in the demographic “bathtub” that will burst when over 40% of the experienced contracting workforce retires, leaving behind comparatively small numbers of mid-level experienced personnel. Work in progress will be completed and new Acquisitions started by less and less experienced people as the maturing workforce exits. One big question is, did DOD react soon enough to mitigate the problem or do we still need a means of attracting trainable and seasoned talent?

Will rethinking 1102 contracting entry requirements help or hinder?

I was all in favor of the Acquisition Corps and DAWIA back in the 1990s and I still am. One thing the draftsmen of DAWIA proposed that did not get incorporated into the program was a salary bump similar to what other professional series like engineers and lawyers get. Even though there are education requirements to get hired as an 1102 and continuing education requirements (that might actually start to get enforced), Contract Management is not considered “professional enough” to warrant extra pay. So to get in, you have to meet the DAWIA career field minimum education requirements whereas the Loggies will hire you without them—and either career field will pay you exactly the same.

Hired as an intern pre-DAWIA with a bachelor of arts in Anthropology, I feel my liberal arts education gave me a great foundation for being able to analyze, evaluate and connect concepts and techniques, creating a great foundation for Contracting as a career. But under today’s rules I would not have been hired and would not have contributed 33+ years to DOD in the Contracting field. I did get an MBA, using tuition assistance provided by my Agency and I did achieve Level III for Contracting under DAWIA when the program started. And I earned CPCM designation from NCMA, too. I’m just one example of the type of individual being passed over today.

Furthermore, the people who trained me did not, for the most part, have college degrees, but they knew their craft. From this we can infer that the principles of contracting are within the grasp of any thinking individual, especially when other trained individuals are there to help.

I was surprised when working at Defense Contract Management Agency HQ to find that DCMA field activities (which are all over the world) have difficulty hiring 1102s, especially those qualified to become Contracting Officers. Attaining certification after being hired was not the issue; meeting the entry-level bachelor’s degree and business course requirements proved to be the stumbling block for the available pool of applicants (oh, and by the way, an HR specialist decides if your business courses qualify or not).

Speaking of the HR element, if we are going to look at changing 1102 entry requirements we also need to look at who is doing the pre-screening to create the list of job candidates. HR Specialists can’t be expected to operate under instructions that are anything other than black and white. If they were capable of making judgment calls about what might work in a person’s experiences that could substitute for a college degree or business courses, they’d be 1102s.

I like the suggestion of requiring a bachelor’s degree and then setting a time limit for getting the 24 hours in business completed after a person is hired because the material covered in these courses will be helpful. One drawback: Interns have a 24-month time limit on getting their DAU courses and DAWIA certifications completed, too (I did my graduate work on my own time, so this is not an insurmountable conflict) but, having worked as an Acquisition Workforce Manager, I can tell you that the supervisors who have Interns in their organization often feel there is not enough time for on-the-job training and/or contributions to productivity for the seat the Intern occupies.

If new hires are required to get the college level business credits there will need to be some sort of support proffered. The question is, will tuition reimbursement be enough? Can we afford to have interns take these classes and their DAWIA classes on the clock? As anyone who has pursued higher education while holding down a full-time job – while learning a profession! – can attest, it is a big personal commitment. We may have to bite a bullet that represents nothing but school for Interns the first couple of years. What if we set the bar in a different place? How does 0 business hours to get hired, 12 hours of business courses to get certified at Level II and a total of 24 hours to get certified at Level III sound? Interns and journeymen could work at their own pace knowing these requirements are going to have to be met in the future and, when they get hired into a position where Level II or Level III are required they will still have 24 months to complete 12 course credits – plus the required DAWIA courses.

I also think we are missing the boat by not allowing senior, experienced contracting professionals from the private sector to enter the career field at a senior level without DAWIA certifications already completed. You cannot take DAU courses unless you are a Government employee, so how can you fulfill this requirement? Acquisition Workforce members can apply for course waivers through the Fulfillment Program, so why not external hires?

Is it time to rethink the entry-level requirements for the 1102 series? Can we improve the current situation by broadening the applicant pool? What are your thoughts on positive changes that can fill the bathtub with bright, knowledgeable Contracts professionals dedicated to preserving the integrity of the procurement process while making sensible decisions that meet mission needs and satisfy responsibilities toward the tax payer?

Improve Cybersecurity with Continuous Monitoring

CybersecurityCybersecurity has now superseded terrorism as our country’s #1 threat. The latest US Intelligence Community Worldwide Threat Assessment published March 13, 2013 states that:

“Threats are more diverse, interconnected, and viral than at any time in history. Attacks, which might involve cyber and financial weapons, can be deniable and unattributable. Destruction can be invisible, latent, and progressive.”

Both government and private-sector groups are trying to keep up with the rising threat levels, but the increasing threats are outpacing the current standard technologies. For years, we have relied on firewalls and encryption, making sure that data is protected as it flows through the internet and is then protected behind a firewall. All agencies and organizations are being challenged with pressure to “do more with less” and reduce their personnel levels. In addition, new regulations are requiring high levels of documentation and reporting. The solution to this dilemma is the 24×7 nature of continuous monitoring (CM) and diagnostics. Continuous monitoring enables information security professionals and others to see a continuous stream of near real-time snapshots of the state of risk to their security, data, network, end points, and even cloud devices and applications.

Benefits of Continuous Monitoring

  • CM gives you situational awareness through full-network visibility. Real-time monitoring of account activity, sensitive data movement, malware and threats are equally important components of the continuous monitoring process.
  • CM is a key means for mitigating risk by allowing you to assess the effectiveness of controls and detect associated risk issues.
  • CM allows you to capture potential non-compliance early within the network, because not all threats come from the outside. Credit card processing, medical billing and even “Easy Pass” Toll systems use CM to catch duplicate and/or erroneous transactions.

Challenges of Continuous Monitoring

  • Because not all parts of an organization will understand the benefits of the effort, you will probably need a high-level sponsor.

Like with all technology-related improvements, CM implementations require investment. Many organizations demand a quantified return on investment (ROI) before implementation of a new IT system. However, cybersecurity has become such a pervasive threat and a desire for constant innovation oftentimes overshadows that ROI question because it is just the right thing to do.

Do you have experience with continuous monitoring? Share it with us below or simply share your thoughts and concerns on the topic.

Utah Getting Act Together on Healthcare IT Security

Healthcare Medical RecordsHealthcare IT security has been a sensitive subject for the past 12 months in Utah’s healthcare community with two major healthcare security breaches, but it looks like they are beginning to get their act together. The state has taken action to beef up security practices in the state to prevent future security breaches. Governor Gary Herbert recently signed a bill that creates a security office within the Utah Department of Health. The bill provides funding to support a staff dedicated to security and privacy work. The new group will review and audit technology projects within the Utah Health Department, making sure healthcare security and privacy are made a high priority.

Key Healthcare IT Security Areas of Weakness

An internal audit conducted last year found the following key areas of weakness. These areas will be the top priority for the new security team.

  • Data risk assessment and classification
  • Vendor Management
  • Data security procedures and training
  • Systems development, life-cycle and change management
  • Contingency and disaster planning
  • Governance

As the banking system has tightened their security and privacy requirements over the last few years, cyber-criminals have turned their focus to the Health Care industry. Healthcare identity fraud has become their number one target. Three percent of health care costs in the U.S.—the equivalent of $78 billion—can be attributed to medical fraud.  Without a doubt, health care organizations across the country should be following Utah’s lead in establishing dedicated security offices, reviewing all IT projects that handle personal data and ensuring that HIPAA rules are followed in their entirety.

Here at Partnet, we work hard at keeping government eCommerce sites safe and secure. We commend the State of Utah for taking swift action to protect the citizens of Utah by putting the right security measures in place to prevent further healthcare security breaches.

4 eCommerce Content Do’s

Ecommerce SiteCommerce is simply buying and selling with an emphasis on doing so on a large-scale. eCommerce, then, is the conduct of this activity in an online or e-(electronic) environment. “Large-scale” is illustrated by behemoth eTailers like Amazon, Zappos, DOD EMALL, eBay and GSA Advantage. In the early days of eCommerce there was an “If you build it, they will come” mentality. This worked for a while, in part due to curiosity over new technology and often because there was something available that was truly interesting. I’m sure you’ve already noticed a real element of chicken-or-egg involved here. If you don’t have products of interest, customers will not come to your site, but if you don’t have customers, it’s hard to convince purveyors of products to take a business risk on you.

As it goes, those early days are over and all of the dust has pretty well settled. A survey of the top eCommerce platforms indicates that there are two main areas that you must get right to get to the top and stay there: performance—as discussed in my last blog post—and content. Today I’ll address content. As I mentioned in my previous blog, if you leave out half of the equation, you are essentially multiplying the half you do have by zero. More concisely put: leave out even one, and you’ve got nothing. Putting your time into improving performance for your customers is futile unless you’ve also considered content.

Four eCommerce Content Do’s

One important aspect of content that I’ll touch on first is richness. If people are unable to use their physical senses to understand a product, they’ll need another means of understanding just what that product is in order to know that they want it . Visual and textual information that aid the consumer in envisioning themselves holding or using what you are selling is vital. Including a product image is a given but please don’t stop there. Make sure you have details like dimensions, weight, materials and suggested uses—anything that will help to create a full, rich picture in your customer’s mind. Probably one of best providers of this is the opinions of others. Being able to read about the experience of others is the fastest way for your customers to see themselves in the same shoes and, ultimately, start the check-out process.

When it comes to content, please also address quantity. If you offer a product line, be sure to offer the full product line and associated products. It’s a competitive eWorld out there. When shipping costs are free or start to become lower when amortized across several items, customers are more likely to submit that shopping cart as an order. If they can’t find everything they are looking for, a one-stop shop so to speak, they are likely to go looking elsewhere to either minimize their shipping expense or simplify order tracking.

Now that you have lots of rich content, you also want to start thinking of all that rich content as an asset. It is extremely valuable. Others will want it. You need to develop strategies that either leverage or protect that data to your best advantage. There’s nothing wrong with sharing as long as you are getting equal value back from the arrangement.

The last content tip that I want to touch on is grooming your content for success by selecting and following a data standard. A data standard is going to help you organize your content in a meaningful way and point out gaps that should be filled. Once you have standardized your content using a vetted approach such as G1 or ECCMA, you have added two more items of value to your content: the ability to mine the data effectively with business analytics tools and portability of your content to wherever you want it to go.

Remember, it’s no longer the early days of eCommerce, so it is imperative that you hone your strategy when it comes to buying and selling. Keeping these four Do’s in mind as you build or improve your content will help you and your site thrive in this competitive eCommerce arena. So, what do you say; what are some of your eCommerce musts?

 


In case you missed it, be sure to read the first in my two-part eCommerce series: 3 eCommerce Mistakes You’re Making. Never miss a post again; subscribe to TurnLevel to receive blog posts right to your email inbox. It’s easy and it’s free.

B2B VS B2G: How eCommerce Can Save the Government Money

Uncle Sam MoneyBusiness to Business (B2B) markets have positively influenced the business community for a number of years now. Their impact on the economy is evident in several ways:

Transaction costs. Three cost areas are significantly reduced through the conduct of B2B eCommerce.

  • First is the reduction of search costs, as buyers need not go through multiple intermediaries to search for information about suppliers, products and prices as in a traditional supply chain. Internet is more efficient at gathering information, in terms of effort, time, and money spent. In B2B markets, buyers and sellers are gathered together into a single online trading community, reducing search costs even further.
  • Second is the reduction in the costs of processing transactions (e.g. invoices, purchase orders and payment schemes), as B2B allows for the automation of transaction processes and therefore, the quick implementation of the same compared to other channels (such as the telephone and fax).
  • Third, online processing improves inventory management and logistics.

Removing IntermediariesThrough B2B e-markets, suppliers are able to interact and transact directly with buyers, thereby eliminating intermediaries and distributors.

Transparency in pricing. – Among the more evident benefits of e-markets is the increase in price transparency.

  • The gathering of a large number of buyers and sellers in a single e-market reveals market price information and transaction processing to participants.
  • Increased price transparency has the effect of pulling down price differentials in the market.
  • Buyers are provided much more time to compare prices and make better buying decisions.
  • B2B e-markets also allow multiple buyers and sellers to participate in two-way or reverse auctions. In such environments, prices can be set through automatic matching of bids and offers.

Economies of scale and network effects. The rapid growth of B2B e-markets creates traditional supply-side, cost-based economies of scale. Furthermore, the bringing together of a significant number of buyers and sellers provides the demand-side economies of scale or network effects. Each additional incremental participant in the e-market creates value for all participants in the demand side. More participants form a critical mass, which is key in attracting more users to an e-market.

Business-to-government eCommerce, or B2G, is defined as commerce between companies and the public sector. The United States Government is the largest buyer in the world. The federal government spends over $300 billion dollars annually on various goods and services. The federal government is also under extreme pressure to save money wherever it can.

Although the federal government has taken advantage of some of the lessons learned by B2B markets, moving many of it processes and transactions to the Internet, it has not taken full advantage of web-based procurement or eMarketplaces. There are a few systems in place, GSA Advantage and DOD EMALL being the largest. But government e-procurement systems remain undeveloped and underutilized. Web-based purchasing policies increase the transparency of the procurement process and reduce the risk of irregularities. The federal government would be wise to use online marketplaces to take advantage of their enormous buying power and reduce prices across the board. The American taxpayer would be most appreciative.

What do you think? If you are an American taxpayer or involved in B2G, do you agree? Sound off in the comments section below.

This post was originally published in October 2011.

3 eCommerce Mistakes You’re Making

Frustrated ShopperEvery eCommerce site requires two essentials: content and customers. In this first post of my two-part eCommerce series, I will focus on the customer-half of the equation. Let’s face it: you can have all the content in the world but if nobody is buying, then half the equation is zero, and anything times zero equals—you guessed it—goose egg.

I have been involved in eCommerce since 1999, on the customer-side, shopping on various sites, and on the production-side, working as a Program Manager for the Department of Defense on DOD EMALL. I was the one who simultaneously marveled at how browsing virtual bookshelves made finding an interesting read a snap, and stayed awake at night wondering when I would be reporting rising sales figures by the day or week, instead of month.

The DOD EMALL started off with good content: 4 million DOD-stocked items (a mixture of commercial material and spare parts for vehicles, aircraft and ships) as well as several solid commercial catalogs from large companies like 3M. What the DOD EMALL didn’t have, however, was customers. The US Government is notoriously slow to adopt new technologies, procedures and techniques and in 1999 eCommerce was no exception. Unlike the closest thing to DOD EMALL at the time; Amazon.com; what DOD EMALL didn’t have was a sense of how to make a positive customer experience.

Here are three things I learned from those early days that can still be applied to any eCommerce entity today. Believe it or not, these same mistakes—after well over a decade—are still being made. In fact, an eCommerce experience that I had this past weekend inspired me to write this post. So, consider these three eCommerce-don’ts when you’re laying out plans to start an eCommerce website or to improve the eCommerce site that you have already.

  1. You ignore system performance. Spending time and money on fine tuning your website’s performance is time and money well spent. If you’re lucky enough to have that customer visit your website, don’t lose your chance with them. Consumers are loath to visit sites plagued by slow searches, a lengthy process to add items to their shopping cart, and spinning progress indicators during the final submission of orders that seem to have no intention of stopping. Even if the customer endures your site long enough to complete the transaction, they’re likely to associate the negative buying experience with your brand and they’re not likely to return.
  2. You allow combinations that don’t work. For instance, if a customer attempts to mix a payment form with a promotion code that you aren’t going to allow, tell them at the time they attempt to do it that they must choose another option and make it obvious what their choices are. Live validation with helpful on-screen feedback will educate the user about your processes and prevent them from getting frustrated.
  3. You show items as available that are not actually available. Move that information right up front to your catalog searching results. Let the customer decide if they are willing to wait for an item before they get all excited about it. Most eCommerce websites pass the shopper into an order processing module once a customer indicates they are ready to checkout. If your design won’t let you check on item availability until this step, then at least make it simple for the customer to return to the shopping area to find an alternative. But it’s far better for your customer if you give them the information up front.

So, are you guilty of any of these eCommerce-don’ts? The benefits of online shopping for the consumer are huge, but creating a positive experience for our shoppers just sweetens the deal. I’m happy to share a few of the pointers that I’ve learned along the way. Share the eCommerce-don’ts that you’ve learned from your own experience in the comments section below or join us in the DOD EMALL Discussion Group – Unofficial on LinkedIn to trade more ideas.

 


This is the first in my two-part eCommerce series. Be sure to check out the second installment Four eCommerce Content Do’s.

6 Things You Didn’t Know About DOD EMALL

DOD EMALL is the one-stop shopping, enterprise-wide eCommerce site for the Department of Defense. The eCommerce site supports over 30 Million SKUs and has 40,000 active users, but that’s just scratching the surface. While DOD EMALL can be used to purchase everything from office supplies to weapon system parts, there are a number of other useful features that you might not be aware of within DOD EMALL.eShopping Cart

  1. DOD EMALL supports contracts from all the military services, the Department of Homeland Security, Defense Commissary Agency (DECA), GSA and as well as the Defense Logistics Agency (DLA). Any Federal agency with an IDIQ or BPA contract can place it on DOD EMALL. At this time, there is no charge for this service. This is an excellent opportunity for smaller agencies to have their own eCommerce site without the investment.
  2. DOD EMALL makes it easy to support a large group of people with their acquisition needs. If your office has a single purchase cardholder and many personnel with purchasing needs but not purchasing power, DOD EMALL can help you support your staff. Agency personnel can register with DOD EMALL as a Shopper. Shoppers have the ability to complete all their shopping, but not the ability to purchase. Staff members without purchasing power can still build a virtual cart filled with the items that they want, but instead of completing the order, these Shoppers simply send their virtual cart to the office purchase cardholder. The purchase cardholder has the ability to merge multiple shopping carts together to consolidate buys while still retaining the individual details of the orders. This way, when the order comes in, they can easily sort out who ordered what. This is an incredibly convenient way to support an entire office.
  3. Naval Facilities Command installation managers can order facilities maintenance services like trash collection, lawn mowing and minor repairs using the DOD EMALL. This service has reduced average service times from two weeks to 3 days.
  4. Defense Logistics Agency customers can track the status of all their DLA orders using the DLA orders portion of DOD EMALL. What’s truly great about this feature is that all of the orders are there whether the item was ordered using DOD EMALL or not.
  5. The DOD EMALL is not just for military service personnel. State government can order using DOD EMALL under the 1122 program. This program allows state government to purchase items from the Department of Defense to support drug enforcement operations. At this time over 30 states are registered to purchase on DOD EMALL.
  6. Contractors who have a Contractor Logistics Support (CLS) or Performance Based Logistics (PBL) contract can ask their contracting officer if they can purchase items directly from the DLA using the DOD EMALL. Due to their tremendous buying power, DLA often has repair parts available at lower prices than the PBL/CLS contractor can find. This is true for both Government-furnished materials and Contractor-furnished materials. PBL/CLS contractors can be given the authority to use the DOD EMALL in support of their contracts.

So how’d you do? If you already knew all of these, you are a DOD EMALL Pro. If not, you might want to learn more about the DOD EMALL and how you can utilize its powerful features. Become a DOD EMALL Pro by subscribing to receive TurnLevel blog posts right to your email inbox, or join the conversation right now on the DOD EMALL Discussion Group – Unofficial on LinkedIn.

 

Government Contracting: Why Size Matters

Size Matters in Government ContractingGovernment Contracting Program/Project Management is where most of my 33+ years as an employee of the Department of Defense were spent. As a result, I’ve logged a lot of time working with contractor employees as well as Government employees. I have, on occasion, been the Contracting Officer’s Representative (COR), which put me into the position of having oversight responsibility for contractor performance and their employees. I’ve worked with some companies that performed well and some that failed completely. I’ve worked with companies that became true partners and some companies that made appearances only when required. I’ve worked with companies that identified risks early on and some that hid the bad news until a crisis was unavoidable. I’ve seen varying degrees of quality in deliverables and all sorts of hits and misses on due dates. The only constant I’ve found in government contracting is humanity, and I’ve come to the conclusion that the variable is corporate culture.

In the 1980s, small businesses were not the buyer’s favorite choice in government contracting. When a contract specialist got an 8(a) project, they had metaphorically drawn the short straw. What a contract specialist truly wanted—the true gem of gems—was a procurement with two competitive large businesses. Yes, that was the one! Small businesses gradually became okay for cafeteria contracts and janitorial services, but with the Government’s 1990s shift to contractor support versus employee labor dollars, combined with aggressive small business goals, uncharted territory in government contracting had to be explored.

Amazingly—a term I don’t use lightly—for once the regulators got it right. All those new rules, new designations and impossible goals from the 1990s and beyond have contributed to the emergence of small businesses in every category of government contracting. I can attest that many businesses are knock-your-socks-off good! For the last 15 years of my Federal service I was perpetually a COR on at least one contract dealing with everything from software development, training and education, administrative support services, system operations, and documentation, to audits and events management. For the last five years of that portion of my career, my credo was, “Show me the small businesses!” And that credo served me well.

It’s true that large businesses have deep pockets and can afford to march in place when the government fumbles funding. The common perception is that they can attract talent by offering benefits and the likelihood of long-term employment in government contracting where small businesses cannot. However, unless your project is a mainstay of their annual statement, you can also expect to beg for attention when something isn’t going right. I have found that small businesses treat every project, no matter the size, as an important project. Small businesses are not bound by corporate policies that can hinder larger, more bureaucratic organizations. Small businesses are also more open to custom fitting their services to their customer’s needs. In fact, I know of many small businesses that are well into the second decade of providing services to the Government on complex, long-term projects.

When it comes to doing business, I encourage you to think about small businesses when you’re looking for support on big projects. Do you agree? I’d love to read your thoughts in the comments section below.