DimensionValueLookupHelper::lookupDimensionValues(DimensionAttribute::findByLocalizedName('<DimensionName>', false, SystemParameters::find().SystemLanguageId), <FormStringControl>);
Wednesday, January 30, 2019
Tuesday, January 29, 2019
Backup and restore in another ENV Dynamics 365 Finance and operations
1. Take the AxDB
database backup
2. Do the Full Build.
3. Do the Database Synchronize
4. Connect the LCS and
download the Database
5. Create the new
Database with Name : UATBackUp81.
6. Restore the downloaded Database from LCS to UATBackUp81.
7. Need to change the UATBackUp81
a.
Security User details
Script:
CREATE USER axdeployuser FROM LOGIN
axdeployuser
EXEC sp_addrolemember 'db_owner',
'axdeployuser'
CREATE USER axdeployextuser WITH PASSWORD =
'<password from LCS>'
IF EXISTS (select * from
sys.database_principals where type = 'R' and name = 'DeployExtensibilityRole')
BEGIN
EXEC sp_addrolemember 'DeployExtensibilityRole', 'axdeployextuser'
END
CREATE USER axdbadmin WITH PASSWORD =
'<password from LCS>'
EXEC sp_addrolemember 'db_owner',
'axdbadmin'
CREATE USER axruntimeuser WITH PASSWORD =
'<password from LCS>'
EXEC sp_addrolemember 'db_datareader',
'axruntimeuser'
EXEC sp_addrolemember 'db_datawriter',
'axruntimeuser'
CREATE USER axmrruntimeuser WITH PASSWORD = '<password
from LCS>'
EXEC sp_addrolemember
'ReportingIntegrationUser', 'axmrruntimeuser'
EXEC sp_addrolemember 'db_datareader',
'axmrruntimeuser'
EXEC sp_addrolemember 'db_datawriter',
'axmrruntimeuser'
CREATE USER axretailruntimeuser WITH
PASSWORD = '<password from LCS>'
EXEC sp_addrolemember 'UsersRole',
'axretailruntimeuser'
EXEC sp_addrolemember 'ReportUsersRole',
'axretailruntimeuser'
CREATE USER axretaildatasyncuser WITH
PASSWORD = '<password from LCS>'
EXEC sp_addrolemember 'DataSyncUsersRole',
'axretaildatasyncuser'
ALTER DATABASE SCOPED CONFIGURATION SET MAXDOP=2
ALTER DATABASE SCOPED CONFIGURATION SET LEGACY_CARDINALITY_ESTIMATION=ON
ALTER DATABASE SCOPED CONFIGURATION SET PARAMETER_SNIFFING= ON
ALTER DATABASE SCOPED CONFIGURATION SET QUERY_OPTIMIZER_HOTFIXES=OFF
ALTER DATABASE <imported database
name> SET COMPATIBILITY_LEVEL = 130;
ALTER DATABASE <imported database
name> SET QUERY_STORE = ON;
update
[dbo].[SYSSERVICECONFIGURATIONSETTING]
set value ='<tenant ID from existing
database>'
where name = 'TENANTID'
update dbo.POWERBICONFIG
set TENANTID = '<tenant ID from existing
database>'
update dbo.PROVISIONINGMESSAGETABLE
set TENANTID = '<tenant ID from existing
database>'
GO
-- Begin Refresh Retail FullText Catalogs
DECLARE @RFTXNAME NVARCHAR(MAX);
DECLARE @RFTXSQL NVARCHAR(MAX);
DECLARE retail_ftx CURSOR FOR
SELECT OBJECT_SCHEMA_NAME(object_id) + '.' +
OBJECT_NAME(object_id) fullname FROM SYS.FULLTEXT_INDEXES
WHERE FULLTEXT_CATALOG_ID = (SELECT TOP 1 FULLTEXT_CATALOG_ID FROM
SYS.FULLTEXT_CATALOGS WHERE NAME = 'COMMERCEFULLTEXTCATALOG');
OPEN retail_ftx;
FETCH NEXT FROM retail_ftx INTO @RFTXNAME;
BEGIN TRY
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT 'Refreshing Full Text Index ' + @RFTXNAME;
EXEC SP_FULLTEXT_TABLE @RFTXNAME, 'activate';
SET @RFTXSQL = 'ALTER FULLTEXT INDEX ON ' + @RFTXNAME + ' START FULL
POPULATION';
EXEC SP_EXECUTESQL @RFTXSQL;
FETCH NEXT FROM retail_ftx INTO @RFTXNAME;
END
END TRY
BEGIN CATCH
PRINT error_message()
END CATCH
CLOSE retail_ftx;
DEALLOCATE retail_ftx;
-- End Refresh Retail FullText Catalogs
8. Changes the names
like AxDB to AxDB_standard , UATBackUp81
to AXDB
USE master;
GO
ALTER DATABASE AxDB SET SINGLE_USER WITH ROLLBACK IMMEDIATE
GO
ALTER DATABASE AxDB MODIFY NAME = AxDB_Standard
;
GO
ALTER DATABASE AxDB_ Standard SET MULTI_USER
GO
---------------------------------------------------------------------------
USE master;
GO
ALTER DATABASE UATBackUp81
SET SINGLE_USER WITH ROLLBACK IMMEDIATE
GO
ALTER DATABASE UATBackUp81
MODIFY NAME = AxDB ;
GO
ALTER DATABASE AxDB SET MULTI_USER
GO
9. Do the Full DB Synchronize
Thursday, January 24, 2019
Self-service deployment in Dynamics 365 for finance and operartions
https://docs.microsoft.com/en-us/dynamics365/unified-operations/dev-itpro/database/copy-database-from-azure-sql-to-sql-server
Export:
Export .bacpac file from LCS
Import Database:
cd C:\Program Files (x86)\Microsoft SQL Server\140\DAC\bin
SqlPackage.exe /a:import /sf:D:\Exportedbacpac\my.bacpac /tsn:localhost /tdn:<target database name> /p:CommandTimeout=1200
Note:
During import, the user name and password aren't required. By default, SQL Server uses Microsoft Windows authentication for the user who is currently signed in.
Note:
tsn (target server name) – The name of the SQL Server to import into.
tdn (target database name) – The name of the database to import into. The database should not already exist.
sf (source file) – The path and name of the file to import from.
Update Database:
Query:
CREATE USER axdeployuser FROM LOGIN axdeployuser
EXEC sp_addrolemember 'db_owner', 'axdeployuser'
CREATE USER axdbadmin FROM LOGIN axdbadmin
EXEC sp_addrolemember 'db_owner', 'axdbadmin'
CREATE USER axmrruntimeuser FROM LOGIN axmrruntimeuser
EXEC sp_addrolemember 'db_datareader', 'axmrruntimeuser'
EXEC sp_addrolemember 'db_datawriter', 'axmrruntimeuser'
CREATE USER axretaildatasyncuser FROM LOGIN axretaildatasyncuser
EXEC sp_addrolemember 'DataSyncUsersRole', 'axretaildatasyncuser'
CREATE USER axretailruntimeuser FROM LOGIN axretailruntimeuser
EXEC sp_addrolemember 'UsersRole', 'axretailruntimeuser'
EXEC sp_addrolemember 'ReportUsersRole', 'axretailruntimeuser'
CREATE USER axdeployextuser FROM LOGIN axdeployextuser
EXEC sp_addrolemember 'DeployExtensibilityRole', 'axdeployextuser'
CREATE USER [NT AUTHORITY\NETWORK SERVICE] FROM LOGIN [NT AUTHORITY\NETWORK SERVICE]
EXEC sp_addrolemember 'db_owner', 'NT AUTHORITY\NETWORK SERVICE'
UPDATE T1
SET T1.storageproviderid = 0
, T1.accessinformation = ''
, T1.modifiedby = 'Admin'
, T1.modifieddatetime = getdate()
FROM docuvalue T1
WHERE T1.storageproviderid = 1 --Azure storage
ALTER DATABASE [<your AX database name>] SET CHANGE_TRACKING = ON (CHANGE_RETENTION = 6 DAYS, AUTO_CLEANUP = ON)
GO
DROP PROCEDURE IF EXISTS SP_ConfigureTablesForChangeTracking
DROP PROCEDURE IF EXISTS SP_ConfigureTablesForChangeTracking_V2
GO
-- Begin Refresh Retail FullText Catalogs
DECLARE @RFTXNAME NVARCHAR(MAX);
DECLARE @RFTXSQL NVARCHAR(MAX);
DECLARE retail_ftx CURSOR FOR
SELECT OBJECT_SCHEMA_NAME(object_id) + '.' + OBJECT_NAME(object_id) fullname FROM SYS.FULLTEXT_INDEXES
WHERE FULLTEXT_CATALOG_ID = (SELECT TOP 1 FULLTEXT_CATALOG_ID FROM SYS.FULLTEXT_CATALOGS WHERE NAME = 'COMMERCEFULLTEXTCATALOG');
OPEN retail_ftx;
FETCH NEXT FROM retail_ftx INTO @RFTXNAME;
BEGIN TRY
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT 'Refreshing Full Text Index ' + @RFTXNAME;
EXEC SP_FULLTEXT_TABLE @RFTXNAME, 'activate';
SET @RFTXSQL = 'ALTER FULLTEXT INDEX ON ' + @RFTXNAME + ' START FULL POPULATION';
EXEC SP_EXECUTESQL @RFTXSQL;
FETCH NEXT FROM retail_ftx INTO @RFTXNAME;
END
END TRY
BEGIN CATCH
PRINT error_message()
END CATCH
CLOSE retail_ftx;
DEALLOCATE retail_ftx;
-- End Refresh Retail FullText Catalogs
Start to use the new database:
To switch the environment and use the new database, first stop the following services:
1. World Wide Web Publishing Service
2. Microsoft Dynamics 365 Unified Operations: Batch Management Service
3. Management Reporter 2012 Process Service
After the services have been stopped, rename the AxDB database AxDB_orig, rename your newly imported database AxDB, and then restart the three services.
To rename the database, use the following ALTER DATABASE command:
Export:
Export .bacpac file from LCS
Import Database:
cd C:\Program Files (x86)\Microsoft SQL Server\140\DAC\bin
SqlPackage.exe /a:import /sf:D:\Exportedbacpac\my.bacpac /tsn:localhost /tdn:<target database name> /p:CommandTimeout=1200
Note:
During import, the user name and password aren't required. By default, SQL Server uses Microsoft Windows authentication for the user who is currently signed in.
Note:
tsn (target server name) – The name of the SQL Server to import into.
tdn (target database name) – The name of the database to import into. The database should not already exist.
sf (source file) – The path and name of the file to import from.
Update Database:
Query:
CREATE USER axdeployuser FROM LOGIN axdeployuser
EXEC sp_addrolemember 'db_owner', 'axdeployuser'
CREATE USER axdbadmin FROM LOGIN axdbadmin
EXEC sp_addrolemember 'db_owner', 'axdbadmin'
CREATE USER axmrruntimeuser FROM LOGIN axmrruntimeuser
EXEC sp_addrolemember 'db_datareader', 'axmrruntimeuser'
EXEC sp_addrolemember 'db_datawriter', 'axmrruntimeuser'
CREATE USER axretaildatasyncuser FROM LOGIN axretaildatasyncuser
EXEC sp_addrolemember 'DataSyncUsersRole', 'axretaildatasyncuser'
CREATE USER axretailruntimeuser FROM LOGIN axretailruntimeuser
EXEC sp_addrolemember 'UsersRole', 'axretailruntimeuser'
EXEC sp_addrolemember 'ReportUsersRole', 'axretailruntimeuser'
CREATE USER axdeployextuser FROM LOGIN axdeployextuser
EXEC sp_addrolemember 'DeployExtensibilityRole', 'axdeployextuser'
CREATE USER [NT AUTHORITY\NETWORK SERVICE] FROM LOGIN [NT AUTHORITY\NETWORK SERVICE]
EXEC sp_addrolemember 'db_owner', 'NT AUTHORITY\NETWORK SERVICE'
UPDATE T1
SET T1.storageproviderid = 0
, T1.accessinformation = ''
, T1.modifiedby = 'Admin'
, T1.modifieddatetime = getdate()
FROM docuvalue T1
WHERE T1.storageproviderid = 1 --Azure storage
ALTER DATABASE [<your AX database name>] SET CHANGE_TRACKING = ON (CHANGE_RETENTION = 6 DAYS, AUTO_CLEANUP = ON)
GO
DROP PROCEDURE IF EXISTS SP_ConfigureTablesForChangeTracking
DROP PROCEDURE IF EXISTS SP_ConfigureTablesForChangeTracking_V2
GO
-- Begin Refresh Retail FullText Catalogs
DECLARE @RFTXNAME NVARCHAR(MAX);
DECLARE @RFTXSQL NVARCHAR(MAX);
DECLARE retail_ftx CURSOR FOR
SELECT OBJECT_SCHEMA_NAME(object_id) + '.' + OBJECT_NAME(object_id) fullname FROM SYS.FULLTEXT_INDEXES
WHERE FULLTEXT_CATALOG_ID = (SELECT TOP 1 FULLTEXT_CATALOG_ID FROM SYS.FULLTEXT_CATALOGS WHERE NAME = 'COMMERCEFULLTEXTCATALOG');
OPEN retail_ftx;
FETCH NEXT FROM retail_ftx INTO @RFTXNAME;
BEGIN TRY
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT 'Refreshing Full Text Index ' + @RFTXNAME;
EXEC SP_FULLTEXT_TABLE @RFTXNAME, 'activate';
SET @RFTXSQL = 'ALTER FULLTEXT INDEX ON ' + @RFTXNAME + ' START FULL POPULATION';
EXEC SP_EXECUTESQL @RFTXSQL;
FETCH NEXT FROM retail_ftx INTO @RFTXNAME;
END
END TRY
BEGIN CATCH
PRINT error_message()
END CATCH
CLOSE retail_ftx;
DEALLOCATE retail_ftx;
-- End Refresh Retail FullText Catalogs
Start to use the new database:
To switch the environment and use the new database, first stop the following services:
1. World Wide Web Publishing Service
2. Microsoft Dynamics 365 Unified Operations: Batch Management Service
3. Management Reporter 2012 Process Service
After the services have been stopped, rename the AxDB database AxDB_orig, rename your newly imported database AxDB, and then restart the three services.
To rename the database, use the following ALTER DATABASE command:
Thursday, January 10, 2019
Thursday, January 3, 2019
Get objects MetaData details in Dynamics 365 for finance and operation
StringEnumerator objectNameString;
str objectName;
objectNameString = Microsoft.Dynamics.Ax.Xpp.MetadataSupport::ClassNames();
while (objectNameString.moveNext())
{
objectName = objectNameString.Current;
AxClass classSt = Microsoft.Dynamics.Ax.Xpp.MetadataSupport::GetClass(objectName);
// classSt .
}
str objectName;
objectNameString = Microsoft.Dynamics.Ax.Xpp.MetadataSupport::ClassNames();
while (objectNameString.moveNext())
{
objectName = objectNameString.Current;
AxClass classSt = Microsoft.Dynamics.Ax.Xpp.MetadataSupport::GetClass(objectName);
// classSt .
}
Subscribe to:
Posts (Atom)
Convert Call stack to readable format in D365FO X++
//Input --container _xppCallStack = xSession::xppCallStack(); Public static str POL_formatXppCallStack(container _xppCallStack, int _skipFr...
-
Restore .bacpac file to Development VM Steps: 1. Take Backup of AxDB database from Development VM 2. Open Command Pr...
-
Posting Vendor invoice based on Product receipt public void postPurchaseInvoiceJournal() { VendPackingSlipJour vendP...
-
Code for reserve and unreserved sales order lines Inputs : SalesLine, InventDim (Combination to reserve), Qty Note : To Reserve -> Pass...