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

Macros & Const in AX7 / D365

$
0
0
Macros can still be created in Dynamics 365 for Finance and Operations to store a value that will not be modified. They are created in either a macro file or by using the pound define keyword. So we can...(read more)

Dynamics 365 – Basics about Sales tax documentation

$
0
0

If you are interested in the basic setup of Sales tax – the attached document could be the perfect starting point in order to understand the required setup and automatic processes in Dynamics 365 for Finance and Operations.

BASICS-ABOUT-SALES-TAX-in-Microsoft-Dynamics-

Debug Dynamics 365 for Finance and Operations on-premises with Visual Studio remote debugger

$
0
0

In this article I’m going to explain how to use Visual Studio Remote Debugger to debug a Dynamics 365 for Finance and Operations AOS in an on-premises environment. Why would you want to do that? Well, if you have an issue occurring in an on-premises environment that you can't reproduce on your developer (also known as Tier1/onebox/dev box) environment, this allows you to attach Visual Studio from the developer environment to the on-premises AOS and debug X++ code.

There's another related article on here, to debug an on-premises AOS without Visual Studio, which may be useful depending on your circumstances.

Overview

The basic gist of this process is:
1. Use a D365 developer environment which is on the domain (and of course the network) with the AOS machine
2. Copy the remote debugging tools from developer environment to the AOS
3. Run the remote debugger on the AOS
4. Open Visual Studio on the developer environment and attach to the remote debugger on the AOS
5. From this point debug as normal

First let’s talk about why I’m using a developer environment which is joined to the domain: The remote debugger has a couple of authentication options – you can either set it to allow debugging from anyone (basically no authentication), or to use Windows authentication. It’s a bit naughty to use the no authentication option, although the remote debugger wouldn’t be accessible from the internet, it’s still allowing that access to the machine from the network without any control on it. So we’ll use the Windows authentication option, which means we need to be on the domain.

There’s nothing special about adding a developer environment to the domain, join as you would any other machine - I won't go into that here.

Copy the remote debugger to the AOS

On the developer environment you'll find "Remote Debugger folder" on the Windows start menu:

Copy the x64 folder from there, and paste it onto the AOS you're going to debug. Note that if you have multiple AOS in your on-premises environment, turn off all but one of them - so that all requests will go to that one AOS that you're debugging. Within the folder double click msvsmon.exe:

The remote debugger will open, and look something like this, take note of the machine name and port, in my case it's SQLAOSF1AOS1:4020.

Configure the developer environment

Now move over to the developer environment, log on as an account which is an Administrator of both the developer machine and the AOS machine you want to debug. Open Visual Studio and go to Tools, Options, set the following options:

Dynamics 365, Debugging: Uncheck "Load symbols only for items in the solution"
Debugging, General: Uncheck "just my code"
Debugging, Symbols: add paths for all packages you want to debug, pointing to the location of the symbols files on the AOS you want to debug, because my account is an Administrator on the AOS box I can use the default C$ share to add those paths, like this:

Close the options form, and then go to Debug, Attach to process.., in the window that appears set the qualifier to the machine and port we saw earlier in the remote debugger on the AOS machine, in my case it was SQLAOSF1AOS1:4020. Then at the bottom click "Show processes from all users" and select the AXService.exe process, this is the AOS.

You'll get a warning, click attach.

On the AOS machine, you'll see in the remote debugger that you've connected:

Now open some code and set a breakpoint, in my case I'm choosing Form\CustTable.init(), then open the application in the browser and open the form to hit your breakpoint.

Switching between source code files

When you try to step into a different source file, for example if I want to step from CustTable.init() down into TaxWithholdParameters_IN::find(), then I need to open the code for TaxWithholdParameters_IN manually from the Application explorer (AOT) before I step into it, if you don't do that you'll get a pop up window asking you where the source code file is - if that happens, then you can just cancel the dialog asking for the source file, go open it from the AOT, and then double click on the current row in the call stack to force it to realize you've got the source file now.

Happy debugging!

Did You Know – Weekly Tips – ARCB (Invoice Validate)

$
0
0

Did You Know...

The invoice creator validate button detects zero unit price line items and ensures meter reading data is entered. This is found through Transactions > Adv. Recurring Contract Billing > Invoice Creator. A report from the validation results provides the columns for Schedule Number, Item Number, Meter Number, Billing Period Start Date, Billing Period End Date and Description.

