I recently hit an issue where a lines record with a menu item button was not opening an associated form with the selected record. Normally, adding the menu item button to the form and tieing it to the data source would open the new form showing the record that I had selected on the previous grid.
The ultimate goal was to have a number of lines available in a details grid, select a record, and click a button which would open a new form and show an editable XML for data manipulation. A feature like this is absolutely imperative for interfaces. I've written similar functionality into existing interfaces but this one was tripping me up for some reason.
This is like AX Development 101 stuff. For some reason, there were things on this form preventing it from opening as it should. The normal methods were running short and I didn't want to resort to the menu item parameters via X++ yet. There had to be a way to do this some other way since it was not complex.
In poking around a bit more, I set the 'CopyCallerQuery' property to 'Yes' instead of 'Auto' and the issue was resolved. See below for the menuItemButton having this property set to Yes.
I've never had to set this parameter before so I think the Auto was automatically triggering to 'Yes' but in this case, reverting to 'No'. Again, I've never encountered this before so I'm not sure why it would revert to 'No'. I did not investigate as to why this was happening, but did feel it important to post about. Hope it helps someone out. Even just one and this post is justified. #TigerBlood #Winning
UPDATE (3hrs after posting): Figured out the issue. Just tired so I didn't think of it at the time. I was calling a form which had that selected record from the caller form as the primary data source. There were no table relations as it was the same record. If the primary table on the second form is a different table with relations in place, the form would be fine without the parameter set below.
A blog (primarily about Dynamics AX/D365) covering topics like X++, AX for Retail, D365 Commerce, Trade and Logistics, retail concepts, warehousing, etc. Something for everyone. Grab bag blog for whatever I think would help out people in the Dynamics AX/Commerce/Retail community. The opinions expressed on this site are my own and do not necessarily represent the views of my company
Saturday, June 21, 2014
Sunday, June 1, 2014
Retailing in the modern world Pt III - The careful balance in maximizing profits
The goal of a business is to make
profit. You need to increase profit in order to grow or sustain a business. You
can increase profit by lowering costs and/or increasing revenue. How do you do
this? That can literally be the million dollar question. It can also be the
question standing between your business and prosperity. The answer can vary
from industry to industry and the key to finding it depends on number of
factors ranging from timing to personalities to ideologies. The answer will
also change as the retail landscape continues to evolve at an ever increasing
rate.
The key here is to really know your client's business intimately. Even if you know their industry, do you know your client's secret sauce? Do those industry secrets change the way various sales channels should be leverage? More than likely, its a resounding yes. Truly understanding an organization is a key component to turning a good strategy into a great one.
The next series of posts will analyze the various retail channels mentioned in Pt 1 of the Retailing in the modern world series: http://daxdude.blogspot.com/2014/05/retailing-in-modern-world-pt-i-business.html
When determining what path to take,
remember that there is a delicate balance between reducing costs and increasing
revenue. As an example, If you reduce costs by using cheaper parts, you may be
making an inferior product. This may result in fewer purchases and more returns
thus lower revenue. On the other hand spending too much money on something,
like a mobile app for your company, can increase your costs and thus lower your
profits.
How do you know where to skimp and where to splurge?
As stated in previous posts in this series, the answer is
different from channel to channel and industry to industry. What may work for
the restaurant industry may not work for the wine industry. What works for a
textile producer may not work for a clothing manufacturer. From a consultants perspective, how will you know how to advise your clients' positioning for optimal revenue growth? The key here is to really know your client's business intimately. Even if you know their industry, do you know your client's secret sauce? Do those industry secrets change the way various sales channels should be leverage? More than likely, its a resounding yes. Truly understanding an organization is a key component to turning a good strategy into a great one.
The next series of posts will analyze the various retail channels mentioned in Pt 1 of the Retailing in the modern world series: http://daxdude.blogspot.com/2014/05/retailing-in-modern-world-pt-i-business.html
Wednesday, May 28, 2014
Retailing in the modern world Pt II - Omni-channel vs Multi-channel buzz words
It is a big buzz word to say
'omni-channel retail' in today's world but what does that mean? Is it the same
as multi-channel? No. Then what is the difference? Depends on
interpretation.
Multi-channel
retail – involves
both the sales and supply chain aspects of a retail channel independent of any
other channel
Omni-channel
retail – same definition as
multi-channel but involves integrating the various channels to create a
seamless, 360 degree experience for the customer. For example, it is creating a
wish list on the website and continuing your order from any other channel.
Really, omni-channel
is an evolved iteration of multi-channel that was created as time went by and
systems didn’t have to be disjointed solutions. When technologies like mobile first
came out, they were completely separate worlds from existing retail channels that
relied heavily on integrations and imports/exports. There were commonly large
lags and discrepancies in data due to physical and data limitations of the
time. Now that the concepts have been around for a while now and limitations
reduced, solutions for that retail channel can be improved with interfaces
reduced and optimized if existent at all.
Omni-channel
is also a bit of a sales buzz word. Elements of the 360 view existed in systems
that were dubbed multi-channel at the time. When things improve significantly, it
helps to have a new name or something to distinguish it as new and an
improvement. For instance, omni-channel sounds better than multi-channel. Xbox 360
is better than Xbox. PS4 is better than PS2.
However you define and view it, it
all boils down to improving a seamless customer experience to assure a consistently
exceptional experience. How do you best accomplish this? Have a centralized
location for your ‘One version of the truth’.
What are the aspects of the seamless
experience?
·
Branding
·
Pricing, Discounts, Shipping, and
Taxes
·
Channel Management & Publishing
·
Catalog Management Enrichment &
Publishing
·
Customer Management
·
Merchandising
·
EOD & Financials
·
Order Management & Fulfillment
·
BI/Reporting
·
Payment Processing
·
Inventory & Replenishment
As an example of a fully integrated
omni-channel situation, if a customer has special pricing for an item at 9am on
a specific day, they should be able to engage any retail channel at 9am and see
consistent pricing across the board. It doesn’t seem like a big deal until you
are encounter a situation where it isn’t working. These incongruences between
systems is where some internet discount sites get their ‘hacker’ pricing or
discounts. When I see these, it always makes me as a consumer second guess if I’m
truly getting the best price from the same company.
Wednesday, May 21, 2014
Retailing in the modern world Pt I - Business marketing and sales channels
I'm going to write a series
of posts relating to various retail channels and concepts in each. I hope they
are informative to you. This is part one but look for the rest of the series to come out in the next few weeks. That being said, here is post one:
People generally specify marketing
channels into two classifications: 1) Business to Business (B2B) and 2)
Business to Consumer (B2C). Both channels are geared towards enticing increased
revenues by optimizing the sales in retail channels via strategic planning for
certain customers. They often share the same retail channels types to
accomplish this.
What are the 3 big differences between B2B and B2C channels?
Customers: B2B channels are sales avenues between businesses while B2C are typically sales avenues for end-users of a product or service
What are the 3 big differences between B2B and B2C channels?
Customers: B2B channels are sales avenues between businesses while B2C are typically sales avenues for end-users of a product or service
Marketing: B2B
sales are typically marketed through trade shows or mutual business
associations while B2C are marketed through advertising, retail channels, or
word of mouth.
Revenue: Generally, B2B transactions are larger in revenue and volume. The volume may be higher in this avenue but at the expense of margin (sales price). Quick note: Overhead may be lower in an organization with no brick and mortar and just B2B via portals and catalog sales
What are the different channels of B2B and B2B retailing?
Revenue: Generally, B2B transactions are larger in revenue and volume. The volume may be higher in this avenue but at the expense of margin (sales price). Quick note: Overhead may be lower in an organization with no brick and mortar and just B2B via portals and catalog sales
What are the different channels of B2B and B2B retailing?
- Brick and Mortar stores
- Online (E-commerce) stores (including B2B portals)
- Call Centers (telephone orders/support)
- Mobile stores
- Kiosks
- Catalogs
- 3rd party direct sales
As the 'Retailing in the modern world' series goes on, we will look into the above channels in deeper detail in regards to increasing revenue, brand awareness, and leveraging technology to optimize these channels (my favorite topic!). Stay tuned for more in this series!
Tuesday, May 13, 2014
AX 2012 - Conditionally hide a form control by current record
Occasionally we will need to change the accessibility of a certain controls/fields on a form in Dynamics AX. This can either be to hide/disable or show/enable the field from the user based on the current record they are on.
This is a pretty easy mod to do. Just follow the steps below. I'm using the example of hiding the field but you can just disable/enable the field from editing if you want using the allowEdit() property.
Your situation may be more complicated but this is meant to be a simple example.
Test your logic. Its pretty common people will have a field or button default a property to true/false, not not change the field again when moving to a new record. That means that the control will not have the value you want
Enjoy!
This is a pretty easy mod to do. Just follow the steps below. I'm using the example of hiding the field but you can just disable/enable the field from editing if you want using the allowEdit() property.
Your situation may be more complicated but this is meant to be a simple example.
- Set the target form control's 'AutoDeclaration' property to 'yes'. by default it should be false
- For the primary record (e.g. in the grid), override the datasource's active() override if it is not already.
- After the super(), put the form control name in with the visible property. If you hit the period after the form control name and nothing pops up, 1) make sure the form control is spelled correctly and 2) check step 1 again to make sure the control has its autoDec set to yes.
- If the conditionals for the field to show up are complex, you might have logic and the visible property just assigning true/false, yes/no, etc outright. Example: FormControl_FieldName.visible(true);
- If the conditional is simple, like seeing if a field is a boolean or a type of a base enum, you can put the conditional statement in the parameters Example: FormControl_FieldName.visible(DSTableName.BaseEnumField == BaseEnum::Value2);
Test your logic. Its pretty common people will have a field or button default a property to true/false, not not change the field again when moving to a new record. That means that the control will not have the value you want
Enjoy!
Thursday, May 8, 2014
The case for renaming AX 2012 R3 Call Center module to Order Management
In AX 2012 R3, there is a new module added called 'Call Center'. This module finally adds the functionality of a call center to the AX backoffice scene. With this, all of the retail functionality that was extended to the various retail channels (POS, ecommerce, mobile, etc) that previously was not available to AX sales orders now is available without the need for backoffice workers to open an instance of the POS.
That being said, a common question I've been getting from colleagues and clients is "What is this 'call center' exactly". Personally, I think the name is misleading and confusing. There are features in that module that everyone wants but not everyone wants a call center. Do they now need a call center to leverage these features? The short answer is no.
To curb this, I've been changing the label of the module from 'Call center' to 'Order management' when I show the functionality. Why? Call centers are a single retail channel. They beg for the image of a person with a headset talking to customers directly either for cold calling, taking orders, or customer service. Order management is not a retail channel and paints a picture of being able to look at sales orders in a broader sense to encompass multiple functions for orders. It also happens to include call centers, club management/continuity orders (like a wine club), order fraud detection across multiple retail channels, catalog management, payment management, etc. The 'Call centers' module in AX is so much more than just a module for a single retail channel.
While some may disagree with me wanting to change this label, I will respectfully disagree. I was asked questions 100% of the time in regards to why functionality like continuity management and serialized coupons were in call center. Now, the name order management seems to better explain the functionality it has that previously seemed displaced.
The choice is yours!
That being said, a common question I've been getting from colleagues and clients is "What is this 'call center' exactly". Personally, I think the name is misleading and confusing. There are features in that module that everyone wants but not everyone wants a call center. Do they now need a call center to leverage these features? The short answer is no.
To curb this, I've been changing the label of the module from 'Call center' to 'Order management' when I show the functionality. Why? Call centers are a single retail channel. They beg for the image of a person with a headset talking to customers directly either for cold calling, taking orders, or customer service. Order management is not a retail channel and paints a picture of being able to look at sales orders in a broader sense to encompass multiple functions for orders. It also happens to include call centers, club management/continuity orders (like a wine club), order fraud detection across multiple retail channels, catalog management, payment management, etc. The 'Call centers' module in AX is so much more than just a module for a single retail channel.
While some may disagree with me wanting to change this label, I will respectfully disagree. I was asked questions 100% of the time in regards to why functionality like continuity management and serialized coupons were in call center. Now, the name order management seems to better explain the functionality it has that previously seemed displaced.
The choice is yours!
Sunday, April 27, 2014
AX 2012 Error in loading label file. How to import new label files
I needed to import some mods into a new environment and also include the label files. The label file from the AOT was exported into the XPO, but when attempting to import the file (Figure 1), I was receiving an error 'expected LABELFILE but found LANGUAGES' (Figure 2). From what I can gather the XPO only has language information of the label file but will not actually create the label file. This creates an issue on import. If we want the whole label file in the new environment (like I do), we should go a different route which I will explain below.
NOTE: This is just one way to move the labels. There are other methods. Choose the appropriate one for your situation
Figure 1 - Import attempt of label file via XPO
Figure 2 - The error trying to import a new label file via XPO
In the source environment, navigate out to the label you want to move to the new environment. Expand out nodes so you can see the language you need to migrate. Right click on the language (en-us for my example) and select 'Export to Label file' (Figure 3). You will need to select a location to save your .ald file for later import into the destination environment where you want the label.
The .ald file ('application label data' I believe) should look familiar to people from the previous versions of AX. In those previous versions there were also .ali (label index) and .alc (label cache) files. Just to clarify, depending on how you did the move in previous versions of AX, you didn't need to move those two files during migration; just moving the .ald would be sufficient. That is why in the method I'm showing, you only need to import the .ald file. The .ald file contains all the actual label data.
Figure 3 - The 'Export to Label file' option
In the destination environment, right click on the 'Label files' node of the AOT. Select the 'Create from File' option (Figure 4). Again, to avoid confusion, this is for moving a label file with all of its contents to a new environment where the label doesn't exist. Select the .ald file exported from the source environment and click ok. You will receive a confirmation of the import (Figure 5).
At this point, you should see the new label file in your AOT. In my instance, it had a red line to the left of it indicating that the object needed to be saved. When right clicking on the new label file object in the AOT, I did not have an option to save the label like you can have on other objects. To save the file, I had to select the new object with the red line, then click the 'Save all' button in the AOT window tool bar (Figure 6). This saved the object.
That should be all you need!
Figure 4 - 'Create from File' option when right clicking on the 'Label Files' node in the AOT
Figure 5 - The imported label file confirmation
Figure 6 - Highlight the imported label and click the 'save all' button in the AOT window
Subscribe to:
Posts (Atom)


