Quantcast
Channel: Microsoft Dynamics 365 Community
Viewing all 17314 articles
Browse latest View live

Microsoft Dynamics AX 2012 R3 Reporting Cookbook

$
0
0
Another masterpiece,  Microsoft Dynamics AX 2012 R3 Reporting Cookbook by Packt Publishing , is out in the market for those who want to become gurus of SSRS Reporting for Dynamics AX. I had a chance to...(read more)

AX 2012 for Retail: “The number for one time customer is missing” and payment posts with earlier date than sales invoice when posting Retail Statements

$
0
0

We have seen a few different issues lately when customers have unmarked “Delivery Date Control” in System administration>Setup>Licensing>License configuration > Trade.

The first issue that can happen is the following error when posting the Retail statement:

 

” The number for one-time customer is missing.”

 

The error means that AX cannot find the default customer for the store (not that the customer has the One-time customer box marked).

The first thing to check is that the sysadmin user also receives the error on the one-time customer.

 

The second issue we see is that when posting a Retail statement the Payment posts with an earlier date than the sales invoice.

 

The work-around below has resolved both issues in the past.

 

Set transDate = salesHearder.DeliveryDate instead of transDate = salesHeader.ReceiptDateConfirmed in the RetailStatementSalesOrderCreator/Run class:

 

If you have the above issues and Delivery Date Control is not unmarked, I would suggest creating a support incident as this would involve further investigation.

 

Note:

"Microsoft provides programming examples for illustration only, without warranty expressed or implied, including, but not limited to, the implied warranties of merchantability or fitness for a particular purpose. This mail message assumes that you are familiar with the programming language that is being demonstrated and the tools that are used to create and debug procedures."

This has not been officially tested by Microsoft and should be fully tested before implementation.

 

Integrating the Shipping Carrier Interface in AX 2012 with UPS WorldShip - Part 2

$
0
0

In this blog series, we will walk through the steps to configure Microsoft Dynamics AX 2012 to integrate with UPS WorldShip using the Shipping carrier interface located in Inventory and warehouse management. This integration will enable Dynamics AX 2012 to send sales order shipment information automatically into UPS WorldShip for processing.  Once processed, UPS will send the shipping transaction information back to Dynamics AX.Configure UPS WorldShip for importing transactions from AX 2012 database using the Import/Export (option)

This is Part 2 of this series where we will run through configuring the import mapping between the UPS WorldShip and Dynamics AX 2012 databases using Open Database Connectivity (ODBC)

1. Toolbar > Import/Export Data (button) > Import/Export Wizard (option)

  

2. In the Import/Export Wizard - Main Menu - Step 1 of 5 (form), select: I need help with importing information into WorldShip
3. Click the Next (button)

  

4. In the Import/Export Wizard - Main Menu - Step 2 of 5 (form), select: Small Package Shipments
5. Click the Next (button)

 

6. In the Import/Export Wizard - Main Menu - Step 3 of 5 (form), set the following
     a. Data connection Type: DAX2012_IMP
     b. Click on the checkbox above the Sql Server/Oracle options
     c. SQL Server: Selected
     d. Datasource Type: Microsoft SQL Server
7. Click the Configure Data (button) to open the Supply advanced Setting (form)

 

8. In the Supply Advanced Settings (form), set the following
     a. Server: DAX2012 (Note: this is the name of your database server) 
     b. Database: MicrosoftDynamicsAX (Note: this is the name of your AX database)
     c. Trusted Connection: Marked
9. Click the OK (button) to close the Supply Advance Settings (form)

  

10. Import/Export Wizard - Main Menu - Step 3b of 5 (form)
11. Select Table Name: SHIPCARRIERSHIPPINGREQUEST
12. Next (button)

 

13. Import/Export Wizard - Main Menu - Step 4 of 5 (form)    
14. Map the fields of the SHIPCARRIERSHIPPINGREQUEST (table) to the appropriate fields in the Ship To, Ship From, Third Party, Service, Options, and Reference tabs.
     Note: Use the Import mapping table at the end of this blog for import mapping references between the WorldShip and Dynamics AX.

 

15. In the "Map your Small Packages Shipment Fields" section, Select PACKINGSLIPID
16. Click on the Define Primary Key (button)
     Note: The PACKINGSLIPID will be the value that we use to pull the order information onto WorldShip using key in an import option that we will configure later in this blog series.

 

17. In the Map Name (field), enter the name of the map: DAX2012_IMPORT
18. Save Map (button)

 

19. Import/Export Wizard - Main Menu - Step 5 of 5 (form)    
20. Select Exit to WorldShip
21. Finish (button) to close the Import/Export Wizard - Main Menu - Step 5 of 5 (form).






Import table and field mapping between UPS WorldShip and Dynamics AX 2012




If you missed the first installment of this series, you can reach it by following this link Part 1


John Bengson

How to request support for Dynamics Online

$
0
0

Support for Dynamics Online, including log-in issues, requires a new service request. If you have a service plan for Microsoft Dynamics that includes support, simply open a New Support Request.  

If you're not enrolled in any of the above service plans, or your service plan does not include support, visit Microsoft Support or call 1-800-936-4900 in the US or Canada.

When initiating a new support request, please choose the following options:

  1. Choose the correct Product (ie. Microsoft Dynamics AX 2012)
  2. Under Support Topic select Company Wide
  3. Under Sub Topic select Dynamics Online

This will direct you to the correct Microsoft group to resolve your Dynamics Online questions. 

Get Additional Support for Microsoft Dynamics AX

 

Five Factors for Choosing the Right Cloud for Microsoft Dynamics

$
0
0
On the heels of Microsoft Convergence 2015, jam packed with sessions, meetings, and conversations with the Microsoft partner and user community, there is one message that rings resoundingly clear: Dynamics ERP and CRM are ready for the cloud.  Yet ...read more

Anytype Data Type

$
0
0
What is Anytype Data Type Anytype is a placeholder for any data types (integer, real, string, container, class, etc.). The data type will be initialized to the anytype variable when you assign a value...(read more)

The AXUG Academy Dynamics AX Accounts Payable Setup Class Is Just Around The Corner

$
0
0

I just wanted to drop you all a quick note to remind you that the AXUG Academy Class that I am teaching on Accounts Payable Configuration within Dynamics AX 2012 is coming up next week.  This is the fourth in the series, and continues on from the General Ledger, Cash and Bank Management and Accounts Receivable classes that we have held over the past few months.

Even if you are one of the enlightened ones that have already started taking these classes, you can easily start with this class.  Here is the link to the AXUG Academy website with more information.

Academy – AX Configuration Series – Accounts Payable Setup April 2015

Friday, April 10, 2015 (12:45 PM) to Friday, April 10, 2015 (5:00 PM) (Eastern Time)

