I need to sync entities from Ms Dynamics Crm 2015 - On Premise
to my 3rd party application, for this I have set a JavaScript function on the OnSave event of the Entites( eg. account) I can access all of the attributes and send them to my webservice, but the Id (GuId) of the entity!
how can I access the Id (or set it manually) on this event?!
Xrm.Page.getAttribute("accountid")
or Xrm.Page.getAttribute("id")
both return null, so I can not setValue using them.
Also Xrm.Page.data.entity.getId()
returns ""
which is probably logical, since Object has not been inserted in the db yet, this is the reason which makes inserting a runtime generated guid for the entety seems doable !
P.S.
I know I can do same thing with plugins, which I have gone through, but the problem there is that when I register my plugin for Update
message it gets called a lot of times, (mostly when it has been set for invoice
), this is the reason that made me go with the JScript, since the OnSave
Event seems more logical than the Update
Message of the plugin
As you already found out, records which have not yet been saved have no ID. That's by design (and obvious).
Also, IDs being PKs in the database, they are handled by the system and cannot be touched or hand-crafted.
Your best bet to keep a similar behavior would be a Post-Operation Create
plugin living outside the sandbox (Isolation mode: None
).
Another good option would be to pull data instead of pushing it: the 3rd party application can periodically fetch new records through any of the exposed APIs (REST, SOAP, SDK ... there are many options).