Tuesday, October 21, 2014

GPUG Summit 2014 St. Louis - Day 2


Thursday, October 16, 2014

With Day 1 behind us, Day 2 brought a lot of expectations as it was officially a full day of sessions. Yes, that meant a lot more sessions than even the day before. My day started out with Mariano's Toolbox Series: The Support Debugging Tool at 9:45 AM. I have to say that I was pleasantly surprised to have over 60 people in this session, given the night before was Rock-n-Rave. The cool thing is, I just had two or 3 people who had been to the party.

After my session, I met up with a few folks over at the Mekorma Hub to discuss how their sessions were progressing. Then, we head down to the Meal Hall for lunch and to participate in the networking huddles.

Networking Huddles
My afternoon session, Mariano's Toolbox Series: Upgrading to Microsoft Dynamics GP 2013 at 2:00 PM was also received well with over 40 people in attendance. However, these Summit events are all about the spirit of the community. My good friend Kitty Geiger (myappsanywhere.com) was in a pinch to get one of her Modifier with VBA examples for her session working, so we sat down at the Mekorma Hub to take a look at it. Given the complexity of what she was trying to achieve and the little time we had, we decided to download and use the sample VBA customization found on my Modifier with VBA Workshop series.

In the end, Kitty and I ended up both delivering her session, TechExpert: Leverage the Advantage of Modifier with VBA. This completed a day of 3 full sessions, so it was time to get some drinks and enjoy the rest of the evening.

I went to my hotel to drop off my stuff and met up with friends over at Copia Restaurant & Wine Garden for a wine tasting event hosted by Scribe Software. After wrapping up, we went over to PBR Cowboy Bar to tap off the evening with the FastPath team who was hosting a party to celebrate Andy Snook's birthday and in addition to simply, well, drink!

PBR St. Louis


Andy Snook at the Bass

I must say, I was quite surprised to learn that Andy Snook not only talks security, but also rocks the bass. The night went on and the drinks kept coming. However, I had a chance to catch up with a whole bunch of folks that you keep seeing at the same parties.

From left to right:
 Denis Day (DLD Business Solutions), Helen Samworth(m-hance USA), Chris Dew (eOne Business Solutions), Tanya Henderson (S2 Technology), Mark Polino (Integrated Business Group)

In this picture, the orange glasses came courtesy of Darcy Boerio, Channel Development Manager at Avalara.

MVPs Mariano Gomez and Mark Polino

Then there was the unspeakable. So it's best I leave it at that. It was past 2:30 AM when I left so I can only assume things continued throughout the morning for a few souls.

Until next post!

MG.-
Mariano Gomez, MVP
Intelligent Partnerships, LLC
http://www.intelligentpartnerships.com/

GPUG Summit 2014 St. Louis - Day 1


Wednesday, October 15, 2014

After a jammed pack Academy Training day on the previous day, Summit Day 1 begins with a little stroll from my hotel down to the America's Center Convention Complex. On the way there, I cannot help but to snap a picture of the now very famous Runner Fountain at Kiener Plaza, which happened to be running a pink to red tone in support of the Cardinals.

