Datix and XSOL Partnership Creates Enterprise-Process Improvement

November 7th, 2011 by Bryan Sapot

Datix has recently started using new software called XSOL, as part of the Epicor 9 package. XSOL is Business Process Mapping (BPM) software that creates visual representations of business processes for the purposes of analysis and improvement.

Datix uses a signature technique called Enterprise-Process Improvement, which examines the various interlinked levels of a company and how they all work together to process and transmit information and to complete tasks. Our team works together to formulate a plan for how the company can make better use of its software system. Engaging staff this way invariably leads to the identification of things that need fixing – duplicated effort, delays, and conflicts – as well as suggestions for improvement. This technique helps a company make better use of its software system.

XSOL is designed to make the task of business process mapping simpler by creating visual representations that can be manipulated and analyzed. Using features in the program, Datix feeds in information about every tier of a company to create a visual map within Enterprise-Process Improvement. XSOL allows the user to digitally add notes and draw in the relationships between different business processes to show in detail how our proposed changes will improve the functionality of the company’s software. That way, the business owner can get an overall look at how the business will run differently after Datix’s software augmentation. Datix then helps the business implement the changes and provides ongoing support while the transition is completed.

About XSOL

XSOL is an abbreviation for the term “Exception Solutions”. This reflects the principle that if a company’s business and its objectives are well defined and its staff fully aware of how it operates, then exceptions become apparent and can be built into the process or eliminated.  XSOL helps business owners to better understand their own companies. Not only does XSOL make it easy to create an operational visual model of how a company works from the bottom up, but it allows a business owner to extend the functionality of their ERP system by automating business processes and quickly implementing improvements.

About Datix

Datix, a St. Louis-based ERP software services company, has been in business for 14 years. We employ a team of software specialists who can translate a business owner’s goals into reality using customized software solutions. We have worked in several different industries, serving companies in North and South America. Unlike other software companies, we provide truly customized solutions for our clients. Sometimes that means augmenting existing software for increased functionality, and sometimes we implement entirely new systems. We consult directly with business owners to make recommendations not only on software packages, but on how to streamline business processes to ensure smooth operations, decrease costs, and maximize profits.

Button to Print Pick Ticket from Order Entry – Epicor 9

October 24th, 2011 by Bryan Sapot

I like posting answers to common questions I see on forums. A lot of users want to be able to print reports directly from the entry screes like Order Entry. Below is some sample code on how to print the sales order pick ticket. This will submit the print request and open the report in preview mode.

Here are the steps:

  1.  Add a button to the summary tab. I’m assuming you know how to place a button on the screen and create a button click event. You can look at the article on Automatic Pack Slitp Number Generation.
  2.  Add the following assembiles to your customization:
    • Epicor.Mfg.Core.BLConnectionPool
    • Epicor.Mfg.Rpt.ISOPickListReport
    • Epicor.Mfg.Rpt.SOPickListReport
  3. Add the following code to the button click event:
