Visitors

| No Comments | No TrackBacks
Hello to anyone visiting,

I was looking through some logs and noticed a few request for articles, tutorials and files that I had on the site previously. I removed these and decided to use a packaged CMS system instead of my custom built one. I apologize for this, I did some searching and found links and articles referring to my site, I have to admit it made me smile. I will be republishing the pages and files under a new category and placing redirects on the previous pages. Thank you for visiting and feel free to contact me if there is anything you need but don't find.

Thanks,
-Asa

Webservice Return Msg

In the CustomerService webservice class CustCustomerService the update service doesn't return a value. This means any programming consuming this service can not wait for a return to verify the call was successful. The create service does return a value, so you can piggy back off this same methodology. It is possible this is corrected in more recent roll ups, as I believe my system is still on RU1.

Original Code - As you see there is no return value, thus no way to make your service monitor for success.
public void update(AifEntityKeyList _entityKeyList, CustCustomer _custCustomer)
{
this.updateList(_entityKeyList, _custCustomer);
}

Modified Code - Below I have changed the structure slightly to follow the create structure. I added a local copy of the method UpdateList from class AifDocumentService to the CustCustomerService class and change it slightly to return the aifEntityKeyList.
public AifEntityKeyList update(AifEntityKeyList _entityKeyList, CustCustomer _custCustomer)
{
return this.updateListReturn(_entityKeyList, _custCustomer);
}
Local modified AifDocumentService UpdateList method
protected AifEntityKeyList updateListReturn(AifEntityKeyList entityKeyList, AifDocument document)
{
    AifResult aifResult;
    AxdBase axdBase;
    AifEndpointActionPolicyInfo endpointActionPolicyInfo;
    ;

    if (entityKeyList == null)
    {
        throw error(strfmt("@SYS91439", 'entityKeyList'));
    }

    if (document == null)
    {
        throw error(strfmt("@SYS91439", 'document'));
    }

    axdBase = document.getAxdInstance();
    endpointActionPolicyInfo = this.getEndpointActionPolicy(document);

    this.setAifFaultContext(#UpdateServiceOperationMethodName);

    constraintListCollection = new AifConstraintListCollection();

    aifResult = axdBase.updateList(entityKeyList, document.serialize(), endpointActionPolicyInfo, constraintListCollection);
    correlationEntityKeys = aifResult.parmEntityKeyList();

    return correlationEntityKeys;
}


Implementation - Complete

| No Comments | No TrackBacks
The title may be somewhat of a lie, but it's a hell of an accomplishment to have synced that many accounts in a weekend. In total I have 107,000 accounts now synced and syncing future updates live.

I consider this a pretty big milestone, this is a system I have been working on for a very long time. Many 130+ hr/weeks and I had some home issues during the process, but here I am looking at the end of phase one.

DynamicsAXLogo.jpg
MS Dynamics AX: Amazing internal ERP system, I've been programming this application for 5 years and love every minute of it.


castiron.jpg
Cast Iron Systems: Excellent mechanism for connecting disparent systems and just making complex stuff easy in general.


salesforce-logo.jpg
Salesforce.com: While I personally would have built our system using enterprise portal to expose MS Dynamics, Salesforce is a very nice CRM system. Its' API is easy to work with and as the market leader in cloud CRM it is very well documented and robustly integrated.


-Asa




Implementation - Final Day

| No TrackBacks
It's going much better today.

2:1 API calls to records, this is much better and should allow me to stay within safe api call range.

I actually have very little left to do.

1. Finish syncing about 40k records which should take 100k api calls. I currently have about 150k free.

2. Download local db copy and update dynamics ax with the salesforce account id's.

3. Start all orchestrations in castiron to LIVE sync.

4. Start all batches and batch jobs back up

5. Start other AOS'

6. Test

7. Sleep lol

Hopefully the next entry says complete

Implementation - Frustration

| No TrackBacks
Wouldn't it be great if things went according to plan. All was running fantastic, better than could be expected or at least it seemed. Then I wake up from a power nap to find 9000 emails confirming what I expected to happen from the beginning, I had used more than the Salesforce api call limit, which they raised to 300k per 24 hours, but was still a fraction of what I needed. So I am dead in the water for 24 hours and will not be able to finish the contact sync. I am going to rescue the account sync by syncing only the remaining delta accounts, around 50k. I made some modifications to cut the api call usage further and now some fun scripting and I know which accounts are the deltas. I will have Dynamics AX dump out the xml files for these accounts shortly and then be ready to sync them as the api calls free up. I will batch them to complete the rest and will still end this process strong.

Assuming I can rescue accounts, I will handle contacts live but syncing batches each day. This will fix all the SFDC contacts, but the ax contacts will need to be synced up and that will be a little more complicated. Both will handle correctly if they are manually edited or used, but I will script the sync of the deltas over a few days.