Ik ben bezig met het maken van een plugin voor Microsoft CRM 4.0 die alle mutaties op de gegevens synchroniseert met een andere applicatie. Het is de bedoeling dat elke synchronisatie-operatie gelogd wordt naar een log-database, zodat er precies nagegaan kan worden of er operaties mislukt zijn, en zo ja, welke gegevens niet gesynchroniseerd konden worden.
Nu kan het zo zijn dat, om wat voor reden dan ook, de log-database niet bereikbaar is (database down, verkeerde connectionstring of verkeerde credentials) of dat een insert op deze logdatabase mislukt (database constraint, of door locking).
Hiervoor wil ik eigenlijk een fallback-mechanisme hebben waar ik zowel de fout die optrad tijdens het bijwerken van de log-database, alsmede de waardes die eigenlijk naar de log-database gelogd hadden moeten worden, naar toe kan schrijven. Alleen, waar moet ik dan naar toe schrijven?
Mijn eerste gedachte was een simpel tekstbestandje ergens op de server, maar afhankelijk van de context waarin de plugin draait, zou het kunnen zijn dat deze geen rechten heeft om een tekstbestand aan te maken of te vullen. En hoe kom je er dan ooit achter welke user je rechten had moeten geven?
Met andere woorden, ik ben bang voor het volgende:
-> Plugin wordt aangeroepen, en probeert deze aanroep in de logging database te schrijven.
-> Log database kan niet bijgewerkt worden, dus schrijf het verhaal naar een tekstbestand.
-> User waaronder de plugin draait heeft geen rechten om tekstbestand te wijzigen
-> En nu?
Het niet mogen schrijven naar een tekstbestand is imo een configuratie-issue, als de rechten eenmaal goed ingesteld zijn zou je hier geen omkijken naar moeten hebben. Dus wanneer ook dit niet lukt (dit zal met name na een nieuwe deployment het geval kunnen zijn), dan maar een messagebox tonen?
Wie heeft er betere ideeen?
Nu kan het zo zijn dat, om wat voor reden dan ook, de log-database niet bereikbaar is (database down, verkeerde connectionstring of verkeerde credentials) of dat een insert op deze logdatabase mislukt (database constraint, of door locking).
Hiervoor wil ik eigenlijk een fallback-mechanisme hebben waar ik zowel de fout die optrad tijdens het bijwerken van de log-database, alsmede de waardes die eigenlijk naar de log-database gelogd hadden moeten worden, naar toe kan schrijven. Alleen, waar moet ik dan naar toe schrijven?
Mijn eerste gedachte was een simpel tekstbestandje ergens op de server, maar afhankelijk van de context waarin de plugin draait, zou het kunnen zijn dat deze geen rechten heeft om een tekstbestand aan te maken of te vullen. En hoe kom je er dan ooit achter welke user je rechten had moeten geven?
Met andere woorden, ik ben bang voor het volgende:
-> Plugin wordt aangeroepen, en probeert deze aanroep in de logging database te schrijven.
-> Log database kan niet bijgewerkt worden, dus schrijf het verhaal naar een tekstbestand.
-> User waaronder de plugin draait heeft geen rechten om tekstbestand te wijzigen
-> En nu?
Het niet mogen schrijven naar een tekstbestand is imo een configuratie-issue, als de rechten eenmaal goed ingesteld zijn zou je hier geen omkijken naar moeten hebben. Dus wanneer ook dit niet lukt (dit zal met name na een nieuwe deployment het geval kunnen zijn), dan maar een messagebox tonen?
Wie heeft er betere ideeen?