private static void btnPickList_Click(object sender, System.EventArgs args)
{
 Epicor.Mfg.Core.Session epiSession = default(Epicor.Mfg.Core.Session);
 epiSession = (Epicor.Mfg.Core.Session)SalesOrderForm.Session;
 Epicor.Mfg.Rpt.SOPickListReport rptSOPickList = new Epicor.Mfg.Rpt.SOPickListReport(epiSession.ConnectionPool);
 Epicor.Mfg.Rpt.SOPickListReportDataSet rptDSSOPickList = rptSOPickList.GetNewParameters();
 
 EpiDataView edvOrderHed = (EpiDataView)oTrans.EpiDataViews["OrderHed"];
 
 DateTime dtShipBy = default(DateTime);
 
 dtShipBy = Convert.ToDateTime(edvOrderHed.dataView[edvOrderHed.Row]["RequestDate"]);
 
 // You may need a wider date range to include releases out side the ship date on order header
 if (DateTime.Compare(DateTime.Today, dtShipBy) > 0) {
  rptDSSOPickList.Tables["SOPickListReportParam"].Rows[0]["FromDate"] = dtShipBy.AddDays(-1);
 } else {
  rptDSSOPickList.Tables["SOPickListReportParam"].Rows[0]["ToDate"] = dtShipBy.AddDays(1);
 }
 
 rptDSSOPickList.Tables["SOPickListReportParam"].Rows[0]["OrderList"] = edvOrderHed.dataView[edvOrderHed.Row]["OrderNum"];
 rptDSSOPickList.Tables["SOPickListReportParam"].Rows[0]["AutoAction"] = "Preview";
 //Set this to your task agent id.
 rptDSSOPickList.Tables["SOPickListReportParam"].Rows[0]["AgentID"] = "TaskAgnt";
 
 //The report style you want to print.
 rptDSSOPickList.Tables["SOPickListReportParam"].Rows[0]["ReportStyleNum"] = 1002;
 rptDSSOPickList.Tables["SOPickListReportParam"].Rows[0]["WorkstationID"] = Environment.MachineName + " 1";
 rptDSSOPickList.Tables["SOPickListReportParam"].Rows[0]["DateFormat"] = "mm/dd/yyyy";
 rptDSSOPickList.Tables["SOPickListReportParam"].Rows[0]["NumericFormat"] = ",.";
 
 // TaskAgnt is the ID of your task agent.
 rptSOPickList.SubmitToAgent(rptDSSOPickList, "TaskAgnt", 0, 0, "Epicor.Mfg.UIRpt.SOPickListReport");
 
 MessageBox.Show("Pick List Print Job Submitted.");
}

Epicor ERP is the Best Kept Secret in Global ERP

October 20th, 2011 by Bryan Sapot

You don’t hear much about Epicor in comparison to the “big name” players of the ERP software market. But as an Epicor Partner, we’re not complaining. We know Epicor is the best kept secret in global ERP and know those who use it realize it to be true. Don’t just take our word for it; check out the functionality possible with Epicor ERP for yourself:

Single Point of Data: Internal operations need to be integrated in order to achieve global visibility.

And Epicor ERP is a comprehensive solution that helps make that visibility possible. Epicor ERP can do it all, including accounting, order processing, manufacturing, human resources and data from other functions as well as including advanced financial management reporting and analysis. With real-time and accurate information at your fingertips, you can make better business decisions that help the success of your company. Instead of gathering information from a number of different systems and then never really knowing if the data is accurate, pull from one ERP solution that encompasses all parts of your business.

Adaptable Business Architecture: Epicor ERP scales to your business needs to support long-term growth. There are multiple deployment options that help ensure you stay within your means when making an ERP software purchase, such as hosting, online functionality, and on-premises implementations. Whatever works for you, Epicor can make it happen. In addition to the beginning stages of deployment, Epicor ERP can grow with you on a global scale. Some ERP systems limit your potential, but Epicor ERP adapts the way you need it to. Epicor also provides solutions in over 30 languages so you’re not hindered in where you can do business.

Beyond offering a product designed for global business, Epicor has a global infrastructure that incorporates support centers located in every major operating region—the Americas, EMEA (Europe, Middle East and Africa), and Asia Pacific. Through these regional centers, Epicor provides support in more than 20 languages. For more information on Epicor ERP, please contact us at Datix.

Restore Progress AppServer Configuration

October 5th, 2011 by Bryan Sapot

I recently had a strange issue. We had a server file system filled up because of a runaway log file. The log files were removed to free up some disk space but during this process the Progress Admin Server lost its configuration information.

I did a lot of digging and found the configuration file in c:\oe102a\properties\ubroker.properties where c:\oe102a\ is the install directory of Open Edge. There is also a backup file in c:\oe102a\properties\ubroker.properties.old. I was able to copy the contents of this file into ubroker.properties restart the Admin Server and everything came up.

New Feature – Epicor Zone BAQ Examples

April 18th, 2011 by Bryan Sapot

Epicor recently released and update to Epicor 905 that included some very cool new features. One called Zone BAQs I just started playing with and thought it was worth blogging about. A Business Activity Query or BAQ is a user definable query of data in Epicor somewhat like SQL.