Import des dimensions financières paramétrées par défaut sur le plan de comptes via le complément Excel au sein de Dynamics 365 pour la Finance & les Opérations

$
0
0
English version available here Rien de plus rébarbatif que de devoir dupliquer du paramétrage d’une entité à une autre ou d’un environnement à un autre. L’article ci-dessous décrit comment utiliser le...(read more)

Pacejet now Integrates with Dynamics 365 for Finance and Operations

$
0
0

Pacejet shipping software provides an enterprise level solution for companies invested in advancing their operations strategies. The need for integration to enterprise resource planning (ERP) solutions, such as Microsoft Dynamics 365 for Finance and Operations and Dynamics AX, is paramount to complete a successful solution for Pacejet customers.  Clients First Business Solutions is a Microsoft Gold ERP Partner with a strong staff of developers that created the integration for Pacejet to Dynamics 365 and Dynamics AX.

Pacejet provides management of parcel, freight, LTL, 3PL, regional carriers, and other shipping services in one platform.  Pacejet saves their customers an average of 20 to 30 percent on shipping costs and 40 to 50 percent on labor costs. With an integrated system, rate shop all your available carriers in one screen by rate, transit times, and delivery turnaround times, making it easy to select the right carrier for your business and customers with every shipment.

Microsoft Dynamics 365 for Finance and Operations and Dynamics AX 2012 is a leading ERP software solution with capabilities including: finance, projects, supply chain which includes warehouse management, containerization, process and discrete manufacturing, master planning, CRM, and more.

The combination of Pacejet and Microsoft Dynamics allows enterprise supply chain companies the ability to manage customers and inventory efficiently and keep costs down. The benefits are numerous.  Please visit the Pacejet website for more information on the Pacejet solution with Dynamics.

Joint webinar with Pacejet and Clients First presenting the integrated solution will be held June 5th.  Register now to attend.

 

Executive Q&A: Why North American manufacturers are investing in Microsoft Dynamics 365

$
0
0
Manufacturing is an industry with many challenges, particularly in the highly competitive North American market.  MSDW spoke with David Linton, Partner with BDO Canada , about industry trends and how manufacturers are investing in new technology to ...read more

Post#22: PO Confirm button Greyed Out

$
0
0
Found an interesting case in DAX AX 2012 R3 of a Purchase Order that completed all approvals in workflow and approval status changed to “Approved” however the “Confirm” button was...(read more)

Solution for Purchase Invoice Error : Insufficient stock transactions with Status Purchased.

$
0
0
Recently I faced “Insufficient stock transactions with Status Purchased.” error in AX 2012 R2 CU7 while invoicing  partially received PO’s. Each line of PurchLine Table have two records...(read more)

How to copy a database from cloud tier 1 to on-premises in Dynamics 365 for Finance and Operations

$
0
0

In this post I'm going to explain how to copy a Dynamics 365 for Finance and Operations database from a cloud Tier 1 environment (also known as a onebox, or demo environment) to an on-premises environment. This might be useful if you're using a Tier 1 to create your golden configuration environment, which you'll use to seed the on-premises environments later.

I will post how to move a database in the other direction soon.

Overview

This process is relatively simple compared to the cloud version, because we're not switching between Azure SQL and SQL Server - it's all SQL Server. The basic gist of the process is:
1. Backup the database on the Tier 1 (no preparation needed)
2. Restore the database to the on-premises SQL instance
3. Run a script against the restore DB to update some values
4. Start an AOS in the on-premises and wait for it to automatically run database synchronize and deploy reports

Process

First back up the database on the Tier 1 environment and restore it to the on-premises environment - don't overwrite the existing on-premises database, keep that one and restore the new one with a different name - because we're going to need to copy some values across from the old DB to the new DB.

Now run this script against the newly restored DB, make sure to set the values for the database names correctly:


--Remove the database level users from the database
--these will be recreated after importing in SQL Server.
use AXDB_onebox --******************* SET THE NEWLY RESTORED DATABASE NAME****************************

declare
@userSQL varchar(1000)
set quoted_identifier off
declare userCursor CURSOR for
select 'DROP USER ' + name
from sys.sysusers
where issqlrole = 0 and hasdbaccess = 1 and name 'dbo' and name 'NT AUTHORITY\NETWORK SERVICE'
OPEN userCursor
FETCH userCursor into @userSQL
WHILE @@Fetch_Status = 0
BEGIN
exec(@userSQL)
FETCH userCursor into @userSQL
END
CLOSE userCursor
DEALLOCATE userCursor

