AX 2012 Code Promotion & Environment Refresh
Order events in Microsoft Dynamics 365 for Finance and Operations
Vendor collaboration in Microsoft Dynamics 365 for Finance and Operations
How Manufacturers Capitalizing on Technology Will Compete, Serve Customers Better
What Functionality Exists for Product Compliance in Dynamics 365 for Finance & Operations?
Many businesses have the need to manage some level of product or inventory compliance in conjunction with various regulations or requirements. The good news is that Dynamics 365 for Finance and Operations can assist with this!
This blog provides both an overview of the functionality that exists for product compliance in Dynamics 365 for Finance and Operations AND links to more detailed information to get you started with leveraging them. To better understand which areas might be the of the most interest, let’s review some terminology.
Regulated product:
A product should be identified as a regulated product if it is regulated by a government agency. There are various types of compliance needs and audit reporting may also be required.
Regarding regulated products, there is the ability to create lists by country or region. For each list, the regulated products are assigned. There is also the ability to create a report relationship to each list. Regulated product settings are covered in Managing Product Safety Data Sheets in Dynamics 365 for Finance and Operations.
Restricted product:
A product is defined as a restricted product if the distribution of this product is limited or constrained by a government agency.
Inclusive and exclusive lists may be established to support the restricted product handling in the system. Products identified on exclusive lists are not permitted to be shipped to the restricted areas or regions. To find out more about using this feature, please see Working with Restricted Products in Dynamics 365 for Finance and Operations.
Reported product:
In conjunction with regulation, a reported product is subject to a reporting requirement established at a regional or national authority level. Typically, the reporting requirement is that a company or business must report on the usage of such a product.
Reporting for individual and identified authorities or agencies may be established. To find out more about using this feature, please see Generating Product Compliance Reports in Dynamics 365 for Finance and Operations.
Product safety data sheet:
A product safety data sheet is a document that contains information regarding potential hazard, safe handling, emergency guidance, and other related information about the product. These are also known as material safety data sheets.
Dynamics introduces compliance administration functionality to assist in both ensuring that the current documents are obtained and updated as needed. These documents may be viewed in the system and validated as a current version. Documents missing, expired, or nearing expiration may be identified and directed to the attention of a compliance manager. The management of both sales (outgoing) and procurement (incoming) safety data sheets is contained here: Managing Product Safety Data Sheets in Dynamics 365 for Finance and Operations.
If you’d like to learn more about how D365 for Finance and Operations can help you with product or inventory compliance. Contact Stoneridge Software here. I'd love to visit with you!
About the Author:
Tammy Plowman is a Principal Consultant at Stoneridge Software. Tammy has an extensive background in accounting, including her role as the Comptroller for the Iowa Alcoholic Beverages Division immediately prior to joining Stoneridge Software. She has been working with Microsoft Dynamics AX since 2004, with much of this time during her nine-year tenure at Marshalltown Company.
How deploy a metadata or X++ hotfix [D365FO]
Here I’m going to share how to deploy a metadata or X++ hotfix using Visual Studio menu. Follow below steps to get this done. I strongly recommend using VSTS check in once hotfix deployed. Of course, you don't have RDP access other than DEV environment so this option should be for DEV servers only.
Let's start by getting into your dev machine (RDP access).
1. Open Visual studio as admin
2. GO to D365> addins
3. Next windows
Browse metadata hotfix file
The file must be unzipped from a folder.
4. Click on prepare button
You will get an info log for completion
5. Now click on apply
Get Infolog once complete
6. Sometimes these changes don’t come in pending changes for VSTS. In that case, you may need to add manually in VSTS branch. Go to Source control > <VSTS branch> > Metadata folder> Right click and select “Add Items to folder”. Don’t create any folder manually, the system must create respective folders automatically when you add an item.
7. Now you must check-in the code using VSTS. So same can be added in next deployment package next level environment.
8. Do a build and DB sync. Your Environment must be ready for use.
Thanks Guys, Enjoy….
Harry.
Query::Insert_Recordset and Crosscompany
Executive Q&A: How manufacturers can benefit from robotic process automation
Error - "... Dates must be in same fiscal year."
I get this error more regularly than I like. You will find this specific error message
"From date is in fiscal year xxxx. To date is in fiscal year xxxx. Dates must be in same fiscal year."
What typically happens is that you get this message and the dates that you have specified are actually BOTH in the same fiscal year. (Head scratching then ensues!)
To resolve this issue - you (or your AX System Administrator) will need to refresh the xxx cache. This task is a quick and easy task. The user experiencing the issue will then need to log out of AX and reenter after the cache refresh and the trial balance report will work accurately.
1. Access the AOT (CTRL +D).
2. Navigation: Tools > Caches > "Refresh Dictionary" and "Refresh Data"
Again these actions do not take long. Also if this issue is being experience in one or more company(s) and not others ... refreshing the caches will correct this in all companies. Nothing is needed to refresh on an individual company per company basis.
Warehousing in Dynamics 365, Finance and Operations
Join the next D365UG/AXUG Chapter meeting in London on June 21st!
Are you a Dynamics 365 or AX user located in or near London? Would you like to hear from Microsoft and other experts about the importance of Change management and latest developments around Dynamics 365 & AX? Join the upcoming D365UG/AXUG Chapter meeting in London on June 21st. During this meeting, five sessions have been put in place to help you as a Dynamics 365 and/or AX user get ready for the future.
Register Now
When: Thursday June 21st 2018 from 10am to 4pm
Where: Microsoft Paddington Office, Kingdom Street, Paddington, London W2 6BD. Room Notting Hill.
Agenda:
10.00 – 10.15 | Welcome & Introduction |
10.15 – 11.00 | Business Applications Pillars of Success: The Importance of Change Management on Adoption by Gillian Naish from Microsoft |
11.15 – 12.00 | Microsoft Dynamics 365 for Talent – Engaging your employees from hire to retire by Ben Shrive and Harsharn Puar from Ebecs |
12.00 – 13.00 | Lunch |
13.00 – 13.45 | A winning formula: Maximizing your sales online with Microsoft Dynamics by Eleanor Walsh from Sana Commerce |
14.00 – 14.45 | Learn how to maximize your Microsoft ERP investment by mobilizing your warehouse by Chris Lea from DSI |
15.00 – 16.00 | Deliver actionable insight and realize real value from your ERP investment by Fouad Allabari and Mike Singleton from HSO |
What is the purpose of User Group Meetings?
User Group meetings allow you to build your professional network, learn about best practices, tips and tricks from other Dynamics 365 & AX users and take actionable ideas back into your office.
For whom is this meeting appropriate?
All Dynamics 365 & AX users are welcome, both D365UG/AXUG Members and Subscribers. Your D365UG/AXUG Membership extends to ALL employees within your company, so we encourage you to invite your colleagues and fellow peers. Partner Members are welcome to attend provided they are accompanied by a customer and they can refer to our Code of Conduct for additional guidelines.
How to join this meeting?
We would like to invite you to attend this event for free. To attend this meeting, registration is required:
Register Now
From the Microsoft Dynamics 365/AX Blogs: Debugging; Financial dimensions; Test automation code; Translation
MSDyn365FO SSRS Extensions Part-1
2018-R6 Payroll tax update for Dynamics 365 for Finance and Operations, Enterprise edition (in progress)
Availability:
The 2018-R6 Payroll tax update for Microsoft Dynamics 365 for Operations as well as Microsoft Dynamics AX 2012 are in progress. We will update the blog entry as soon as the update is available.
Post#21: Delegation Constraints in Workflow
How to view which permissions a security role really has in Dynamics 365 for Finance and Operations
The key word in the title of this post is "really" - this isn't about how to look in the AOT or how to open the security forms in the browser - this is about how to check what an AOS is picking up as security permissions for a given role under the hood.
Why would I want to do that I hear you ask? It's useful for me when I'm developing new security elements - because the AOS doesn't see them until I do a full build and database synchronize(sometimes just a synch if everything is already built), and I can't always remember when I last did a build and database synchronize - so it gives me a simple way that I can check what the AOS actually see's for a security role. Also if you're troubleshooting something wrong with security in a deployment environment it gives a way to see what the AOS is seeing.
How can I do it?
Earlier, I created a new privilege, which granted a form control permission to a control called "GroupFinancialDimensionLine" on Forms\SalesTable, then I created a role extension on the Accounts Receivable Clerk role, and granted it my new privilege.
What I want to do now, is see if my AOS knows about it or not - or if I need to run a full build/synch.
Querying my AXDB, first I'm looking up the RecId for the role I modified, then I'm using that RecId to check what permissions are set for SalesTable for that Role - looking in the SecurityRoleRuntime table.
select recId, * from SECURITYROLE where name = 'Accounts receivable clerk'
--query returned recId=13 for that record
SELECT T1.SECURITYROLE,T1.NAME,T1.CHILDNAME,T1.TYPE,T1.CREATEACCESS,T1.READACCESS,T1.UPDATEACCESS,T1.DELETEACCESS,
T1.CORRECTACCESS,T1.INVOKEACCESS,T1.PASTCREATEACCESS,T1.PASTREADACCESS,T1.PASTUPDATEACCESS,T1.PASTDELETEACCESS,T1.PASTCORRECTACCESS,
T1.PASTINVOKEACCESS,T1.CURRENTCREATEACCESS,T1.CURRENTREADACCESS,T1.CURRENTUPDATEACCESS,T1.CURRENTDELETEACCESS,T1.CURRENTCORRECTACCESS,
T1.CURRENTINVOKE,T1.FUTURECREATEACCESS,T1.FUTUREREADACCESS,T1.FUTUREUPDATEACCESS,T1.FUTUREDELETEACCESS,T1.FUTURECORRECTACCESS,
T1.FUTUREINVOKEACCESS,T1.RECVERSION,T1.RECID
FROM SECURITYROLERUNTIME T1
WHERE (SECURITYROLE=13) AND NAME = 'SALESTABLE'
A couple of things to note:
- It's database synchronize that's populating SECURITYROLERUNTIME.
- AOS is using SECURITYROLERUNTIME as it's definition of the detail of each role - this is how it knows what to allow a user to see/do and what not to.
- AOS only reads from the table on startup**, and then it's cached.
- When you're deploying a package to an environment - no further action should be needed - the will be populated if package deployment completes successfully.
In my example, after a database synchronize, I can see my new permission is there, and then when I log in with a user with that permission it works:
**I said that an AOS only reads the table on startup - that's not strictly true, it just made a nicer bullet point. There is a cache synchronizing mechanism between AOS - so that if someone modifies a role/permission in the UI, the other AOSes will pick up the change by re-reading the table:
- Each running AOS has in it's memory a global user role version ID
- It's getting this from a special record in Tables\SysLastValue
- Periodically (every few minutes) it checks the SysLastValue record to see if the ID has changed - meaning has another AOS made a role change, and notified the others by incrementing the global user role version ID stored in this table.
- If it's changed it flushes it's cache and re-reads all the role information from SecurityRoleRuntime
It's a similar type of mechanism that we use for AOS to check their server configuration, batch configuration and EntireTable cache settings/values.
Measure sales per Retail Category in Power BI
Drill down on sales per category, employee, and department is key essentials for Retailers. Doing this gives a more specific view of what’s generating sales and what isn’t. Having insights into top categories or departments might help make decisions about purchasing and marketing. A good point of sale comes with reporting and analytics, so you can quickly get the data you need, whenever you need it — without manual calculations.
Power BI is a must have for all retailers, and this blogpost is about creating a retail category hierarchy in power BI.
If you have worked with Retail Categories, you know that there exists a “parent-child” relationship between the categories as illustrated from the following data in the Contoso demodata set.
In power BI it is possible to also create such hierarchies, but it requires some minor changes to reflect this. My inspiration came from Power BI Tutorial: Flatten Parent Child Hierarchy. I will not go through how I build a retail power BI analysis, but I can share that I use ODATA entities, and here is the entities I’m using:
More information on the data model is available in DOCS her.
The “trick” is to create a new column named “Path“, and a column named CategoryL[X] for each level in the hierarchy, that for the RetailProductHierarchyCategories looks like this:
Here are the column formulas
Path = PATH(RetailProductHierarchyCategories[CategoryName];RetailProductHierarchyCategories[ParentCategoryName])
CategoryL2 = PATHITEM(RetailProductHierarchyCategories[Path];2)
CategoryL3 = PATHITEM(RetailProductHierarchyCategories[Path];3)
CategoryL4 = PATHITEM(RetailProductHierarchyCategories[Path];4)
CategoryL5 = PATHITEM(RetailProductHierarchyCategories[Path];5)
…etc
Then I create a new hierarchy column for, where I specify
And I use the Hierarchy Slicer that is available in the power BI marketplace.
In power BI I then get a Retail Category slicer, and can filter and measure sales per category in power BI
Microsoft are in process of aligning ourselves with future of Power BI and create the new version of Retail Channel Performance with New Common Data Service for Analytics capability coming to Power BI https://powerbi.microsoft.com/en-us/cds-analytics/
Keep on rocking #MSDYN365FO!
Turn Chrome browser Search engine to browse Table
Updating Date Effective Tables in AX 2012, Dynamics 365 for finance and operations
I was struggling to update Date Effective Table in Dynamics Ax 2012 R3. At least one hour of struggle, finally I update the required record.
Only good post which helps is by Agnela GoldBrg.
http://ibisinc.com/blog/updating-date-effective-tables-in-ax-2012/
One line tip from this post is on Date Effective table, The active record reference can be get with of
DateTimeUtil::utcNow()
Its really small tip, yes learning and solving problem at hand waste hours.
Lets take a real world example We have to update Job detail with X++.
For HCMJobDetail table following way works for me.
hcmJobDetail= HcmJobDetail::findByJob(hcmJob.RecId,DateTimeUtil::utcNow(),DateTimeUtil::utcNow(),true);
We can query on required table with following way
_validFrom = DateTimeUtil::utcNow();
_validTo =DateTimeUtil::utcNow();
select ValidTimeState(_validFrom, _validTo) hcmJobDetail
where hcmJobDetail.Job == _job;
The complete code snippet which works for me is here.
HcmJobDetail hcmJobDetail;
HcmJob hcmJob;
HCMJOBID _id=’XyZ’;
date dateToday,
hcmJob = HcmJob::findByJob(_id);
_validFrom = DateTimeUtil::utcNow();
_validTo =DateTimeUtil::utcNow();
select ValidTimeState(_validFrom, _validTo) hcmJobDetail
where hcmJobDetail.Job == _job;
hcmJobDetail= HcmJobDetail::findByJob(hcmJob.RecId,DateTimeUtil::utcNow(),DateTimeUtil::utcNow(),true);
if (hcmJobDetail!=null)
{
try
{
ttsBegin;
hcmJobDetail.validTimeStateUpdateMode(ValidTimeStateUpdate::Correction);
hcmJobDetail.SL_TempEndDate = today();
hcmJobDetail.SL_TempStartDate = today();
hcmJobDetail.Note = ” test and test”;
hcmJobDetail.update();
ttsCommit;
}
catch
{
ttsAbort;
HcmJob::CheckFailed(‘ Unable to update job’);
// status = SL_EntityStatus::Error;
}
}
}
}