Basically a Zone BAQ displays data in a tool tip. This data can be anything from an image, website , a single record or a grid of data. Below is an example of displaying on hand inventory for a part and displaying a customer website in a tool tip. The tool tip can be displayed in a context menu or as an indicator next to the field. In another post I will show you how to create a Zone BAQ and add it to a context menu.

Customer Web Site

In the example below I created a BAQ with customer ID and the customer URL. I then tied this BAQ to the customer ID context menu.
Zone BAQ Customer Context Menu

Zone BAQ Customer Context Menu

Zone BAQ Web Site Display

Zone BAQ Web Site Display

On Hand Parts Display

In this example I created a BAQ that pulls all locations and on hand amounts for a given part. As in the example above I added this to the PartNum context menu.
Zone BAQ Part Context Menu

Zone BAQ Part Context Menu

Zone BAQ Part On Hand Display

Zone BAQ Part On Hand Display

This feature could be used in many different scenarios. You could quickly look  up order history, on hand inventory, display part images and many others.

Automatic Pack Slip Number Generation

March 1st, 2011 by Bryan Sapot

Many of our clients have asked why doesn’t Epicor generate the packing automatically on Receipt Entry. The short answer is that  most companies enter the packing slip number from the vendor, but in some cases there is no packing slip number. To handle this we developed a simple customization to auto generate the pack slip number.

Here are the steps:

  1. Add a button to your Receipt Entry Screen

    Epicor Receipt Entry with Auto Pack Slip

    Receipt Entry with Next Pack Button

  2. Go to the event wizard tab and create a button click event and add a call to GetNextPackSlip() from the button click event.
  3. Epicor Create Event Wizard

    Epicor Create Event Wizard

  4. Open the script Editor and add the code below.
    private static void GetNextPackSlip()
    {
    	Epicor.Mfg.Core.Session session = (Epicor.Mfg.Core.Session)ReceiptEntryForm.Session;
    	Epicor.Mfg.BO.Company company = new Epicor.Mfg.BO.Company(session.ConnectionPool);
    	Epicor.Mfg.BO.CompanyDataSet dsCompany = new Epicor.Mfg.BO.CompanyDataSet();
     
    	//Change EPIC03 to your company ID. You can also ge the current company from the session object.
    	dsCompany = company.GetByID("EPIC03");
     
    	//We are storying the current pack slip number in Number01 field in the company table
    	decimal number = dsCompany.Company[0].Number01;
     
    	//Make sure we have data loaded into the Receive Header data view.
    	if(edvRcvHead.dataView.Count > 0) {
    		edvRcvHead.dataView[0]["PackSlip"] = "PACK" + number;
    		MultiKeySearch_Row.dataView[0]["PackSlip"] = "PACK" + number;
     
    		//Increment the stored number
    		dsCompany.Company[0].Number01 = number + 1;
     
    		//Update the company table.
    		company.Update(dsCompany);
    	} else {
    		MessageBox.Show("Please create a new receipt first.");
    	}
    }

One thing to note about this customization, the pack slip number is incremented everytime a user pushes the Next Pack button so you may have gaps in the number sequence.

Datix Implements CRM Mobile Dashboard

February 22nd, 2011 by Bryan Sapot

In a prior post I wrote about how our sales team uses Epicor CRM for their sales and marketing activities and how they use dashboard we developed to allow for easy updating and adding of information. We have added quite a few features to the CRM dashboard over the last few months, but I am most excited about the mobile dashboard.

I find myself going to visit clients or prospects in industrial areas and wondering if these companies are on our marketing list or if we have contacted them.  In the past I would call our sales department and ask, but what I really needed was mobile access to our customer data. Last year with the release of Epicor 905 a new module called Epicor Mobile access was added to the product. Epicor Mobile Access enables you to create dashboards targeted to mobile devices, so I took our CRM dashboard and turned it mobile. Below are some screen shots of the results.