The Runner Fountain at Kiener Plaza (in front of Jefferson National Expansion Memorial)
This is probably one of the most sought after shots for any photographer (which I'm not!), so why not.

The Runner Fountain in front of historic Old Court House and Gateway Arch
At the Convention Complex, the day opened with the keynote session where Andy Hafer and Hal Howard provided some great input into the growth of the Summit event over the years. Andy also welcomed the more than 47% of first time attendees to Summit and jumped into some of the key stats that made this the largest summit in the 10 years running.

Keynote Speech with Andy Hafer

Keynote with Andy Hafer and Hal Howard (Summit by the numbers)

It was time to turn the tides and on came funny man, motivational speaker, and self-proclaimed "attitude adjuster"Steve Rizzo, who started the day with a very cool outlook into his early childhood and key learnings from his career as a comedian. The highlight: "Feeling good is the fuel that drives motivation." Steve proposed achieving this by simply changing our early morning attitude. Focusing on the good things in life - as opposed to the non-essential and non-consequential - by getting "your shift together" makes all the difference.

Steve Rizzo
After the keynote, it was time for my first session of the Summit: Mariano's Toolbox Series: Integration Manager. This year, Kim thought it would be great to have a branded list of sessions that allowed me to showcase a few of my tips, tricks, and best practices around Microsoft Dynamics GP so, I went along!

Attendees to Mariano's Toolbox Series: Integration Manager session

My session had well over 50 attendees and showcased some of the key aspects of working with Integration Manager and how scripting can expand the out of the box capabilities - well, I believe I lost a few people here, but I think the audience was satisfied with the overall presentation.

Once my session concluded, I went over to the Ferrara Auditorium to attend the GPUG Summit General Session, MCed by Kim Peterson,

GPUG General Session
Kim welcomed premier sponsors Fastpath, Metaviewer, and Rockton Software on stage to ask them about their products and the value to the community. As is customary, Mark Rockwell certainly brought down the house with one of his now very popular product jingles.

Premier Sponsors: Fastpath, Metaviwer, and Rockton Software on stage
Then it was Microsoft's turn to showcase some of the upcoming features, roadmap, and vision surrounding the upcoming releases of Dynamics GP. Errol Schoenfish, Director of Product Management and Jeff Trossen, VP of Product Development presented some of the great features that will be released in the upcoming Microsoft Dynamics GP 2015, including but not limited to, extended workflow capabilities, the new service based architecture components, Business Analyzer for Android and iOS, and some of the employee self-serve capabilities. For more information on the upcoming GP 2015 features, take a look at the Inside Microsoft Dynamics GP blog.

Microsoft Dynamics GP Vision

After the General Session, it was time for my second session of the day: Mariano's Toolbox Series: Web Client Deployment. Again, this session was a real treat to those in attendance as only a couple of hands went up when asked if they had seen or work with the Dynamics GP web client. We got a chance to look at all the components, some technical implementation aspects, and definitely all related to infrastructure on premise and in the cloud.

Following my session, it was time to head back to the Expo and comingle with the ISV community.

2nd Day of Expo

By now, you are familiar with Rock-n-Rave at Summits and Convergence and this time it was no different. The venue: the Lucky's Dueling Piano Bar. However, still too much for me to go through so off I went to my hotel for a quiet night.

Until next post!

MG.-
Mariano Gomez, MVP
Intelligent Partnerships, LLC
http://www.intelligentpartnerships.com/

Monday, October 20, 2014

GPUG Summit 2014 St. Louis - Academy Training


Tuesday, October 14, 2014

After a successful Partner Connections event, Tuesday brought and "All you can digest" Academy Training day, with 100s of sessions across all products. Unlike at the Tampa Summit, this year I did not participate as a trainer and rather decided to spend most of the morning catching up on work and prepping for my first session on Wednesday.

In the afternoon, I attended a presenters prep round up meeting at 4:00 PM local time, carried out at the Mekorma Hub. GPUG Director, Kim Peterson welcomed all new presenters and provided last minute instructions to the group.

Presenters Prep Round Up meeting with Kim Peterson

After the meeting, it was time to visit the Expo which would be opening its doors for the first time. I have to say, I was pretty impressed by the final product, since just a day before, the place was still being, literally, put together. It's amazing that 100s of ISVs and sponsors were present, displaying their products and welcoming all attendees.

Dynamic Communities team welcoming everyone at the Expo

The food was great and nothing better than free booze to go along. After navigating the isles and saying hi to a number of ISVs, it was time for me to head back to my hotel. After all, I had a couple of support tickets to take care of and needed to fine tune my presentations for the days to come.

Jefferson National Expansion Memorial

On the way back to the Hilton at The Ballpark, I managed to snap this cool picture of the Jefferson National Expansion Memorial building, a part of the National Park Service.

Until next post!

MG.-
Mariano Gomez, MVP
Intelligent Partnerships, LLC
http://www.intelligentpartnerships.com/

Partner Connections 2014 Kicked Off a Great Summit


Monday, October 13, 2014

Summit is now gone, but I wanted to take some time to recount some of the events as I saw them happening. First, I wanted to congratulate the Dynamic Partner Connections team for an excellent event hosted at the Renaissance Hotel. The location could not be anymore upscale and clearly was a great way to get things started.

As I was strolling along the corridors of the hotel with MVPs Joris de Gruyter and John Lowther, we ran into some of the awesome Dynamic Communities folks.

From left to right: Michelle Spitzer, Mark Rhodes, Joris de Gruyter, John Lowther, and Liz Hallen
Most of the topics at the Partner Connections day revolved around leadership and various NAV and SL topics - since the Summit itself tends to be dominated by AX, GP, and CRM, I guess this was a good thing.

Midday came along and it was time for Q&A with Hal Howard, former Microsoft executive and new Executive Director of Dynamics Communities. Many questions coming from the partner community revolved around Microsoft's dismissal of the certification requirements for Dynamics GP, Dynamics SL, and Dynamics NAV and whether Microsoft was trying to send a stronger message with such move. For example, a question came in related to Microsoft "killing the products" via a sale to a competitor or simply a code rollup into one product, a reminder of the Project Green days.

Andy Hafer and Hal Howard field questions from the audience

After the Q&A session, it was time for welcoming Hal to Community and a quick pic.

John Lowther, Hal Howard, Mariano Gomez, Joris de Gruyter

After lunch, I decided to stop by the Expo hall to see how things were progressing and I have to say that, no matter which venue is chosen, it never ceases to amaze me the amount of work that goes into conditioning a massive room with booths, banners, and lighting.

Expo Hall

The same could be said for the Meal hall which, this time around, had to be able to accommodate 3,500 people at any given time.

Meal Hall  - Andy receiving final updates
Came the evening, it was time for the partner reception. I had a chance to catch up with a number of partners and ISVs in attendance and really enjoyed the atmosphere of camaraderie and pleasantries around good food and drinks.

MVPs John Lowther and Leslie Vail

Team Altec (www.altec-inc.com

Frank Vukovits (Dynamic Communities) and Jon Rivers (Data Masons)

After Partner Connections and the partner reception, it was time to gracefully go back to my hotel room and catch up on some work.

Until next post!

MG.-
Mariano Gomez, MVP
Intelligent Partnerships, LLC
http://www.intelligentpartnerships.com/

Sunday, October 12, 2014

GPUG Summit 2014 St. Louis - The Journey Begins



My journey to St. Louis, MO begins today. As it's customary, I will be writing articles on a daily basis, if possible, to narrate the events of the day. I have a busy schedule, with presentations on Wednesday, Thursday, and Friday (I just took on a new session on Friday at 2:15 PM called "Testing, Testing, & More Testing" related to upgrades). Please follow me on Twitter @dgpblogster, or The Dynamics GP Blogster on Facebook, and of course right here on this blog for more info on the event and those little behind the scene moments. This year, the Summit is expecting a record breaking 900 attendees and is growing to be THE EVENT to attend after Convergence. If you have not signed up to be a GPUG member, what are you waiting on?
Until next post!

MG.-
Mariano Gomez, MVP
Intelligent Partnerships, LLC
http://www.intelligentpartnerships.com/

Wednesday, September 24, 2014

Microsoft Dynamics GP 2015 Developer's Preview: Working with Sample URIs - Part 2

In the part 1 video, I explained how to mount the Microsoft Dynamics GP 2015 Developer's Preview virtual hard disk using Hyper-V. My intent was to provide a part two showing how to mount the VHD file on Windows Azure, but realized it would take more time than I wanted to invest in really getting the point across on many of the aspects around the new service architecture components, so I have decided to forgo the Azure portion until some other day.

Today, I will focus on some of the sample service requests provided on the Developer's preview image, which can be found in the Example Service Requests.txt file available on the desktop of the image.

Before however, I wanted to touch base on REpresentational State Transfer (REST) services. REST, a term first coined by Roy Fielding (a principle author of the HTTP specification) in his doctoral dissertation, is an architectural style that treats networked application states and functionality as resources, which share a uniform interface. This architectural style differs in many ways from that of the Remote Procedure Call (RPC) architecture where services reside on the network and are invoked using request parameters and control data contained within messages.

Some of the basic principles governing REST services are:

  • Actors interact with resources, and resources are anything that can be named and represented. Each resource can be addressed via a unique Uniform Resource Identifier (URI).
  • Interaction with resources (located through their unique URIs) is accomplished using a uniform interface of the HTTP standard verbs (GET, POST, PUT, and DELETE). Also important in the interaction is the declaration of the resource's media type, which is designated using the HTTP Content-Type header. (XHTML, XML, JPG, PNG, and JSON are some well-known media types.)
  • Resources are self-descriptive. All the information necessary to process a request on a resource is contained inside the request itself (which allows services to be stateless).
  • Resources contain links to other resources (hyper-media).

While REST is defined by its author using strict architectural principles, the term is often used loosely to describe any simple URI-based request to a specific domain over HTTP without the use of an additional messaging layer such as Simple Object Access Protocol (SOAP). Implementations adhering to the strict principles of REST are often referred to as being “RESTful,” while those which follow a loose adherence are called “REST-Like”. Microsoft Dynamics GP Services can be considered REST-like (See Chapter 1: Microsoft Dynamics GP Service, page 3 of the Microsoft Dynamics GP Service Based Architecture Preview documentation).

A quick sample

As an example, imagine you need to build a service that interacts with the Microsoft Dynamics GP item master list: basically, a service that could produce the list of items and/or information about a specific item in the list, from a specific company database - in this case Fabrikam - and to be more precise, that company database resides within a specific tenant. Technically speaking, this service could also add or retrieve data for an item to and from the item master in Fabrikam, on the current tenant.

When building a REST-like service, you can must answer 3 basic questions:


  • What resources you are trying to define or expose
  • How are you going to represent the resources (URIs)
  • What actions are you going to support for each URI (HTTP verbs).


  • For our example, the resources will be defined by the hierarchy Tenants(Name:tenant_name)/Companies(company_name)/Items(item_number). The URIs are really dependent on where the service is going to be hosted, so for example, this could be in the form of http://somedomain.com:port_number/gpservice/ followed by the above hierarchy. The next thing in line is then to understand what HTTP verbs or actions are supported with each URI.

    Next, we need to determine the URIs for each resource. Right now we only need to determine the relative URIs since the absolute URI will be determined by where we host the service. The item master will be the root URI of the service (/). Using this syntax, /Items() will return all of items contained in the item master; /Items({ItemNumber}) will be the URI for each item within the item master.

    Under the current Developer's preview implementation, if you wanted to retrieve information about an item (HTTP GET), you would then use the following URI notation from your browser:

    http://localhost:8084/GPService/Tenants(Name=DefaultTenant)/Companies(Fabrikam,%20Inc.)/Items(2GPROC)

    By copy and pasting the above URL in the browser, the service call will generate a JavaScript Object Notation file (.json), as shown below:

    Items(2GPROC).json
    {
      "Status": {
        "CorrelationId": "d3056b1bb9d84775ad269abfa09cfa77",
        "Code": 200
      },
      "Payload": {
        "Trace": [],
        "ItemNumber": "2GPROC",
        "ItemDescription": "2 Ghz Processor",
        "NoteIndex": 333.0,
        "ItemShortName": "",
        "ItemType": "SalesInventory",
        "ItemGenericDescription": "",
        "StandardCost": 0.0,
        "CurrentCost": 250.0,
        "ItemShippingWeight": 0.0,
        "DecimalPlacesQTYS": "NotUsed",
        "DecimalPlacesCurrency": "One",
        "ItemTaxScheduleID": "",
        "TaxOptions": "Nontaxable",
        "IVIVIndex": 18,
        "IVIVOffsetIndex": 18,
        "IVCOGSIndex": 137,
        "IVSalesIndex": 112,
        "IVSalesDiscountsIndex": 128,
        "IVSalesReturnsIndex": 134,
        "IVInUseIndex": 0,
        "IVInServiceIndex": 141,
        "IVDamagedIndex": 141,
        "IVVariancesIndex": 783,
        "DropShipIndex": 445,
        "PurchasePriceVarianceIndex": 446,
        "UnrealizedPurchasePriceVarianceIndex": 446,
        "InventoryReturnsIndex": 450,
        "AssemblyVarianceIndex": 0,
        "ItemClassCode": "RM-ACT",
        "ItemTrackingOption": 1,
        "LotType": "",
        "KeepPeriodHistory": true,
        "KeepTrxHistory": true,
        "KeepCalendarHistory": true,
        "KeepDistributionHistory": true,
        "AllowBackOrders": true,
        "ValuationMethod": "FIFOPerpetual",
        "UOfMSchedule": "EACH",
        "AlternateItem1": "",
        "AlternateItem2": "",
        "MasterRecordType": 1,
        "ModifiedDate": "2017-05-21T00:00:00",
        "CreatedDate": "2017-05-21T00:00:00",
        "WarrantyDays": 0,
        "PriceLevel": "",
        "LocationCode": "",
        "PurchInflationIndex": 0,
        "PurchMonetaryCorrectionIndex": 0,
        "InventoryInflationIndex": 0,
        "InventoryMonetaryCorrectionIndex": 0,
        "COGSInflationIndex": 0,
        "COGSMonetaryCorrectionIndex": 0,
        "ItemCode": "",
        "TaxCommodityCode": "",
        "PriceGroup": "BUY",
        "PriceMethod": "CurrencyAmount",
        "PurchasingUOfM": "",
        "SellingUOfM": "",
        "KitCOGSAccountSource": "FromComponentItem",
        "LastGeneratedSerialNumber": "",
        "ABCCode": "B",
        "RevalueInventory": true,
        "TolerancePercentage": 0.0,
        "PurchaseItemTaxScheduleID": "",
        "PurchaseTaxOptions": "NonTaxable",
        "ItemPlanningType": "Normal",
        "StatisticalValuePercentage": 0.0,
        "CountryOrigin": "",
        "Inactive": false,
        "MinShelfLife1": 0,
        "MinShelfLife2": 0,
        "IncludeinDemandPlanning": false,
        "LotExpireWarning": true,
        "LotExpireWarningDays": 0,
        "LastGeneratedLotNumber": "",
        "LotSplitQuantity": 0.0,
        "UseQtyOverageTolerance": false,
        "UseQtyShortageTolerance": false,
        "QtyOverageTolerancePercentage": 0.0,
        "QtyShortageTolerancePercentage": 0.0,
        "IVSTDCostRevaluationIndex": 0,
        "UserCategoryValues1": "",
        "UserCategoryValues2": "",
        "UserCategoryValues3": "",
        "UserCategoryValues4": "",
        "UserCategoryValues5": "",
        "UserCategoryValues6": ""
      }
    }
    

    You can also retrieve an XML payload by specifying the extension in the URI, as follows:

    http://localhost:8084/GPService/Tenants(Name=DefaultTenant)/Companies(Fabrikam,%20Inc.)/Items(2GPROC).xml

    Here are other examples of URI notations to perform various service calls to retrieve data from Microsoft Dynamics GP, as provided in the Developer's preview:

    Checking the status of the GP Service.
    http://localhost:8084/GPService/Tenants(Name=DefaultTenant)/Companies(Fabrikam,%20Inc.)/Utility/Ping

    Obtaining help on supported HTTP verbs.
    http://localhost:8084/GPService/Tenants(Name=DefaultTenant)/Companies(Fabrikam,%20Inc.)/Utility/Help

    Retrieve information on customer AARONFIT0001 (Aaron Fitz Electrical).
    http://localhost:8084/GPService/Tenants(Name=DefaultTenant)/Companies(Fabrikam,%20Inc.)/Customers(AARONFIT0001)

    Retrieve information on customer COMPUTER0001(Computer World).
    http://localhost:8084/GPService/Tenants(Name=DefaultTenant)/Companies(Fabrikam,%20Inc.)/Customers(COMPUTER0001)

    Retrieve information on item number 100XLG.
    http://localhost:8084/GPService/Tenants(Name=DefaultTenant)/Companies(Fabrikam,%20Inc.)/Items(100XLG)

    Retrieve information on site 101G.
    http://localhost:8084/GPService/Tenants(Name=DefaultTenant)/Companies(Fabrikam,%20Inc.)/Sites(101G)

    Retrieve information on site 104G.
    http://localhost:8084/GPService/Tenants(Name=DefaultTenant)/Companies(Fabrikam,%20Inc.)/Sites(104G)

    Retrieve information on all companies under the current tenant.
    http://localhost:8084/GPService/Tenants(Name=DefaultTenant)/Companies(Fabrikam,%20Inc.)/Companies()

    Retrieve information about Fabrikam, Inc. under the current tenant.
    http://localhost:8084/GPService/Tenants(Name=DefaultTenant)/Companies(Fabrikam,%20Inc.)/Companies(TWO)

    I want to mention that there 2 HTML files provided with the preview, which contain JavaScript sample code showing how to access the Dynamics GP Service. These can be found under the Samples folder. The scripts show how to make use of the HTTP POST, HTTP PATCH, and HTTP DELETE actions to create a new, and update and delete an existing record in Microsoft Dynamics GP respectively.

    There's also a .NET sample application that show how to consume a GP Service as well. This sample can be loaded with Visual Studio in the Developer's Preview image.

    While this is all good, In my next article I will show how to build a Microsoft Dexterity-based service that can be consumed by other applications.

    Until next post!

    MG.-
    Mariano Gomez, MVP
    IntelligentPartnerships, LLC
    http://www.IntelligentPartnerships.com

    Wednesday, September 10, 2014

    Open letter to Jeff Edwards, Microsoft Dynamics Partner Strategy

    Mr. Edwards,

    I read your lines in response to MVP Mark Polino's article No upside to Microsoft's decision to kill Dynamics GP exams on MSDynamicsWorld and I really hope you get to my article Why the end of Microsoft Dynamics GP exam certifications is bad news for customers at some point for an along-the-lines perspective on the issue.

    Nonetheless, my objective here today is to offer some direct comments and frankly to keep an open line of communication (there's probably nothing to debate) on the subject of the retirement of ERP certifications - primarily Dynamics GP which is my area of expertise.

    Counter-argument 1:
    On the shift to the Cloud - We are not saying it is Azure/O365 in place of GP, we are saying GP AND Azure/O365. The integrated solution provides true value to customers and differentiation for our partners. Issues like use tax, approval workflow and cash flow projections are absolutely critical, and they are improved by the use of GP working together with O365.

    I happen to be, probably, one of the most tech savvy MVPs in the Dynamics GP pool of MVPs, with over 15 deployments on Azure along with Office 365 and even Azure Virtual Network to On-Premise network integrations. In fact, I have written a number of articles featured on this site on the subject of cloud and ERP deployments and continue to be one of its biggest proponents.

    The real benefit of ERP cloud deployments - at least for my clients - is time-to-execution. After all, being able to complete an implementation project on average 4 to 6 weeks earlier than your typical on premise deployment has its merits and allows companies to quickly realize a ROI, not having to worry about the infrastructure on which their solution will be deployed. When you really get past this fact, the second biggest driver to a cloud deployment is the expertise of the individuals that allowed the client to realize their solution much quicker: BUSINESS APPLICATIONS SPECIALISTS. Let's not kid ourselves, ERP systems are unlike any other type of technology in the market. You simply cannot take a Windows Server guy and make him/her a manufacturing specialist or a project accounting or tax specialist. It just doesn't work! Despite all the arguments stating "certifications don't make experts", a certification, current or otherwise, is still a vehicle used by customers to understand NOT THE LEVEL OF EXPERTISE, but the LEVEL OF UNDERSTANDING of any given individual on a particular business application subject. For example, if my client perceives my certifications to be strictly technical, then they have a right to question my functional abilities and vice versa.

    Counter-argument 2:
    On your statement that the Dynamics team does not own the expense of their exams. We certainly wish this was the case, but it was not. We had complete budgetary and P&L responsibility for all the exams we created. As stated, we looked at our budget and the current skills and needs in the channel and decided more training, available online, covering more of the integrated Microsoft solution, was a better use of our budget and would have a more positive impact on both our Partners' business and customer success.

    Respectfully, I sense a degree of contradiction in this argument. I fail to understand how rescinding the certifications directly improve building "current skills and needs in the channel", and furthermore how can it not have an effect your own bottom line (more on that later). If Microsoft's goal now is skill-building and targeting of specific needs, the better alternative, in my humble view, would have been to work with said channel to understand how the certifications needed to change or improve in response to your own goals, all within the budget you had. There are various entities who would have gladly worked with Microsoft - for free, even - to ensure the certifications were adequate and sufficient enough, namely Dynamic Partner Connections, the GP User Group (GPUG), and the always willing Microsoft Dynamics GP MVP group. Strangely enough, the collaboration model I described seems to exist and work well for other Microsoft divisions. For example, the SQL Server team is one that works closely with special interest groups and MVPs to ensure the certification is a benefit to the community of SQL Server professionals.

    How are you going to ensure that more online training is being assimilated by the channel when your stated intention is to have a "more positive impact on both our Partner's business and customer success". After all, you cannot control what you can't measure, correct? The bottom line is, Microsoft have the mechanisms in place to ensure the assimilation of other technologies - to use your example, Azure and Office 365. If your goal is to ensure partners are driving customers to the cloud and cloud-based solutions, that's what the partner channel competency program is for. Ironically, partner competency in a specific technology vertical is intrinsically tied to individuals within the organization attaining certifications in those very areas.

    Polino is also correct in stating that we do pay for these exams which should offset to some degree the cost of producing them. If cost was a concern for Microsoft, why not raise the retail price of the exam as opposed to simply doing away with them? After all, those of us who really value the Microsoft Certified Professional program and achieving a certification to prove to our clients that we've put in the sweat would have gladly paid for them. As an anecdote, we had been offering vouchers to our consultants for upgrading their certifications to the most current product release before news of cancellation hit the streets. I would also venture to say, that most responsible partners offer some form of incentive to their consulting and delivery teams, monetary or otherwise, to maintain existing and attain new certifications that can only benefit the partner organization - what's that word again? Competency!

    Counter-argument 3:
    With the expansion of the solution, I would argue it is not easier to become a partner.... We did try to make it cheaper by dropping the cost of unlimited online training from $6,000 to $1,000. As far as a flood of new, untrained entrants, we instituted a requirement for a business plan and proof of investment for any partner signing up. This must be approved by the US Partner Director. New partners coming into the eco-system have dropped by 70% over the last two years, as was our intent. The new partners that do get in offer unique value and are committed to training their people to deliver value to customers

    I find it very interesting that you mention a "business plan and proof of investment" as a mechanism to vet new entrants. In one of my management classes in the MIS/Technology Management program I graduated from, I learned that business plans and funding are only the starting point for any business and that most companies fail where it matters most: sales and execution.

    As I am sure you are aware of, there are partner organizations that can sell and there are partner organizations that can execute or deliver. Rarely do you find the one organization that is very good at both. Mea culpa!

    If there is a silver line here, you have now opened up the floodgates to the return of the boutique consulting firm. After all, large partners can now focus on selling, selling, selling (which is got to be at the top of the list of drivers behind this move) without the added pressure of maintaining a pool of certified individuals just to keep up with some SPA requirement. Less partners, less administration, more revenue, more to the bottom line... I get it!

    The flipside of that coin is larger partner firms tend to outsource the delivery to boutique firms specializing in implementing. Case in point, 80% of my organization's business derives from professional services delivered on behalf of these larger firms, so I may not fit the bill of a traditional revenue partner on your books. The bottom line of this already lengthy explanation is, Microsoft and its larger ERP partner organizations need SOMEONE to deliver such implementations so customers can smile, and Microsoft and, conceivably, the selling partner can perceive those coveted and profitable maintenance plan renewals and margins, respectively.

    Then, why not give us the small guys a chance to continue differentiating ourselves in the ecosystem? After all, I would want to believe that your large (selling) partners also have a vested interest in seeing their entrusted customers' projects being done by individuals who have at least gone through training and completed a product certification. I will say it again, I'M WILLING TO PAY MORE if that's what it takes, but consider bringing back those certifications for the greater good of the community of customers and partners.

    I promise I won't hold my breath on seeing any of my humble views being entertained at any level within Microsoft, but hope you at least get a chance to read them.

    Sincerely,

    MG.-
    Mariano Gomez, MVP
    Intelligent Partnerships, LLC
    http://www.IntelligentPartnerships.com

    Friday, August 29, 2014

    Microsoft Dynamics GP 2015 Developer's Preview: Loading the VHD image - Part 1

    Now that you are beyond the initial excitement of the preview release announcement and have downloaded the RAR files with the links provided by Kevin Racer, Sr. Program Manager Lead with the Microsoft Dynamics GP team (See Microsoft announces Developer Preview for Dynamics GP 2015 for links to the rar files), it's time to get the VHD image loaded.

    Note: you can use WinRAR or WinZip to extract the virtual hard drive image from the rar files downloaded from PartnerSource. The extracted file is 29.1GB.

    Part 1 will focus on the traditional Hyper-V method of loading the file. Click here for direct access to the video on YouTube.


    Until next post!

    MG.-
    Mariano Gomez, MVP
    Intelligent Partnerships, LLC
    http://www.IntelligentPartnerships.com

    Microsoft Dynamics GP 2015 Developers' Preview is now available

    These are exciting times indeed! Microsoft Dynamics GP 2015 Developer's Preview is now available for partners to download, as featured over at Developing for Dynamics GP by Kevin Racer, Sr. Program Manager Lead with the Microsoft Dynamics GP team (See Microsoft announces Developer Preview for Dynamics GP 2015).

    The Developer's Preview features the new Service Base Architecture (SBA) components that will enable developers from all walks of life to write and integrate applications on any platform to Microsoft Dynamics GP via REST services.

    NOTE: as of the time of this article, hypermedia is still not part of the current design.

    You can always find more information about RESTful services online, but here's a primer on RESTful with WCF on MSDN.

    The RESTful approach facilitates integration across the board as it takes advantage some fundamental principles like HTTP as transport protocol, URIs to identify resources, and Verbs that translate directly into actions.

    Now what makes this even more interesting is, all the business logic to consume and expose services can be written in sanScript. Let me repeat... all the business logic to consume and expose services can be written in sanScript - Microsoft Dexterity's development language. Dexterity has been considerably enhanced and extended for .NET interop. There's no more need to expose a .NET assembly to COM. And through the now familiar Dictionary Assembly Generator (DAG), you can generate the .NET assemblies for your Dexterity based services. This truly allows partners and ISVs to take significant advantage of their existing code base without much effort to add this new functionality.

    Dexterity continues to evolve to deliver powerful functionality
    (C) Copyright Microsoft Corporation, 2014

    .NET interop opens up the door for Dexterity developers to create powerful applications that expose and consume services, along with a host of other options previously available only to Visual Studio developers. Alice Newsam discusses more on .NET Interop in her Dynamics GP Developer Insight article, over at Developing for Dynamics GP. The application integration options have now scaled beyond the traditional Web Services, eConnect, and Integration Manager options for CRUD operations and Dexterity Triggers and Visual Studio Tools for UI integration.

    Partners can download the Roshal Archive format (RAR) files containing the virtual hard drive (VHD) image from PartnerSource using the links provided by Kevin in his article (See Microsoft announces Developer Preview for Dynamics GP 2015).

    It's always good to point out that this is still a preview version so you are encouraged not to release any product or deliver any service to a customer with these tools and rather use for internal education and readiness.

    Downloads
    SBA_Preview_Readme.txt

    In my next article I will discuss how to load the VHD image.

    Until next post!

    MG.-
    Mariano Gomez, MVP
    Intelligent Partnerships, LLC
    http://www.IntelligentPartnerships.com

    Tuesday, August 26, 2014

    Customizating Integration Manager Logs - Part 2

    In my previous post I talked about all the out of the box options for setting up Integration Manager ("IM") logs and frankly, the Trace level log is good for most users of IM users. However, when "good" is not good enough, it's necessary to resort to some of the objects and functions available as part of IM's scripting library.

    Errors Collection object, Error object, and functions

    Integration Manager provides the Errors Collection object which is nothing more than a collection or list of all the errors generated during an integration. The Errors Collection must be explicitly retrieved in order to work with the properties within the collection. To navigate the collection we need the Error object to get information about the specific error within the Errors Collection, for example, time of the error, the specific error text, and the type of severity (error or warning).

    IM also provides a number of functions that allow a developer to write into the log file directly. These functions are: LogDetail, LogDocDetail, LogWarning, and LogDocWarning. Each of these functions is discussed in greater detail in Part 5 - Using VBScript, Chapter 22 - Functions of the Integration Manager User's Guide. The following example puts all these together:

    After Document script
    '
    ' Created by Mariano Gomez, MVP
    ' This code is licensed under the Creative Commons 
    ' Attribution-NonCommercial-ShareAlike 3.0 Generic license.
    Const SEVERITY_MEDIUM 1000
    Const SEVERITY_CRITICAL 2000
    
    Dim imErrors ' reference the Errors Collection
    Dim imError ' reference a specific error within the collection
    
    Set imErrors = GetVariable("Errors")  
    If imErrors.Count > 0 Then
     For i = 1 to imErrors.Count
      Set imError = imErrors.Item(i) ' get the error represented by the index
     
      'Check the severity level of the error
      if imError.Severity = GetVariable("SeverityWarning") then
       'We have hit a warning
       LogDocWarning imError.MessageText, "", SEVERITY_MEDIUM, "Customer Name", SourceFields(somequery.CustomerName)
      Else
      ' We hit a major issue, so now we really want to log all details details
       LogDocDetail imError.MessageText, "", SEVERITY_CRITICAL, "Customer Name", SourceFields(somequery.CustomerName)
      End If
     Next 'Continue if there's more than 1 error
    End If
      

    Note that you can add event logs from anywhere where scripting is allowed in IM. The above sample code is just a small example of how you could customize the logs further, with information that's meaningful to you and your users.

    Hope you found this information useful.

    Until next post!

    MG.-
    Mariano Gomez, MVP
    Intelligent Partnerships, LLC
    http://www.IntelligentPartnerships.com