--now recreate the users copying from the existing database:
use AXDB --******************* SET THE OLD ON-PREMISES DATABASE NAME****************************
go
IF object_id('tempdb..#UsersToCreate') is not null
DROP TABLE #UsersToCreate
go
select 'CREATE USER [' + name + '] FROM LOGIN [' + name + '] EXEC sp_addrolemember "db_owner", "' + name + '"' as sqlcommand
into #UsersToCreate
from sys.sysusers
where issqlrole = 0 and hasdbaccess = 1 and name 'dbo' and name 'NT AUTHORITY\NETWORK SERVICE'
go
use AXDB_onebox --******************* SET THE NEWLY RESTORED DATABASE NAME****************************
go
declare
@userSQL varchar(1000)
set quoted_identifier off
declare userCursor CURSOR for
select sqlcommand from #UsersToCreate
OPEN userCursor
FETCH userCursor into @userSQL
WHILE @@Fetch_Status = 0
BEGIN
exec(@userSQL)
FETCH userCursor into @userSQL
END
CLOSE userCursor
DEALLOCATE userCursor

--Storage isn't copied from one environment to another because it's stored outside
--of the database, so clearing the links to stored documents
UPDATE T1
SET T1.STORAGEPROVIDERID = 0
, T1.ACCESSINFORMATION = ''
, T1.MODIFIEDBY = 'Admin'
, T1.MODIFIEDDATETIME = getdate()
FROM DOCUVALUE T1
WHERE T1.STORAGEPROVIDERID = 1 --Azure storage

--Clean up the batch server configuration, server sessions, and printers from the previous environment.
TRUNCATE TABLE SYSSERVERCONFIG
TRUNCATE TABLE SYSSERVERSESSIONS
TRUNCATE TABLE SYSCORPNETPRINTERS

--Remove records which could lead to accidentally sending an email externally.
UPDATE SysEmailParameters
SET SMTPRELAYSERVERNAME = ''
GO
UPDATE LogisticsElectronicAddress
SET LOCATOR = ''
WHERE Locator LIKE '%@%'
GO
TRUNCATE TABLE PrintMgmtSettings
TRUNCATE TABLE PrintMgmtDocInstance

--Set any waiting, executing, ready, or canceling batches to withhold.
UPDATE BatchJob
SET STATUS = 0
WHERE STATUS IN (1,2,5,7)
GO

--SysFlighting is empty in on-premises environments, so clean it up
TRUNCATE TABLE SYSFLIGHTING

--Update the Admin user record, so that I can log in again
UPDATE USERINFO
SET SID = x.SID, NETWORKDOMAIN = x.NETWORKDOMAIN, NETWORKALIAS = x.NETWORKALIAS,
IDENTITYPROVIDER = x.IDENTITYPROVIDER
FROM AXDB..USERINFO x
WHERE x.ID = 'Admin' and USERINFO.ID = 'Admin'

Now the database is ready, we're going to rename the old on-premises database from AXDB to AXDB_old, and the newly restored database from AXDB_onebox to AXDB. This means we don't have to change the AOS configuration to point to a new database - we're using the same users and the same database name.

All we need to do is restart all the AOS processes (either reboot the machines or restart the AOS apps from service fabric explorer).

When the AOSes restart one of them will run a database synchronize & deploy reports - because they can tell the database changed. You can watch progress in the AOS event log – create a custom event log view for all events under “Services and applications\Microsoft\Dynamics”. When this is finished you’ll see a record appear in SF.SYNCLOG in the AXDB.

Notes

A few other things to note:
- Only the Admin user can log in - because I'm assuming that the users from the onebox environment were all AAD cloud users, and that's not what the on-premises environment uses. The script above fixed the Admin user, but left the others as-is.
- To get Management Reporter working again, perform a reset.
- Storage (things like document handling documents) aren't kept in the database, so copy the database hasn't copied those things across. In the script above we cleared the links in the DocuValue table, so that we don't try and open docs from Azure storage which aren't there.
- The script has withheld all batch jobs, to stop anything running which shouldn't.
- Data stored in fields that were encrypted in the Tier1 environment, won't be readable in the restored database - there aren't many fields that are like this, details are in the "Document the values of encrypted field" section here.