This dashboard is almost an exact copy of the CRM dashboard with some small modifications. On our CRM dashboard we have tabs for Customers, Prospects, Follow Ups and Un Called suspects, these were removed because we are only going to search for specific companies from the mobile dashboard. We used updatable BAQs so I can add new customers and notes through the dashboard. I’m going to cover updatable BAQs and their impact on our CRM system  in a post next week.

The steps to create a mobile dashboard:

  1. Open your desktop dashboard in Dashboard Developer
  2. Click on Actions -> Generate Mobile Dashboard
  3. Choose a name for the dashboard
  4. Open the mobile dashboard in Dashboard Developer and edit it as normal.

A couple of things to keep in mind when developing Epicor Mobile Dashboards:

  1. Graphs and charts are not supported
  2. Remove extra fields you don’t need
  3. Epicor Mobile is browser based, you don’t install anything on the phone
  4. IPhone, Android, Blackberry and most other mobile devices are supported.
  5. After you a done using the dashboard you must logout or it continues to use a mobile license.
Epicor Mobile CRM Main Menu

Epicor Mobile CRM Main Menu

Epicor Mobile CRM Menu

Epicor Mobile CRM Menu

You can deploy as many dashboards using Epicor Mobile Access as you like. Currently we only have only have one

Epicor Mobile CRM Customer/Prospect Search

Epicor Mobile CRM Customer/Prospect Search

Above is a quick search I entered Epicor and clicked search to get the results below.

Epicor Mobile CRM Search Results

Epicor Mobile CRM Search Results

You can see in this screen shot the Edit button, clicking this allows you to change the customer data through the mobile dashboard. You click or tab on a record to selected it and then you can choose for the different dashboard “tabs” in the drop down box, below I chose CRM calls.

Epicor Mobile CRM Call List

Epicor Mobile CRM Call List

From this screen you have the ability to update the call directly from the phone.

Epicor Mobile CRM Update Call

Epicor Mobile CRM Update Call

I would be interested to hear other ideas on what people would use on a mobile dashboard and specifically CRM.

Set Default Value in Epicor

February 5th, 2011 by Bryan Sapot

One of the most common requests we get from customers is how to set a default value on a field in Epicor. Below is a simple example of how to set the default value on a customer field called Source. This process is fairly simple and works for almost any field.

In my example the source field is a user defined field in the customer table called Character10. Prior to this example I setup user codes and tied the user codes to this field.

To set a default value you use a BPM. Open Epicor and navigate to System Management -> Business Process Management -> Setup -> Method Directives

1. Choose Customer from the business object drop down and type GetNew in the method name box. Choose GetNewCustomer from the search results

BPM Search

BPM Search

2. After selecting that method your screen should look like this:

Customer BPM View

Customer BPM View

3. Next enter Default Source  in the directive name box, and Customer in the group box. The group allows you to easily find and group together BPMs.

Setup Step 3

4. Next click on Actions, then click the new icon. Next choose “set the specified field of the changed row to the specified expression” from the User Text drop down list.

Step 4

5. Click on “specified” to choose the field you want to change. Choose ttCustomer from the table list then click the check box next to Character10 and click OK.

Setup Step 5

6. Next click specific and enter the default value.

Step 6

7. Now your actions screen should look like the following. Click Ok.

Step 7

8. The BPM screen should look like the following. Check the enabled box and click save. Next time you create a new customer record you will see the default value in the Character10 field.

Step 8

One Click Shipment in Epicor 9.05

January 30th, 2011 by Bryan Sapot

We have a customer that wanted to ship items directly from the sales order without having to go through the shipment entry screen. The orders never change and the items are non-stock so they don’t need the functionality provided by that screen.

To streamline this process we created a button on the sales order entry screen that will automatically ship the order, it mimics the mass shipment functionality from the Shipment Entry screen. Below is the source code you can call from a button click event.

Ship Order

Ship Order Sample