I have been rebuilding the training material for this class and all of the students will get a new and improved version of the Configuring Accounts Payable within Dynamics AX 2012 Bare Bones Configuration Guide Training Workbook which has been expanded (both page count wise and also physically) to make it easier to follow during the training.  This book is not even available on Amazon yet (https://www.createspace.com/5405484)


All of the exercises have been reformatted to give you a quick reference guide, a thumbnail cheat sheet and also a detailed step by step guide with screen shots.  Also we have improved the quality of the images so there is no more pixilation of the screen shots which makes is even betterer (I know this is not a real word).




Here is a quick summary of the class and also the areas that we will be going through:

Summary:

The Accounts Payable area is one of the three foundation financial modules within Dynamics AX that you will want to set up.  It not only allows you to manage all of your vendor information, post your invoices, and make in your payments, but also allows you to manage approval workflows, and much more.

It’s not hard to configure either and this book is designed to give you step by step instructions to show you how to configure the payables area, and also how some of the basic transactions work to get you up and running and working with your vendors.

Configuring Accounts Payable Controls

Before we start adding vendors and creating invoices within the Accounts Payable module of Dynamics AX, there are a couple of codes and controls that need to be configured so that everything else later on in the book will run smoothly.  In this section we will walk through everything that you need to set up to get the basic Accounts Payable features working.

Topics Covered:

  • Configuring Payables Journals
  • Configuring Vendor Posting Profiles
  • Configuring Cash Payment Terms
  • Configuring Net Days Payment Terms
  • Configuring Net Day Of Month Payment Terms
  • Configuring Equal Monthly Scheduled Payment Terms
  • Configuring Proportional Monthly Scheduled Payment Terms
  • Configuring Cash Discount Codes
  • Configuring A Check Payment Method
  • Configuring An Electronic Payment Method
  • Configuring A Postdated Check Payment Method
  • Configuring Accounts Payable Parameters

Configuring Vendor Accounts

Now that you have all of the codes and controls configured you can start adding some real data into the Accounts payable, and the best place to start is by setting up your vendors.

In this chapter we will show you how you can set up individual vendors, and also how you can load in all of your vendors in bulk through the Data Import Export Framework.

Topics Covered:

  • Changing the Vendor Numbering Sequence
  • Configuring Vendor Groups
  • Creating A New Vendor Account
  • Importing Vendors Using The Data Import Export Framework
  • Updating Vendor Information Manually
  • Performing Bulk Updates Using The Edit In Grid Function
  • Performing Mass Updates Using Excel

Configuring Invoicing

Now that we have all of our vendors set up, we can start doing some real work by entering in invoices and processing payments.

Topics Covered:

  • Creating An Invoice Journal
  • Viewing All Open Vendor Invoices

Creating Vendor Payments

Once you have invoices within the system, you can start selecting invoices for payment and print checks.

Topics Covered:

  • Creating A Payment Journal Using Payment Proposals
  • Generating Payments From A Payment Journal
  • Viewing Vendor Transaction History

Configuring Payables Invoice Journal Approvals

Payables is one of the most common areas within Finance that people want to add workflows and a great place to start within this module is to configure workflow approvals around the Payables Invoice Journals so that you can make sure that only the invoices that you want to pay get paid.

Topics Covered:

  • Creating An Invoice Journal Workflow
  • Defining Invoice Journal Approval Workflow Submission Instructions
  • Assigning Multiple People To The Journal Approval Workflow Task
  • Defining The Journal Approval Workflow Task Instructions With Context Links
  • Publishing And Activating The Journal Approval Workflow
  • Assign The Invoice Journal Workflow To The Invoice Journal
  • Submitting AP Invoice Journals For Workflow Approval
  • Accessing Workflow Tasks Through The Work Item Notifications
  • Accessing Workflow Tasks Through The Work Item List
  • Viewing Workflow Status And History
  • Approving Workflow Tasks Through The Work Item List
  • Posting AP Invoice Journals After Workflow Approvals Have Been Completed
  • Adding Status Notifications To Workflows
  • Publishing A New Version Of The AP Invoice Journal Approval Workflow
  • Receiving Workflow Status Update Notifications
  • Viewing Workflow Versions
  • Viewing All Workflow Statuses

Here is the link for more information: http://www.dynamicsaxcompanions.com/Bare-Bones-Configuration-Guides/Configuring-Accounts-Payable

Last three classes on Configuring The General Ledger, Cash and Bank Management and Accounts Receivable classes were a great success and I hope to see some of you at this next class on the 10th.  There is limited seating so reserve your place soon


AXUG Focus 2015: Your Source for Microsoft Dynamics AX Training

$
0
0

 This year, AXUG Focus is doing things a little different. We invite all Microsoft Dynamics® AX users to join us in Orlando, Florida May 18-21 where you can pick and choose which Focus conference to attend best suited to your skills, interests, and Microsoft Dynamics AX training goals.

Customize your training experience at AXUG Focus based on your industry (Manufacturing & Supply Chain), role (BI & Reporting), or where you're organization is at with a current or future upgrade (Upgrading). Do your interests lie in all three Focus conferences? Attend all three! It's almost like we've created the Subway sandwich of conferences - you can create many different combinations that offer YOU a unique conference customized to fit YOUR needs.

Look at your options:

Let's add in Onsite Academy Classes:

  • Upgrading AX 2012 - Data Migration - May 19
  • Master Planning for AX 2012 - May 20
  • BI101 Exploring & Customizing Role Centers for the Power User - May 21

Here are some scenarios...Let's say you're in the:

  • Manufacturing industry and considering an upgrade: register to attend Focus Manufacturing & Supply Chain, Focus Upgrading, and get in a couple Academy classes starting Tuesday afternoon with Upgrading AX 2012-Data Migration, and rounding out your experience with Master Planning for AX 2012 on Wednesday.
  • Process of Upgrading and your role is responsible for Business Intelligence: register to attend Focus BI & Reporting, Focus Upgrading, register for Upgrading AX 2012-Data Migration on Tuesday afternoon (you still get to attend the morning sessions at Focus BI & Reporting), and spend the better part of Thursday in the BI101 Academy class.

Isn't that fun? Select what you want and leave out what's not as important to you. Yes, there's some overlap of conference days and Academy sessions, but that's to help you get the most out of your time in Orlando! We don't want to limit your time in sunny Florida to only one track and think about one topic - if your interests overlap, so should your conference training. If you register to attend Focus Manufacturing & Supply Chain AND Focus BI & Reporting, look at the session schedule in advance and attend those that are most applicable to helping you reach your goals.

Speaking of sessions, have you seen the session schedule for each event? It's quite the line-up:

Register today and save your spot at AXUG Focus!


Install Dynamics AX 2012 R3 Step by Step (step 4)

$
0
0
In the previous articles we ere discussed how to install AX basic components , we also discuss how to complete the initialization checklist and the partition initialization chick list after that we were...(read more)

Top Conferences for the Microsoft Dynamics Industry

$
0
0

One thing Microsoft has always excelled at is creating communities of engagement. Whether it’s with customers or developers Microsoft’s ecosystem has always been one of its greatest strengths and to some degree, one of the biggest reasons organizations look at Microsoft’s products.

The Dynamics community is no exception and, indeed, may be the best example of Microsoft’s ability to foster a diverse community of developers and users. If you have been thinking of attending a conference, however, which one would be the best fit? Let’s take a look at the available options and get a brief overview.

Microsoft Convergence

As the folks at Encore Business Solutions describe, Microsoft Convergence is like the night club of conferences. “It’s big, flashy, and action-packed with big name keynote speakers, including Senior VPs from Microsoft. The conference features information about new products and trends from Microsoft Dynamics. You’ll get tips and tricks, as well as knowledge that you can start using right away. You’ll leave inspired and excited about what’s next for Dynamics.

One look at the keynote speakers that were at Convergence 2015 in Atlanta and it’s easy to see why Convergence draws such comparisons:

  • Satya Nadella – Microsoft CEO
  • Allison Watson– Corporate Vice President, US Marketing & Operations
  • Chris Capossela – Executive Vice President and Chief Marketing Officer
  • David Finn – Associate General Counsel and Executive Director, Microsoft Cybercrime Center
  • James Phillips – Corporate Vice President
  • Judson Althoff – President, Microsoft North America
  • Julia White – General Manager, Office Division Product Management
  • Kirill Tatarinov – Executive Vice President, Microsoft Business Solutions Group
  • Seth Godin – World’s Foremost Marketing Provocateur
  • Tony Prophet – Corporate Vice President, Microsoft Windows and Search Marketing
  • Wayne Morris – Corporate Vice President, Microsoft Business Solutions Marketing

Because of the wealth of information provided, Microsoft emphasizes that “anyone interested in how Microsoft business solutions can help take their business to the next level should attend Convergence! Whether you’re the leader charged with making key, strategic decisions around the management of your business, or the technical manager responsible for technology implementation, or the individual user looking for ways to utilize your solution more productively, Convergence is designed for you.”

While Convergence 2015 has already happened in the U.S., European partners and users still have the conference to look forward to in Barcelona, November 30 – December 3.

In the U.S., Convergence 2016 will be in New Orleans, April 4-7, 2016.

Dynamics User Group Summit

Another major conference is the Dynamics User Group Summit, held October 12-16 in Reno-Tahoe, NV.

In contrast to Convergence, Summit is a more relaxed, subdued atmosphere. The organizers of the conference describe it as “the only Microsoft Dynamics user conferences designed and led by users, for users – and every attendee is focused on Dynamics solutions, so you can learn how they’ve overcome the same challenges you face every day. The conferences feature interactive learning at its best – you’ll engage in lively group discussions and give-and-take, and return home with practical ideas you can implement right away.”

In other words, where Convergence focuses on the big picture of the future of the Dynamics community and products, Summit is focused on the everyday aspects of using those products. Users will be able to discuss problems and solutions with other Dynamics users and discover better ways of using the applications. Because Summit focuses on AX, CRM, GP and NAV, the majority of Dynamics uses are sure to find helpful information at the conference.

Dynamics Technical Conference

The third major Dynamics event is the Dynamics Technical Conference. As its name implies, the conference has a greater technical focus and is aimed at:

  • Solution Architects (functional and technical)
  • Implementation Consultants (functional and technical)
  • Application Developers
  • Support Personnel

To help users get the most out of the conference, they have the opportunity to “interact directly with the people that build Microsoft Dynamics AX and Microsoft Dynamics CRM, along with their colleagues from Microsoft Dynamics Marketing, Microsoft Social Listening, Office, Parature, SharePoint, Visual Studio and more.”

While this year’s Technical Conference has already happened, 2016 promises to be another informative event.

With just a brief look at the available conferences for Dynamics users, it’s easy to see why Microsoft is so successful at building productive user communities. Whether you are interested in the big picture, the nitty-gritty day-to-day operations or the technical aspects of building on the Dynamics Platform, there’s a conference designed for you!

About the Author: Curt Finch is the CEO of Journyx, a Certified Microsoft Partner. Journyx maximizes the value of Microsoft Dynamics by adding enterprise time tracking. Journyx Accountlink for Microsoft Dynamics allows companies to quickly implement a complete time tracking solution using existing business data in Dynamics. Connect with Curt on Google+.


About Journyx

A Certified Microsoft Partner, Journyx enterprise time and expense tracking software is an add-on that integrates with Microsoft Dynamics GP as well as Project Accounting. Learn more at http://journyx.com/dynamics.

The post Top Conferences for the Microsoft Dynamics Industry appeared first on goERPcloud.

Fitting the AX Sandbox into your ERP Strategy

$
0
0

Whether you are a CIO of a large firm or a consultant working with a variety of clients, a comprehensive Microsoft Dynamics AX Sandbox will give you the opportunity to truly test the software against company needs.

36834427_l

Selecting an enterprise resource planning solution is one of the most critical steps in an ERP implementation strategy, and it is the first critical step that will determine success or failure of the project.  The ERP product you select will either fit the company’s culture and functionality needs or not.  No matter how smoothly the implementation goes, if the product isn’t a fit it ultimately results in failure.  Choose the right product and it becomes the backbone of the organization for years, and the surest way to get a feel for how an ERP solution will fit in with the company is to try before you buy.

Panorama Consulting offers four things to consider when assessing ERP software.

  1. How is it to navigate the user interface and how well does the system fit your business operations?
  2. Can your easily execute business processes in the system?
  3. Are employees able to perform job functions without the software inhibiting their day-to-day responsibilities?
  4. Will the company be able to seamlessly, efficiently and effectively run its operations using the system?

This is where the goERPcloud Microsoft Dynamics AX sandbox shines.  We’re not saying that Dynamics AX is guaranteed to be the right product for your project, but it is certainly a favorite solution among large enterprises because of its power, scalability, simple integration and of course the friendly Microsoft interface that most offices are already familiar with.

To see the powerful ERP solution in action, the best option is to test drive it for yourself using the goERPcloud Dynamics AX sandbox. Murray Fife, a Microsoft Dynamics AX expert, recently took a tour around the AX sandbox and found it to be ahead of its class.

“I was introduced to goERPcloud, and I have to admit this is a super cool offering,” said Fife in a blog. “They offer a free trial service for test driving Dynamics AX R3 where you can sign up for a 30 day trial, without having to give them a single digit of your credit card number. I didn’t buy it either, but I tried it out and gosh darn it – it worked like a charm.”

Whether or not AX turns out to be the right solution for your business, or your client’s business if you are a consultant, it definitely deserves a place on your short list.  And being able to get into the AX sandbox and really get a feel for the solution will go a long way toward limiting risk when selecting ERP.

 


About goERPcloud

goERPcloud is the first on-demand Microsoft Dynamics Cloud Marketplace that allows you to test drive different flavors of Microsoft Dynamics AX, GP, NAV and CRM with preconfigured 3rd party applications.  goERPcloud boasts a robust ecosystem of Microsoft Dynamics Partners, helping businesses find the cloud-based software solutions that best fit their current and future business needs.  Since 2000 RoseASP.com, the power behind goERPcloud, has provided hosted Microsoft Dynamics ERP and CRM applications to businesses around the world. For more information about goERPcloud, visit www.goERPcloud.com.

The post Fitting the AX Sandbox into your ERP Strategy appeared first on goERPcloud.

Deploy Dynamics AX Reports Manually

$
0
0
In many cases, the user does not deploy Dynamics AX reports during the installation he only installed the reports extensions,then later on he deploy the reports manually. To know how you can do it please...(read more)

Microsoft Dynamics Partner Roundup: Italy E-billing for AX, NAV; CRM CoffeeSender; New Cloud budgeting, Services automation partnerships

$
0
0
In this week's Microsoft Dynamics partner news roundup: Infocert Launch Legalinvoice for Microsoft Dynamics; MTC Rolls Out Dynamics CRM CoffeeSender; Altico Advisors Partners with Adaptive Insights; SBS Group Selects Unanet as ...read more

Microsoft Dynamics AX 2012 R3 Financial Management.

$
0
0

Today I’d like to share with you that my second book Microsoft Dynamics AX 2012 R3 Financial Management have been released in Feb 2015,  this is the second edition of my first book with added extra chapters to shape the content, and make it more useful for readers. There is an effort behind the seen to get this job done, I am very grateful to all people who directly, indirectly motivated me.

Microsoft Dynamics AX 2012 R3 Financial Management

Microsoft Dynamics AX 2012 R3 Financial Management

In this edition you’ll find an exploration for basic functionalities of Financial Module in Microsoft Dynamics AX 2012 R3 “General ledger, Bank management, Accounts payable, Accounts receivable, Fixed assets, Inventory costing, Cash flow forecast, Financial dimensions, and Financial reporting .”

This all covered in a concept of exploring the functionalities setup, configuration, and how it could be applied in the real business, this in a vary of level of details for each topic.

 

 

The thanks message in the acknowledgement for people who helped, and support me in my entire life is not enough for all of them, there are a lot of other people who give me hints, and share experience, and knowledge. And above all of that Thank God to give me the ability and this opportunity to do all of that.

 

I wish you enjoying your reading, and keep learning from your daily practice.

Troubleshooting "The network path was not found" During AX Report Deployment

$
0
0
During the manual deployment of dynamics AX Reports some errors could occur, one example of this issues when the system return that the Network path was not found. To fix this issue you need to start the...(read more)

Primitive data types in AX 2012

$
0
0
1. Anytype Data Type: Anytype is a placeholder for any data types (integer, real, string, container, class, etc.). Please refer this link for more information. 2. Booleans We can use Boolean for true or...(read more)

AXPulse Advance Payroll Tax Engine for Microsoft Dynamics AX 2012

$
0
0
AXPulse Advance Payroll Tax Engine is an integrated rule and formula based tax engine to help you calculate your payroll taxes. Leverage the power of Microsoft Dynamics AX 2012 R2/R3 HR and Payroll functionalities with AXPulse Payroll Tax Engine to cover your simple to complex… Read More»

Using Technology to Empower the Customer and the Employee – Interview with Pepijn Richter

$
0
0
"We are moving away from automation to see how we can empower people, and look into the future" - Pepijn Richter, Director, ERP Product Marketing, Microsoft

"We are moving away from automation to see how we can empower people, and look into the future" - Pepijn Richter, Director, ERP Product Marketing, Microsoft Corp.

Should technology innovations focus simply on automating processes? What if they also focused on empowering your customers, and your employees?

I was pleased to meet and interview Pepijn Richter, Director, ERP Product Marketing at Microsoft,   during Microsoft’s Convergence 2015 event, and he had a lot to say, not only about the technology advances of Microsoft’s ERP solutions, but also about the trend toward customer and employee empowerment.

“It is the people that propel organizations forward and drive innovation,” commented Pepijn. “In the past, ERP was centered on transactional efficiency. If you look at how Microsoft products are coming together, we are finally helping the people doing day to day tasks to work smarter.  We are moving away from automation to see how we can empower people, and look into the future.”

JJ Food Services

A good example of this approach is JJ Food Services, a UK based distributor of food products that services 60,000 customers, mainly small restaurant owners. They replaced their legacy systems with Microsoft Dynamics AX. Microsoft Dynamics AX now powers the entire operation—from HR, procurement, and sales to inventory/warehouse management and order processing.

Using Technology to Empower the Customer

Pepijn discussed how JJ Food Services uses technology to empower their customers.  “A few years ago, their business changed from a call center to a complete online ordering model for customers.  If you have a call center you have personal connection with the restaurant owner. You have the ability to recommend new products on the phone, to cross sell and upsell.  Moving to an online model, you lose those opportunities because it is only digital engagement.

So they asked: how can we help the restaurant owner and simplify the order process? First, can we prepopulate the order form to make the order processing faster? Second, can we advise them on the next logical purchase, digitally? That is where the Microsoft system comes together.

Using Microsoft Azure Machine Learning (ML) we incorporated a “next logical purchase” algorithm. This is based historical data, which comes traditionally in ERP systems, combined with a customer’s click stream behavior in order to make predictions. The order is prepopulated based on previous orders but also suggestions are made based on what similar customers are ordering.”

JJ Food services has made the online shopping process faster and easier for the customer, and kept them engaged with the company.

Using Technology to Empower the Employee

Technology is also used to empower the JJ Food Services employees. “Sensors were installed that manage the temperature inside their delivery trucks.  Using IoT, the quality of shipments is being monitored and serves as quality control. But the delivery person is so much more enabled; not only do they not have to monitor temperatures manually, but also provide the goods in the right condition to their customer. They can feel confident the job was done right.  JJ Food Service drivers also have mobile apps that allow them to communicate back with headquarters and update their delivery schedules. In this way technology not only delights the customers, it empowers the employees,” said Pepijn.

Delta Airlines

Another good example of this empowerment is Delta Airlines which uses Microsoft Dynamics AX data to power smartphones used as mobile POS devices. These devices have dramatically reduced the amount of time flight attendants have to stand in the aisle to process in flight payments, thus providing a better experience for customers.  But the technology has been extended so that Delta employees can also use the devices to more efficiently bid on flight schedules.  Once again, technology that was intended to help the customer, has also improved the life of employees.

Pepijn concluded: “Research shows that from a business application perspective we always take the customer angle - how to deliver that consistent customer experience wherever you are. But it is so interesting to note that employee satisfaction also rises when you provide those services.

Companies can use technology to improve infrastructure and to run things more efficiently.  But I think we are moving in the direction where organizations can use technology to change business process models.”

Any business person knows that keeping customers happy is the way to win business, but keeping employees happy and productive is the real key to a solid organization. Microsoft recognizes that and is pursuing its technology while focusing also on the human factor.

By ERP Software Blog Editors, www.erpsoftwareblog.com

Enterprise digital transformation still a competitive advantage

$
0
0

While technologies such as mobile, social, data analytics and cloud (third platform) have seen rapid adoption in all industries, most large businesses have yet to achieve true enterprise digital transformation.

34931626_l

While the majority of enterprises have adopted third platform technologies to enable some digital customer experiences, the technologies in most cases are not well integrated with other mission critical software and fail to offer truly innovative solutions to everyday business operations, according to an IDC study.

While most organizations have adopted short-term strategies to digitalization and are cautiously exploring the third platform, only about 8-percent have fully transformed to the digital age and these organizations have a significant advantage over the competition.

“We believe that (digital transformation) integration across the dimensions described in this benchmark — including leadership, work sourcing, omni-experience, operating models, and information — will become the core challenge for business leaders in the next five years,” said IDC’s Senior Vice President of IT Executive, Industry and Financial Research, Meredith Whalen. “Digital transformation is a foregone conclusion for most if not all businesses. The only choice for businesses is whether to hunker down and try to weather those disruptions, develop digital transformation competencies and become a disruptor, or split the difference and become a fast follower of disruptors.”

Many IT departments lack third platform expertise, but offerings such as public cloud services do not always fit the reporting, compliance, functionality and security needs of public companies and global enterprises.

For these organizations it is critical to find a managed service provider who can offer integrated ERP, customer relationship management, social media and industry specific solutions in a unified hosted or cloud based software bundle.  What’s more, they need a service provider who can deliver compliance validated services for SOX, HIPAA, FDA and other industry regulations.

It is possible to achieve enterprise digital transformation and be up and running quickly when you outsource to the right provider.  These organizations would do well to find provider with expertise in compliance and in providing services at the enterprise level.

The post Enterprise digital transformation still a competitive advantage appeared first on RoseASP, INC.

Microsoft Dynamics AX 2012 – Product Configurator as a Service

$
0
0

Microsoft Dynamics AX 2012 –

Product Configurator as a Service

Purpose: The purpose of this document is to illustrate how to leverage Microsoft Dynamics AX 2012 Product Configurator engine from external application.
 
Challenge: For Configure-to-Order businesses Product Configurator is an essential component of the solution. Product Configurator in Microsoft Dynamics AX 2012 is a constraint-based configurator which leverages the power of Microsoft Solver Foundation and OML (Optimization Modeling Language). Product Configurator can be used to address both sales and production configurator needs. Here's the core pieces of information you get as the result of configuration process: Sales price (cost + profit margin), Delivery date, BOM structure, Route structure. In some industries companies tend to utilize specialized configurator solutions which will have to integrate with Microsoft Dynamics AX 2012 and/or will/may be ultimately absorbed/replaced with the capabilities Microsoft Dynamics AX 2012 standard Product Configurator     
 
Solution: In this scenario I have a custom web-based configurator deployed as Cloud App in Azure which implements some specific business logic around rendering 2D/3D images of configured products. In fact I want to leverage Microsoft Dynamics AX 2012 Product Configurator capabilities as a part of Microsoft Dynamics AX 2012 which is my ERP solution of choice. Specifically I'm going to utilize a custom web-based configurator as a front-end when having Microsoft Dynamics AX 2012 Product Configurator on the back-end (nicely linking Quote/Sales Configuration CSR experience with Manufacturing processes). For these purposes I'll turn Product Configurator into a Web Services for external consumption. This may also be a part of a larger migration plans switching towards using Product Configurator to enable the entire Configure-to-Order experience. 
 
Walkthrough
 
We'll start off with a very simple configuration model called "Alex"
 
New product configuration model
In the model I'm going to use 2 variables: A and B of type integer with value range [0, 1]
Attribute types
Constraint-based product configuration model
Now I'll define 2 attributes for A and B
Attributes
Please note that not all combinations of attributes will be allowed. In fact for my model I will define expression constraint stating that "IF A == 1 THEN B == 0] and vice versa
Constraints
This is how my model looks like at runtime
Configure line
Please note that I have to select values for 2 variables A and B on the screen as a part of configuration process. In fact I'll be selecting those values sequentially and in case at some point after my next variable value selection my model is in contradiction the system will let me know about it immediately without waiting until I select all variables values 
Now let's take some time and review how configuration process looks like in more detail
Diagram
We start with conceptual design of the model (Design model defining elements of the model, their types, rules, etc.), after we're done with it we can launch configuration experience. Once you start configuration process you will be dealing with specific values of variables which may be correct or incorrect (Runtime model). As you change the values of variables the system invokes Configuration backend after each change to validate that your model is not in contradiction against the constraints. In case contradiction is detected and one or more constraints are not satisfied the system will immediately notify you so appropriate correction can be made to variable values before you proceed further in configuration process. Once certain state of the model is validated appropriate values of variables will be "fixed" which will be provide you a starting point for the next step/change. Once you specify all necessary variables values and you are ready to see the how much will configuration cost (Sales price) and when it can be delivered (Delivery date) the system will solve the model which will propagate depending values, validate used calculations and make sure that the solution found is feasible. On the last step when model is solved you will save configuration in order to generate associated with source document BOM and Route. Then hand off to Manufacturing will happen manually (Create Production order from Quote/Sales order) or automatically (MRP run)       
Let's see what data structures we can use to invoke Product Configurator engine programmatically
First we'll examine Design model by using Export function which allows to move Product Configurations from one environment to another very easily. This will also provide an insight about how Product Configuration model is structured
Export (Design model)
<Export Version="1">
  <AttributeTypes>
    <EcoResAttributeType Name="AlexInt" DataType="4" IsEnumeration="0" HasBounds="1">
      <EcoResBoundedAttributeTypeValue Lower="0" Upper="1" />
    </EcoResAttributeType>
  </AttributeTypes>
  <TableConstraintDefintions />
  <Components>
    <PCClass Name="Alex" ReuseEnabled="0">
      <EcoResCategoryTranslation FriendlyName="Alex" Description="" LanguageId="en-us" />
      <EcoResAttribute Name="A" SolverName="A" AttributeType="AlexInt" IncludeInReuse="0">
        <EcoResAttributeTranslation FriendlyName="A" Description="A" Language="en-us" />
      </EcoResAttribute>
      <EcoResAttribute Name="B" SolverName="B" AttributeType="AlexInt" IncludeInReuse="0">
        <EcoResAttributeTranslation FriendlyName="B" Description="B" Language="en-us" />
      </EcoResAttribute>
      <PCComponentConstraint Name="AB" Description="AB">
        <PCExpressionConstraint Expression="Implies[ A == 1, B == 0]" />
      </PCComponentConstraint>
    </PCClass>
  </Components>
  <PCProductConfigurationModel Name="Alex" RootComponentClass="Alex" SolverStrategy="0">
    <PCProductConfigurationModelTranslation Name="Alex" Description="Alex" Language="en-us" />
    <PCConfigurationControl>
      <PCComponentControl UIOrder="1" />
    </PCConfigurationControl>
  </PCProductConfigurationModel>
</Export>
 
When I launch configuration Runtime model will be composed which looks like the following
Runtime model
<Model name="Alex"><Component name="Alex" componentId="52565427706" instanceId="1"><Attribute name="A" displayName="A" uniqueId="11290926482" instanceId="2" type="integer"><IntegerDomain from="0" to="1" /></Attribute><Attribute name="B" displayName="B" uniqueId="11290926483" instanceId="3" type="integer"><IntegerDomain from="0" to="1" /></Attribute><Constraint constraintId="AB" uniqueId="11290924754" constraintText="Implies[ A == 1, B == 0]" /></Component></Model>
 
As I go ahead and start changing variables values I'll be doing work within my configuration session. Please note that I'll select some of variables values (UserSelected), but some of variables values will be set by the system automatically based on constraints in place (isUserSelected = 0/1)
UserSelected
<Session><Component name="Alex" uniqueId=""><Attribute name="A" uniqueId="11290926482" isUserSelected="1" type="integer" value="0" /></Component></Session>
 
As I solve the model the system will provide a list of bound values corresponding to a feasible solution for then model
Bound
<Session><Component name="Alex" uniqueId=""><Attribute name="A" uniqueId="11290926482" isUserSelected="1" type="integer" value="1" /><Attribute name="B" uniqueId="11290926483" isUserSelected="0" type="integer" value="0" /></Component></Session>
 
Once background work is done on the backend the system will update user interface properly in Microsoft Dynamics AX 2012. Depending on whether you use Rich Client Product Configurator or Enterprise Portal Product Configurator the user experience may slightly differ
For example, in Rich Client invalid values will be highlighted in the drop-down for Integer with Range variable as shown below
Configure line
Infolog
In case contradiction is detected for the model appropriate infolog will be provided
Infolog
In fact if you use Enterprise Portal configuration experience the appropriate message will provided along with inline data range hint
Configure selected item
Configure selected item - Error
In case contradiction is detected for the model the appropriate message will be provided
Configure selected item - Error
For Enterprise Portal Product Configurator most of X++ interface part is implemented in PCEnterprisePortalMain class (\Classes\PCEnterprisePortalMain) and EPPCConfigurator Web Control. In Rich Client PCRuntimeConfigurator X++ form implements user interface part supported by number of classes. All the backend heavy-lifting is done inside of Microsoft.Dynamics.Ax.Frameworks.ProductConfigurationServer.dll assembly
As a next step I'll consume X++ Product Configurator interface and implement X++ job to invoke Product Configurator backend in order to solve a predefined model
X++ job
staticvoid PCSolveModelJob(Args _args)
{
    InteropPermission interopPermission;
    Microsoft.Dynamics.Ax.Frameworks.Controls.ProductConfiguration.ProductConfigurationServer serverSolver;
   
    str        modelXml = "<Model name=\"Alex\"><Component name=\"Alex\" componentId=\"52565427706\" instanceId=\"1\"><Attribute name=\"A\" displayName=\"A\" uniqueId=\"11290926482\" instanceId=\"2\" type=\"integer\"><IntegerDomain from=\"0\" to=\"1\" /></Attribute><Attribute name=\"B\" displayName=\"B\" uniqueId=\"11290926483\" instanceId=\"3\" type=\"integer\"><IntegerDomain from=\"0\" to=\"1\" /></Attribute><Constraint constraintId=\"AB\" uniqueId=\"11290924754\" constraintText=\"Implies[ A == 1, B == 0]\" /></Component></Model>";
    boolean    isFinished;
   
    str        boundValues;
    str        userSelectedValues_good = "<Session><Component name=\"Alex\" uniqueId=\"\"><Attribute name=\"A\" uniqueId=\"11290926482\" isUserSelected=\"1\" type=\"integer\" value=\"1\" /></Component></Session>";
    str        userSelectedValues_bad = "<Session><Component name=\"Alex\" uniqueId=\"\"><Attribute name=\"A\" uniqueId=\"11290926482\" isUserSelected=\"1\" type=\"integer\" value=\"1\" /><Attribute name=\"B\" uniqueId=\"11290926483\" isUserSelected=\"1\" type=\"integer\" value=\"1\" /></Component></Session>";
    str        userSelectedValues_okay = "<Session><Component name=\"Alex\" uniqueId=\"\"><Attribute name=\"A\" uniqueId=\"11290926482\" isUserSelected=\"1\" type=\"integer\" value=\"0\" /></Component></Session>";
 
    PCExecuteVariantConfiguration   executeVariantConfiguration = PCExecuteVariantConfiguration::construct();
    PCConfigurationState            configurationState = PCConfigurationState::construct();
 
    interopPermission = new InteropPermission(InteropKind::ClrInterop);
    interopPermission.assert();
 
   //bp deviation documented
    serverSolver = new Microsoft.Dynamics.Ax.Frameworks.Controls.ProductConfiguration.ProductConfigurationServer(modelXml);
    serverSolver.set_UserSelectedValues(userSelectedValues_good);
  
    isFinished = serverSolver.Solve();
    if (isFinished)
    {
        info("Feasible solution");
        boundValues = serverSolver.get_BoundValues();
        info(boundValues);
    }
    else
    {
        info("Infeasible solution");
    }
 
    CodeAccessPermission::revertAssert();
}
 
In the code above I used all the data structures described at the beginning. Please note that I also supplied 3 types of UserSelectedValues to simulate various outcomes after solving: feasible complete model, feasible incomplete model and infeasible model
Let's review these intermediary results
Example 1 – Good/Feasible/Complete: A = 1
Input
<Session><Component name="Alex" uniqueId=""><Attribute name="A" uniqueId="11290926482" isUserSelected="1" type="integer" value="1" /></Component></Session>
 
Result
<Session><Component name="Alex" uniqueId=""><Attribute name="A" uniqueId="11290926482" isUserSelected="1" type="integer" value="1" /><Attribute name="B" uniqueId="11290926483" isUserSelected="0" type="integer" value="0" /></Component></Session>
 
Example 2 – Bad/Infeasible: A = 1 && B = 1
Input
<Session><Component name="Alex" uniqueId=""><Attribute name="A" uniqueId="11290926482" isUserSelected="1" type="integer" value="1" /><Attribute name="B" uniqueId="11290926483" isUserSelected="1" type="integer" value="1" /></Component></Session>
 
Result
 
 
Example 3 – Okay/Feasible/Incomplete: A = 0
Input
<Session><Component name="Alex" uniqueId=""><Attribute name="A" uniqueId="11290926482" isUserSelected="1" type="integer" value="0" /></Component></Session>
 
Result
<Session><Component name="Alex" uniqueId=""><Attribute name="A" uniqueId="11290926482" isUserSelected="1" type="integer" value="0" /></Component></Session>
 
Please note that I can parse returned results to find out whether my solution is feasible or not based on selected variables values 
When I introduce my changes to variables values the system does appropriate checks for solution feasibility, thus after each step variables values I selected will be "fixed" for the next configuration step
Let's review how my session details look like as I move along changing variables values
"Fixed" values
Scenario
Before
After
A = 0
<Session><Component name="Alex" uniqueId="" /></Session>
<Session><Component name="Alex" uniqueId=""><Attribute name="A" uniqueId="11290926482" isUserSelected="1" type="integer" value="0" /></Component></Session>
A = 1
<Session><Component name="Alex" uniqueId="" /></Session>
<Session><Component name="Alex" uniqueId=""><Attribute name="A" uniqueId="11290926482" isUserSelected="1" type="integer" value="1" /></Component></Session>
B = 0
<Session><Component name="Alex" uniqueId="" /></Session>
<Session><Component name="Alex" uniqueId=""><Attribute name="B" uniqueId="11290926483" isUserSelected="1" type="integer" value="0" /></Component></Session>
B = 1
<Session><Component name="Alex" uniqueId="" /></Session>
<Session><Component name="Alex" uniqueId=""><Attribute name="B" uniqueId="11290926483" isUserSelected="1" type="integer" value="1" /></Component></Session>
A = 0, B = 0
<Session><Component name="Alex" uniqueId=""><Attribute name="A" uniqueId="11290926482" isUserSelected="1" type="integer" value="0" /></Component></Session>
<Session><Component name="Alex" uniqueId=""><Attribute name="A" uniqueId="11290926482" isUserSelected="1" type="integer" value="0" /><Attribute name="B" uniqueId="11290926483" isUserSelected="1" type="integer" value="0" /></Component></Session>
A = 0, B = 1
<Session><Component name="Alex" uniqueId=""><Attribute name="A" uniqueId="11290926482" isUserSelected="1" type="integer" value="0" /></Component></Session>
<Session><Component name="Alex" uniqueId=""><Attribute name="A" uniqueId="11290926482" isUserSelected="1" type="integer" value="0" /><Attribute name="B" uniqueId="11290926483" isUserSelected="1" type="integer" value="1" /></Component></Session>
A = 1, B = 0
 
 
A = 1, B = 1
<Session><Component name="Alex" uniqueId=""><Attribute name="A" uniqueId="11290926482" isUserSelected="1" type="integer" value="1" /></Component></Session>
The value entered is not valid; it is either outside the defined domain range or it would contradict model constraints
B = 0, A = 0
<Session><Component name="Alex" uniqueId=""><Attribute name="B" uniqueId="11290926483" isUserSelected="1" type="integer" value="0" /></Component></Session>
<Session><Component name="Alex" uniqueId=""><Attribute name="A" uniqueId="11290926482" isUserSelected="1" type="integer" value="0" /><Attribute name="B" uniqueId="11290926483" isUserSelected="1" type="integer" value="0" /></Component></Session>
B = 0, A = 1
<Session><Component name="Alex" uniqueId=""><Attribute name="B" uniqueId="11290926483" isUserSelected="1" type="integer" value="0" /></Component></Session>
<Session><Component name="Alex" uniqueId=""><Attribute name="A" uniqueId="11290926482" isUserSelected="1" type="integer" value="1" /><Attribute name="B" uniqueId="11290926483" isUserSelected="1" type="integer" value="0" /></Component></Session>
B = 1, A = 0
 
 
B = 1, A = 1
<Session><Component name="Alex" uniqueId=""><Attribute name="B" uniqueId="11290926483" isUserSelected="1" type="integer" value="1" /></Component></Session>
The value entered is not valid; it is either outside the defined domain range or it would contradict model constraints
 
As you can see I will not be able to proceed forward with infeasible solution (model in contradiction) in case I select variable value which doesn't satisfy at least one constraint
At this point I am able to solve the model, identify whether my solution is feasible or not for the selected variables values, thus consequently I'm going to turn this business logic into a Web Service for external consumption
But before I do that let me quickly implement my custom web-based configurator hosted in Azure
The idea of this configurator will be to implement a specific rendering for 2D/3D images required in my business and at the same time leverage Microsoft Dynamics AX 2012 Product Configurator back-end
I'll use ASP.NET to create a web site project
New Project 
I'll use MVC (Model-View-Controller) template
New ASP.NET Project
I'll change it authentication settings to "No authentication" for the sake of simplicity
Change authentication
Next I'll implement a Controller
Controllers > Add new > Controller
Add Controller
Controller
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
 
namespace AlexConfigurator.Controllers
{
    publicclassABController : Controller
    {
        // GET: AB
        publicActionResult Index()
        {
            return View();
        }
    }
}
 
Then I'll implement View
Views > AB > Add View
View code will be provided below (once I fully implement it)
And finally Model
Models > Add new > Class
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
 
namespace AlexConfigurator.Models
{
    publicclassAB
    {
        publicint A { get; set; }
        publicint B { get; set; }
    }
}
 
This is how my project looks like in Solution Explorer
Solution Explorer
Controllers
Models
Views
Now it is a time to come back and implement View. In this implementation I added a few controls to manipulate with configuration variables, image of rendered object (2D/3D) and a few buttons to kick off rendering and invoke Microsoft Dynamics AX 2012 Product Configurator
Index.cshtml
 
@{
    ViewBag.Title = "Index";
 
    var a = Request.Params["A"];
    var b = Request.Params["B"];
 
    var output = "";                     
 
    var service = new AlexConfigurator.ServiceReference1.AlexConfiguratorServiceClient();
 
    service.ClientCredentials.Windows.ClientCredential.Domain = "contoso";
    service.ClientCredentials.Windows.ClientCredential.UserName = "Admin";
    service.ClientCredentials.Windows.ClientCredential.Password = "pass@word1";
 
    var context = new AlexConfigurator.ServiceReference1.CallContext();
 
    context.Company = "usmf";
 
    var ret = service.solve(context, a.AsInt(), b.AsInt());
 
    if (ret == true)
    {
        output = "Feasible";
    }
    else
    {
        output = "Infeasible";
    }
 
    ViewBag.Title = output;
}
 
<scripttype="text/javascript">
    function Render() {
        var textA = document.getElementById('TextA');
        var textB = document.getElementById('TextB');
 
        var img = document.getElementById('Img');
        var textAreaOutput = document.getElementById('TextAreaOutput');
 
        if (textA.value == "" || textB.value == "" || (textA.value == "0"&& textB.value == "0")) {
            img.setAttribute("src", "/Images/NANB.png");
            textAreaOutput.textContent = "NANB";
        }
        elseif (textA.value == "0"&& textB.value == "1") {
            img.setAttribute("src", "/Images/NAB.png");
            textAreaOutput.textContent = "NAB";
        }
        elseif (textA.value == "1"&& textB.value == "0") {
            img.setAttribute("src", "/Images/ANB.png");
            textAreaOutput.textContent = "ANB";
        }
        elseif (textA.value == "1"&& textB.value == "1") {
            img.setAttribute("src", "/Images/AB.png");
            textAreaOutput.textContent = "AB";
        }
    }
 
    function Configure() {
        var textA = document.getElementById('TextA');
        var textB = document.getElementById('TextB');
 
        var url = "Index?"+ "A="+ textA.value.toString() + "&"+ "B="+ textB.value.toString();
       
        return url;
    }
</script>
 
<h2>AlexConfigurator</h2>
 
A:<inputid="TextA"type="text"value="@a"/>
</br>
B:<inputid="TextB"type="text"value="@b"/>
</br></br>
<imgid="Img"src="~/Images/NANB.png"alt=""/>
</br></br>
<inputid="ButtonRender"type="button"value="Render"onclick="Render()"/>
&nbsp;
<inputid="ButtonConfigure"type="button"value="Configure"onclick="document.location.href(Configure())"/>
</br></br>
<textareaid="TextAreaOutput"rows="2"cols="20">@output</textarea>
 
Please note that I use URL parameters to pass A and B values to the web site. As I parse out the values of A and B I invoke Microsoft Dynamics AX 2012 Product Configurator business logic
Now let's review how I implemented Microsoft Dynamics AX 2012 Custom Web Service to wrap up Product Configurator business logic and make it available for external consumption
For this walkthrough I used instance of Microsoft Dynamics AX 2012 R3 deployed in the Cloud using LCS
I enabled HTTP/HTTPS endpoint on the VM in order access the Web Service 
Azure Portal
Then I implemented Data Contract and Service Contract for the new Web Service
Data Contract
[DataContractAttribute]
publicclass AlexConfiguratorContract
{
    int a;
    int b;
}
[DataMemberAttribute]
publicint A(int _a = a)
{
    a = _a;
 
    return a;
}
[DataMemberAttribute]
publicint B(int _b = b)
{
    b = _b;
 
    return b;
}
 
Service Contract
class AlexConfiguratorService
{
}
[SysEntryPointAttribute(true)]
publicboolean solve(int _a, int _b)
{
    InteropPermission interopPermission;
    Microsoft.Dynamics.Ax.Frameworks.Controls.ProductConfiguration.ProductConfigurationServer serverSolver;
 
    str        modelXml = "<Model name=\"Alex\"><Component name=\"Alex\" componentId=\"52565427706\" instanceId=\"1\"><Attribute name=\"A\" displayName=\"A\" uniqueId=\"11290926482\" instanceId=\"2\" type=\"integer\"><IntegerDomain from=\"0\" to=\"1\" /></Attribute><Attribute name=\"B\" displayName=\"B\" uniqueId=\"11290926483\" instanceId=\"3\" type=\"integer\"><IntegerDomain from=\"0\" to=\"1\" /></Attribute><Constraint constraintId=\"AB\" uniqueId=\"11290924754\" constraintText=\"Implies[ A == 1, B == 0]\" /></Component></Model>";
    boolean    isFinished;
 
    str        boundValues;
 
    str        userSelectedValues = strFmt("<Session><Component name=\"Alex\" uniqueId=\"\"><Attribute name=\"A\" uniqueId=\"11290926482\" isUserSelected=\"1\" type=\"integer\" value=\"%1\" /><Attribute name=\"B\" uniqueId=\"11290926483\" isUserSelected=\"1\" type=\"integer\" value=\"%2\" /></Component></Session>", _a, _b);
 
    PCExecuteVariantConfiguration   executeVariantConfiguration = PCExecuteVariantConfiguration::construct();
    PCConfigurationState            configurationState = PCConfigurationState::construct();
 
    boolean ret = false;
 
    interopPermission = new InteropPermission(InteropKind::ClrInterop);
    interopPermission.assert();
 
    //bp deviation documented
    serverSolver = new Microsoft.Dynamics.Ax.Frameworks.Controls.ProductConfiguration.ProductConfigurationServer(modelXml);
    serverSolver.set_UserSelectedValues(userSelectedValues);
 
    info(userSelectedValues);
 
    isFinished = serverSolver.Solve();
    if (isFinished)
    {
        boundValues = serverSolver.get_BoundValues();
        ret = true;
    }
    else
    {
        ret = false;
    }
 
    CodeAccessPermission::revertAssert();
 
    return ret;
}
 
Please note that in order to avoid "CIL generation: Error: .NET Cast Type Name not found" error associated with interopPermission object you have to copy Microsoft.Dynamics.AX.Xpp.Support.dll from Server Bin folder into Client Bin folder and then regenerate Full CIL
Then I created Web Service pointing to Service Contract class created earlier
Service
And then I created appropriate Inbound port
Inbound ports
Select service operations
After deploying Service you will get WSDL: http://ax2012r3-demo-XYZ.cloudapp.net/MicrosoftDynamicsAXAif60/AlexConfigurator/xppservice.svc
RoutingService Service
This WSDL you can use to add to Service Reference to your ASP.NET project in order to consume SOAP service exposed from Microsoft Dynamics AX 2012
Add Service Reference
Please note that in order to avoid errors when adding Service reference to the project I copied the entire project to Microsoft Dynamics AX 2012 Demo VM, added Service reference there (on the same machine where Web Service was exposed from) and then copied the entire project back to my local machine to continue working on it. The only thing which was left to do was to substitute "ax2012r2a.contoso.com" to "XYZ.cloudapp.net" in Web.config file for Web Service to be called properly from external application
It is important to mention that some classes being called in PCExecuteVariantConfiguration::construct() are set up to be executed on the Client. In fact because CIL Web Service code is executed on the Server you will face with runtime exception. In order to avoid runtime exception as a workaround I commented out a few lines of code related to UI processing
\Classes\PCExecuteVariantConfiguration\new
protectedvoidnew()
{
    executeSupplyLocation               = PCExecuteSupplyLocation::construct();
    sourceDocumentLineUtility           = PCSourceDocumentLineUtility::construct();
    validationNumberSequence            = PCValidationNumberSequence::construct();
    backEndConfiguration                = PCBackEndConfiguration::construct();
    xmlParseConfigurationInstance       = PCXmlParseConfigurationInstance::construct();
    configurationProductVariantFactory  = PCConfigurationProductVariantFactory::construct();
    configurationProductVariantDelete   = PCConfigurationProductVariantDelete::construct();
    releaseLegalEntities                = new List(Types::Record);
    //alex:>>
    //runtimeConfiguratorFormFactory      = PCRuntimeConfiguratorFormFactory::construct();
    //priceBreakdownUpdater               = PCRuntimePriceBreakdownUpdater::construct();
    //alex:<<
}
 
The following classes have RunOn property set to "Client": PCRuntimeConfiguratorFormFactory and PCRuntimePriceBreakdownUpdater. After introducing any changes you have to regenerate CIL (I regenerated Incremental CIL in this case)
Once Web Service is ready to go and my custom web-based configurator code is code I can deploy web site to Azure by clicking Project > Publish in Solution Explorer. Then I can review newly deployed web site on Azure Portal
Azure Portal
At this point I can launch my custom configuration experience at http://alexconfigurator.azurewebsites.net/AB/Index
Because I allowed passing URL parameters for A and B variables values I can now test 2 scenarios for having feasible solution and infeasible solution. Please note that I leverage Microsoft Dynamics AX 2012 Product Configurator engine on the backend and consume results after solving the model in my custom web site  
Infeasible solution
Feasible
Summary: In this document I explained how invoke Microsoft Dynamics AX 2012 Product Configurator business logic from external application. This scenario is useful in the case you have your own custom configurator front-end you would like to keep in place for number of reasons (as a part of migration strategy or to support specific business workloads), but still be able to leverage Microsoft Dynamics AX 2012 Product Configurator back-end. In particular we explored how to solve the model with selected variables values. Similarly you can leverage Product Configurator X++ interface to on demand calculate Sales Price, calculate Delivery Date to be displayed in custom configurator front-end, "Fix" selected variables values in process of configuration, and still have all business data and product models in Microsoft Dynamics AX 2012. Please consider reviewing then following methods in ProductConfigurationServer class (Microsoft.Dynamics.Ax.Frameworks.Controls.ProductConfiguration.ProductConfigurationServer)for more details:  solve, fixValue and navigateToComponent.
 
Author: Alex Anikiev, PhD, MCP
Viewing all 17314 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>