Probably every AX consultancy has programmed a module to send customer documents by email using addresses defined on the customer. With CU7 you can finally can do this in Standard AX:
Define a primary e-mail on the customer
In the print dialog select “Customer primary contact”
Result: The e-mail is sent to the primary e-mail address defined on the customer.
The settings are now saved in the print destinations and do not need to be changed anymore. When the primary e-mail address is changed, the next e-mail will automatically be sent to the new address.
Even better, once the print settings have been saved, all sales orders will pick up their respective customer emails without further settings needed.
Follow the instructions here http://blogs.msdn.com/b/axsupport/archive/2013/02/05/emailing-customer-invoices-from-a-batch.aspx, you will be able to automatically send you confirmations and invoices by email using email addresses defined on the customer.
Even better: Define e-mail addresses for different documents by applying customizable purposes:
Select purpose in the print dialog:
Final Note: If the defined e-mail is missing you will get the following error.
After reading http://www.expta.com/2013/04/updated-blistering-fast-hyper-v-2012.html, http://www.expta.com/2013/02/windows-server-2012-deduplication-is.html and http://weikingteh.wordpress.com/2013/01/15/how-to-enable-data-deduplication-in-windows-8/ I enabled deduplication on my notebook, saving me lots of space on my precious SSD.
It’s a pity that you cannot enable it on your boot drive, as this happens to be my largest SSD, but my secondary SSD with just 128 GB also benefited from the deduplication. I might reorganize my drives at some later stage.
Here a short summary of the steps required for enabling deduplication on a windows 8 Notebook:
- Download Windows Server 2012 deduplication package
- In powershell run the following to install the package
dism /online /add-package /packagepath:Microsoft-Windows-VdsInterop-Package~31bf3856ad364e35~amd64~~6.2.9200.16384.cab /packagepath:Microsoft-Windows-VdsInterop-Package~31bf3856ad364e35~amd64~en-US~6.2.9200.16384.cab /p
s-FileServer-Package~31bf3856ad364e35~amd64~en-US~6.2.9200.16384.cab /packagepath:Microsoft-Windows-Dedup-Package~31bf3856ad364e35~amd64~~6.2.9200.16384.cab /packagepath:Microsoft-Windows-Dedup-Package~31bf3856ad364e35~amd64~en-US~6.2.9200.
- The to enable deduplication run this powershell command
dism /online /enable-feature /featurename:Dedup-Core /all
- Disable Periodic Processing because our main focus will be the deduplication of VHDs
Set-DedupSchedule -Name "BackgroundOptimization" -Enabled $false
- Set minimum age to zero as VHD Files will always have recent modifications.
Set-Dedupvolume D: -MinimumFileAgeDays 0
- Run Deduplication only when Hyper-V stopped
Start-DedupJob –Volume D: –Type Optimization
Pattern for efficient (i.e. use transaction for multiple deletes and use doDelete), stable (i.e. don’t make one huge transaction but commit and restart transaction periodically) and verbose (count down the number of remaining records) job to delete many records in a table.
static void deleteJob(Args _args)
int i = 1;
info(strfmt("%1",(select count(RecId) from #TABLE where #CONDITION).RecId));
while select forupdate #TABLE where #CONDITION
Joris on Dynamics AX Musings wrote this Blog Entry: Custom Query Range Functions using SysQueryRangeUtil
I am slightly annoyed with myself that I have not been aware of this even though it has been available since AX 2009. The following functions can be used in any query or filter. Note that the functions are case sensitive and need to be put in brackets e.g. (currentUserId()).
Current user (or roles thereof)
Dates (all but dateRange are relate to the current date and time)
- day(int relativeDays = 0)
- dayRange(int relativeDaysFrom = 0, int relativeDaysTo = 0)
- greaterThanDate(int relativeDays = 0)
- lessThanDate(int relativeDays = 0)
- monthRange(int relativeMonthsFrom = 0, int relativeMonthsTo = 0)
- yearRange(int relativeYearsFrom = 0, int relativeYearsTo = 0)
- dateRange(date startDate, date endDate)
- advancedLedgerEntryCurrentUserFilter(boolean _createdBy)
- advancedLedgerEntryTxtOpenDraftAll(anytype _advancedLedgerEntryTransactionStatus)
- currentRoleHasAccessToPrivate(boolean _useCache = true)
- dateRange(date startDate, date endDate)
- lessThanUtcDate(int relativeDays = 0)
- greaterThanUtcDate(int relativeDays = 0)
- getActiveMasterPlanVersionByPlanId(ReqPlanId _planId)
- projActiveAll(ProjActiveAll _projActiveAll)
- projActiveAllWIPEliminated(anytype _ProjTableActiveAll)
- projLevels(ProjLevels _projLevels)
- projPostedTransType(ProjPostTransViewType _projPostedTransViewType)
- projUnpostedTransType(ProjUnpostedTransViewType _projUnpostedTransViewType)
- salesQuotationTemplateGroupFilter(SalesQuotationFilter _salesQuotationFilter)
- salesQuotationTypeListPageFilter(SalesQuotationTypeListPage _salesQuotationTypeListPage)
- workflowDelegationFilter(WorkflowDelegationView _filter)
As you see AX 2012 has many more predefined special ranges, many of which are not very self explanatory. These are used in the filters of the pre-filtered list pages.
And as Joris showed, you can easily extend the list…
Yes, CIL code can be debugged in visual studio, but it’s much easer to just disable CIL and use the Morph-X debugger:
File>>Tools>>Options>>Development>>Execute business operations in CIL ==> No
The source document cannot be processed until you assign a posting definitions to the source document in the Transaction posting definition form.
Simply disable posting definitions here: General ledger >> Setup >> General ledger parameters
AX 2009 offers the GDPdU (Grundsätze zum Datenzugriff und zur Prüfbarkeit digitaler Unterlagen) Export in the German Layer for which there is a nice Description:
Länderspezifische Funktionalität für Deutschland: GDPdU_80069A_AX2009.pdf
However, the it left completely up to the user to start from scratch. The following is a sample GDPdU definition as a starting point for your configuration (Import using Basic>>Periodic>>Import/Export>>Import)
Definition file: GDPdU Definition.def
Data file: GDPdU Definition.dat