Here is the source.

        private static void ShipSalesOrderMethod()
        {
 
            // Declare and Initialize EpiDataView Variables
            EpiDataView edvOrderHed = ((EpiDataView)(oTrans.EpiDataViews["OrderHed"]));
            Epicor.Mfg.Core.Session session = (Epicor.Mfg.Core.Session)SalesOrderForm.Session;
 
            Epicor.Mfg.BO.CustShipDataSet dsCustShip = new Epicor.Mfg.BO.CustShipDataSet();
            Epicor.Mfg.BO.PackOutDataSet dsPackOut = new Epicor.Mfg.BO.PackOutDataSet();
            System.String warnMsg = "";
            System.String creditMsg = "";
 
            // Check if valid EpiDataView Row(s) are selected
            if ((edvOrderHed.Row < 0))
            {
                MessageBox.Show("No Order Selected");
                return;
            }
 
            int salesOrder = ((int)(edvOrderHed.dataView[edvOrderHed.Row]["OrderNum"]));
 
            Epicor.Mfg.BO.CustShip custShip = new Epicor.Mfg.BO.CustShip(session.ConnectionPool);
            custShip.GetNewShipHead(dsCustShip);
            try
            {
                custShip.GetHeadOrderInfo(salesOrder, out creditMsg, dsCustShip);
                if (!"".Equals(creditMsg))
                {
                    MessageBox.Show(creditMsg);
                }
                System.String shipToCustomerList = "";
                custShip.BuildShipToCustomerList(salesOrder, out shipToCustomerList);
 
                custShip.BuildShipToList(salesOrder, 9, out shipToCustomerList);
 
                custShip.Update(dsCustShip);
 
                dsPackOut = custShip.POGetNew(salesOrder, dsCustShip.ShipHead[0].PackNum, out warnMsg);
                dsPackOut = custShip.POGetDtlList(dsCustShip.ShipHead[0].PackNum, salesOrder, "PACK", out warnMsg);
 
                custShip.PreCreateMassShipDtl(dsCustShip.ShipHead[0].PackNum, salesOrder, out warnMsg, dsCustShip);
                custShip.CreateMassShipDtl(dsCustShip.ShipHead[0].PackNum, salesOrder, dsCustShip);
 
                MessageBox.Show("" + dsCustShip.ShipHead[0].PackNum);
                custShip.MarkShipmentLines(dsCustShip);
                custShip.Update(dsCustShip);
 
                System.Boolean compliant;
 
                dsCustShip.ShipHead[0].ReadyToInvoice = true;
 
                if (!"".Equals(creditMsg))
                {
                    MessageBox.Show(warnMsg);
                }
 
                custShip.Update(dsCustShip);
                custShip.PostUpdate(dsCustShip.ShipHead[0].PackNum, out warnMsg);
                if (!"".Equals(creditMsg))
                {
                    MessageBox.Show(warnMsg);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
 
            MessageBox.Show("Done");
 
        }

Datix & Epicor Road Show November 18th

October 15th, 2010 by Bryan Sapot


November 18th, 2010
8:45 am to 11:30 am
Hilton St. Louis at the Ballpark
1 South Broadway
St. Louis, MO
314-421-1776
Free Valet Parking
Event Contact:
Chris Joliet
Datix Inc
Business Development
(314) 479-4032
chris@datixinc.com
Agenda
8:30 am Arrival, Introductions, Coffee and Donuts
9:00 am Who is Datix?
9:15 am Modeling Your Business Processes with XSOL
9:30 am Successful Software Evaluation
10:15 am Cost Justification, ROI and Datix’s ROI Program
10:45 am Overview demonstration of Epicor 9.05
11:10 am Customer Testimonial
11:15 am Drawing for Rams Tickets
11:30 am Conclusion

Key Takeaways:

  • How Modeling your processes will reduce the cost, time and risk of the software selection, implementation and upgrading.
  • How to take Industry Best Practices as a basis for your Best Practices
  • When is a good time to implement
  • What is a compelling event and why is it important
  • Out of the box functionality
  • What is new with Epicor 9.05
  • Implementation and Support Approach
  • Extraction of data
  • Embedded vs. Integrated
  • Ease of use, Ease of Use, Ease of Use
  • Key Performance Indicators / analytics / Dashboards
  • .Net SOA Technology lending to ease of use and flexible workflows

To register, please email sales@datixinc.com with:
• Name, Title, Company, Number of Attendees