Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Perl module for working with Epicor Software's E4SE application.
branch: master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.

WebService::E4SE Build Status

Epicor E4SE software uses a clunky, IE-only interface (just try to fill in your timesheet with a non-windows machine! I dare ya!).

Each action on the software calls a SOAP-based web service API method. However, the APIs are not neatly packaged in one place (a la Salesforce, etc.). Also, there are no sessions. So, each call to the API must send username and password credentials all over again (using NTLM).

There are more than 100 web service files you could work with (.asmx extensions) each having their own set of methods. Some of these are grouped somewhat logically, some are not. On your installation of E4SE, you can get a listing of method calls available by visiting one of those files directly Resource.asmx for example).

The purpose of this module is to somewhat abstract out the tedium of dealing with all of this stuff.


  • An easy to use API documented here.


Installation is simple via the CPAN.

$ cpan install WebService::E4SE

Perlbrew environments are recommended.

Getting Started

This short snippet should get you going.

#!/usr/bin/env perl

#some boiler-plate stuff that I always do:
use strict;
use warnings;
use utf8;
use IO::Handle();
use feature ':5.10';

#necessary bits
use WebService::E4SE;

# create a new object
my $ws = WebService::E4SE->new(
  username => 'AD\username',                  # NTLM authentication
  password => 'A password',                   # NTLM authentication
  realm => '',                                # LWP::UserAgent and Authen::NTLM
  site => 'epicor:80',                        # LWP::UserAgent and Authen::NTLM
  base_url => URL->new('http://epicor/e4se'), # LWP::UserAgent and Authen::NTLM
  timeout => 30,                              # LWP::UserAgent

# get an array ref of web service APIs to communicate with
my $res = $ws->files();
say Dumper $res;

# returns a list of method names for the file you wanted to know about.
my @operations = $ws->operations('Resource.asmx');
say Dumper @operations;

# call a method and pass some named parameters to it
my ($res,$trace) = $ws->call('Resource.asmx','GetResourceForUserID', userID=>'someuser');

# give me the XML::Compile::WSDL11 object
my $wsdl = $ws->get_object('Resource.asmx'); #returns the usable XML::Compile::WSDL11 object

Want to know more?

Take a look at our documentation!

Something went wrong with that request. Please try again.