Basic Outputs in D365

$
0
0
In Dynamics 365 we can show outputs in three different ways. 1- By using box class The box output will create a popup box displaying text to the user. 2- By using info class Info log will display on the...(read more)

How to copy a database from on-premises to to cloud Tier 1 in Dynamics 365 for Finance and Operations

$
0
0

In this post I'll explain how to copy a database from an on-premises environment, and restore it to a Tier1 (also know as onebox, dev box) environment. Why would you want to do that? Well typically so that you have some realistic data to develop against, or to debug a problem that you can only reproduce with the data.

If you've already read this post about copying a database in the other direction - tier1 to on-premises, then this process will be very familiar.

Overview

This process is relatively simple compared to the cloud version, because we're not switching between Azure SQL and SQL Server - it's all SQL Server. The basic gist of the process is:
1. Backup the database on the on-premises environment (no preparation needed)
2. Restore the database to the Tier 1 environment
3. Run a script against the restore DB to update some values
4. Open Visual Studio and run a database synchronize

Process

First back up the database on the on-premises environment and restore it to the Tier 1 environment - don't overwrite the existing Tier 1 database, keep that one and restore the new one with a different name - because we're going to need to copy some values across from the old DB to the new DB.

Now run this script against the newly restored DB, make sure to set the values for the database names correctly:


--Remove the database level users from the database
--these will be recreated after importing in SQL Server.
use AXDB_onpremises --******************* SET THE NEWLY RESTORED DATABASE NAME****************************

declare
@userSQL varchar(1000)
set quoted_identifier off
declare userCursor CURSOR for
select 'DROP USER [' + name +']'
from sys.sysusers
where issqlrole = 0 and hasdbaccess = 1 and name != 'dbo' and name != 'NT AUTHORITY\NETWORK SERVICE'
OPEN userCursor
FETCH userCursor into @userSQL
WHILE @@Fetch_Status = 0
BEGIN
exec(@userSQL)
FETCH userCursor into @userSQL
END
CLOSE userCursor
DEALLOCATE userCursor

--now recreate the users copying from the existing database:
use AXDB --******************* SET THE OLD TIER 1 DATABASE NAME****************************
go
IF object_id('tempdb..#UsersToCreate') is not null
DROP TABLE #UsersToCreate
go
select 'CREATE USER [' + name + '] FROM LOGIN [' + name + '] EXEC sp_addrolemember "db_owner", "' + name + '"' as sqlcommand
into #UsersToCreate
from sys.sysusers
where issqlrole = 0 and hasdbaccess = 1 and name != 'dbo' and name != 'NT AUTHORITY\NETWORK SERVICE'
go
use AXDB_onpremises --******************* SET THE NEWLY RESTORED DATABASE NAME****************************
go
declare
@userSQL varchar(1000)
set quoted_identifier off
declare userCursor CURSOR for
select sqlcommand from #UsersToCreate
OPEN userCursor
FETCH userCursor into @userSQL
WHILE @@Fetch_Status = 0
BEGIN
exec(@userSQL)
FETCH userCursor into @userSQL
END
CLOSE userCursor
DEALLOCATE userCursor

--Storage isn't copied from one environment to another because it's stored outside
--of the database, so clearing the links to stored documents
UPDATE T1
SET T1.STORAGEPROVIDERID = 0
, T1.ACCESSINFORMATION = ''
, T1.MODIFIEDBY = 'Admin'
, T1.MODIFIEDDATETIME = getdate()
FROM DOCUVALUE T1
WHERE T1.STORAGEPROVIDERID = 4 --Files stored in local on-premises storage

--Clean up the batch server configuration, server sessions, and printers from the previous environment.
TRUNCATE TABLE SYSSERVERCONFIG
TRUNCATE TABLE SYSSERVERSESSIONS
TRUNCATE TABLE SYSCORPNETPRINTERS

--Remove records which could lead to accidentally sending an email externally.
UPDATE SysEmailParameters
SET SMTPRELAYSERVERNAME = ''
GO
UPDATE LogisticsElectronicAddress
SET LOCATOR = ''
WHERE Locator LIKE '%@%'
GO
TRUNCATE TABLE PrintMgmtSettings
TRUNCATE TABLE PrintMgmtDocInstance

--Set any waiting, executing, ready, or canceling batches to withhold.
UPDATE BatchJob
SET STATUS = 0
WHERE STATUS IN (1,2,5,7)
GO

--Update the Admin user record, so that I can log in again
UPDATE USERINFO
SET SID = x.SID, NETWORKDOMAIN = x.NETWORKDOMAIN, NETWORKALIAS = x.NETWORKALIAS,
IDENTITYPROVIDER = x.IDENTITYPROVIDER
FROM AXDB..USERINFO x --******************* SET THE OLD TIER 1 DATABASE NAME****************************
WHERE x.ID = 'Admin' and USERINFO.ID = 'Admin'

Now the database is ready, we're going to rename the old Tier 1 database from AXDB to AXDB_old, and the newly restored database from AXDB_onpremises to AXDB. This means we don't have to change the AOS configuration to point to a new database - we're using the same users and the same database name.

NOte that to do the rename, you'll need to stop the Management reporter, batch, IIS and/or iisexpress services - otherwise it'll say the database is in use.

Then open Visual Studio and run a database synchronize. A tier 1 environment doesn't have the same auto-DB-synch mechanism like the on-premises environment does, so you have to run it yourself.

Notes

A few other things to note:
- Only the Admin user can log in - because I'm assuming that the users from the onebox environment were all AAD cloud users, and that's not what the on-premises environment uses. The script above fixed the Admin user, but left the others as-is.
- To get Management Reporter working again, perform a reset.
- Storage (things like document handling documents) aren't kept in the database, so copy the database hasn't copied those things across. In the script above we cleared the links in the DocuValue table, so that we don't try and open docs from local on-premises storage which aren't there.
- The script has withheld all batch jobs, to stop anything running which shouldn't.
- Data stored in fields that were encrypted in the Tier1 environment, won't be readable in the restored database - there aren't many fields that are like this, details are in the "Document the values of encrypted field" section here.

The challenges of growing a Microsoft Dynamics practice

$
0
0
Growing a Microsoft Dynamics practice is considerably more challenging than it used to be. Finding the best talent, keeping up with technology change, and managing for the continuing evolution of sales and marketing are issues forcing partners to adapt ...read more

Expired certs on your local dev VM?

$
0
0
I have been asked this question on a couple of occasion: How do I rotate the expired or nearly expired certificates on my downloadable dev VHD? Here's the LCS blog on the topic , https://blogs.msdn...(read more)

Microsoft job openings!!!

$
0
0
We’re looking for great candidates to take on exciting and challenging Dynamics 365 PFE roles at Microsoft.  If you’re interested in joining Microsoft and becoming a member of a team that plays a key role with our Dynamics 365 customers, please consider the following positions.    Dynamics 365 Customer Engagement (CRM) Premier Field Engineer:   https://careers.microsoft.com/us/en/job/399057/SR-PFE...

How to create a Data Connection Library in Enterprise Portal AX 2012

$
0
0
This article will guide users to enable the SharePoint Server Enterprise Site features to be able to create Data Connections, Report Libraries, & Slide Libraries on the Enterprise Portal site for AX...(read more)

Access modifiers in X++ Language (AX2012 & D365)

$
0
0
There are several access modifiers that can be applied to method declarations. Some of the modifiers can be combined (for example, final static). Some modifiers can only be used methods , while others...(read more)

From the Microsoft Dynamics 365/AX Blogs: Order events; Invoice error; Debug D365FO; Security roles

$
0
0
This week on the Dynamics 365/AX blog roundup: Order events in Microsoft Dynamics 365 for Finance and Operations Invoice error: insufficient stock transactions with status purchased Debug Dynamics 365 for Finance and Operations on ...read more

Microsoft Dynamics Partner Roundup: SCA partner; New partnership; Jeweler Deploys D365; Co-Sell Ready

$
0
0
In this week's Microsoft Dynamics Partner News Roundup: Acerra Enterprises joins SCA as the latest Dynamics 365 Partner Nigel Frank International enters a strategic partnership with Alpha Variance Solutions Ben Bridge Jeweler chooses ...read more

Vendor invoice workflow – Email approval

$
0
0
In this post, I show you how you can make use of the new vendor invoice recording workbench and approve invoices through Email.(read more)
Viewing all 10657 articles
Browse latest View live


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