SharePoint Application Configuration – Application Configuration

imageLately I’ve been worked a lot with projects where we have tried to find a good way to give site collection owner or farm admins possibilities to maintain and even change the way how our custom SharePoint application (web part, controls etc.) work. The answer to this is by using configuration data. The main reason to use configuration is of course flexibility. User can change things, like connection strings, if they need to.

Other thing related to this is reusability. On organization things can and will change after the new applications is finished and taken to production. When we are talking about SharePoint this is an everyday situation because the whole platform is meant to change when you organization is changing. Having the things behind some configuration you can develop features that can be used in many different organizations and cases.

For development firms this means saving on development time and better contribution marking. I have always liked the idea to make features and solutions reusable. It takes a little bit more time to plan things but in many cases this consideration will mean better, cleaner and more user friendly solutions. But to make configuration really works it means that during the planning and development you have to find answer to the following questions.

1. What things should users to be able to change?

2. How to code this solution so that it can be changed and maintained with configurations?

3. Where to store the necessary configurations?

For question one and two there is no easy answer and it always depends on the case. Of course it’s always easy to forget question number two or actually all the questions. Just make the solutions that work on this case and don’t give users and possibility to change anything. Fast, but not very lasting on long term.

But for question number three there are few good possibilities that SharePoint offers.

· SharePoint Property Bag

· Web.config

· SharePoint List

· SharePoint Web Part

· Hierarchical Object Store

On this series I will go through them and try to give you a short idea of how they work, what are the pros and cons of them so that you can consider which of them could suite for your application. I will start with one of my favorites Property Bag. My first attend was that this post would include the actual how to part also, but I want to keep things short and the introduction part became longer that I was expected. I know how frustrating it is to read how to post where it too much scrolling before they get to the point.

So the first how to part will be published in a few days.

SharePoint Application Configuration part 1 – Property Bag

Advertisement

Vaatimusmäärittely – valtakunnallinen lippujärjestelmä

Sirukortti rahaa

Menet nettipalveluun tai rautatieaseman palvelupisteeseen. Pyydät lipun Tampereelta Somerolle. Voit maksaa koko matkan kerrallaan ja saat käteesi sekä lipun, joka kelpaa sekä junaan Tampereelta Saloon että bussiin välillä Salo Somero. Hintaa lipulle ei tule sen enempää kuin nytkään, mikäli ostaisit liput erikseen. Matka sujuu mukavasti ja liikennöitsijät saavat parin päivän sisällä tililleen heille kuuluvan osuuden matkoista.

Tämä on se tavoitetila avattuna user story muotoon, joka sisältyy uuden hallituksen tavoitteeseen valtakunnallisesta lippujärjestelmästä. Asia ei sinänsä ole uusi, sillä järjestelmää on pohdittu jo viime hallituksen aikana. Mutta nyt uuteen hallitusohjelmaan asiasta saatiin jo ihan virallinen kirjaus.

Otetaan käyttöön valtakunnallinen joukkoliikenteen lippujärjestelmä, jossa yhdellä matka-kortilla voi matkustaa kaikissa joukkoliikennevälineissä. Toteutetaan valtakunnallinen joukkoliikenteen aikataulu- ja reittipalvelu.

Varsinaisesti tuossa on kaksi erillistä sovelluskokonaisuutta ja asiaa, mutta ilman valtakunnallista joukkoliikenteen aikataulu- ja reittisovellusta tuskin saadaan mitään lippujärjestelmää aikaiseksi. Näin kahdella lauseella kirjoitettuna ja vain käyttäjän näkökulmasta ajateltua asia tuntuu hyvälle ja helpolle. Yhdestä luukusta koko matkalle tarkoitettu lippu palvelisi varmasti haja-asutusalueen ihmisiä ja kannustaisi joukkoliikenteen käyttöön. Perusperiaate on selkeä ja neljä vuotta pitkä aika.

Vai onko? Kaikki eivät tähän usko, kuten TS:n uutisessa “Valtakunnallisen matkalipun toteutuminen epäilyttää” kerrottaan.

Asiantuntijoiden mukaan kaikkeen joukkoliikenteeseen kelpaavan lipun toteutus on teknisesti ongelmallista. Lisäksi moni liikennöitsijä suhtautuu suunnitelmiin epäilevästi. Uudistus kustantaisi miljoonia euroja, ja osa summasta lankeaisi liikennöitsijöiden maksettavaksi.

Leikitellään hetki asian kanssa ja pohditaan eri toteutustapoja. Mielestäni selkein lähtökohta järjestelmälle on ottaa mallia vanhasta, mutta erittäin toimivasta, puolustusvoimien litterasta. Lätkäistään matkustajalle lippu käteen ja hän voi vain näyttää ko. lippua esimerkiksi bussissa tai junassa. Perille pääsee, kunhan vain löytää oikean kulkuvälineen. En tiedä miten litteralla matkustaessa matka korvataan liikennöitsijälle, mutta vaihtoehtona voisi olla liikennöitsijän ilmoitus matkasta valtiolle ja rahat kilisevät tilille.

Valtakunnallisen lippujärjestelmän haasteisiin kuuluu ehdottomasti maksujärjestelmän luominen. VR:llä tilanne on mielestäni hyvä, sillä konduktöörit voivat lukea useita erityyppisiä lippuja. Parhaana esimerkkinä voisi mainita viivakoodiluvun kännykästä. Mutta kaikissa valtakunnallisen lippujärjestelmän piiriin kuuluvissa liikennevälineissä tilanne ei ole näin hyvä. Seuraavassa on pohdittu muutamia eri vaihtoehtoja lippujärjestelmän toteuttamiseksi.

Valtakunnallinen littera

Nopeasti vastaavan tapahtumaketjun toteutus tuntuu yksinkertaiselta. Henkilö vain lataa yleislipun kännykkään tai tulostaa sen paperille ja homma pelaa. Yhtä koodia näyttämällä pääsee kaikkiin liikennevälineisiin. Tämä ratkaisu on ainakin nopea tapa järjestää asia. Haasteeksi tässä nousee kuitenkin rahastus. Miten kohdistaa matkan maksu juuri kyseiselle henkilölle?

  • Kysytään aina henkilön laskutustietoja
    • Vie liikaa aikaa. Asia pitäisi tehdä automaattisesti.
  • Koko matka on ostettava etukäteen ja järjestelmä jakaa laskun eri liikennöitsijöiden kesken.
    • Entä mahdolliset muutokset kesken matkan, miten hoidetaan esimerkiksi junatyypin vaihtuminen?
    • Ei ole tarkoituksen mukaista, että muutoksen kohdalla henkilön pitäisi löytää jostain palvelupiste, jossa muutoksen voisi tehdä.
    • Muutosta ei myöskään voida tehdä esimerkiksi liikkuvasta bussissa, sillä se veisi liikaa aikaa ja tarvittavat tietoliikenneyhteydet eivät välttämättä toimi.
  • Toki voisimme ajatella, että littera luetaan aina liikennevälineeseen noustessa vaikka viivakoodilukijalla. Tällöin matka voidaan ainakin jälkikäteen kohdistaa tiettyyn tilaukseen ja laskuttaa sitten tilaajalta.
  • Esiin nousee heti laitteiden kustannus. Toki hinta on alhaisempi kuin etäluettavien korttien lukulaitteen hankinta, mutta liikennevälineiden määrä on valtava. Emme puhu mistään pienestä hankinnasta.

Valtakunnallinen matkakortti

Yksi ehdotus on luoda valtakunnallinen matkakortti. Mitä tämä sitten käytännössä tarkoittaa? Ilmeisesti ainut mahdollinen vaihtoehto olisi ladata matkakorttiin etukäteen rahaa.

  • Eroaako tämä sitten nykytilanteesta kovinkaan paljon? Rehellisesti sanottuna ei. Ainoastaan nopeus puhuu matkakortin puolesta, muuten matkan voi maksaa vaikka käteisellä.
  • Nykyiset matkakortit ovat tekniikaltaan toki hyvin pitkälti samantyyppisiä (HF taajuudella toimia RFID kortteja), mutta lukulaitteiden toiminnassa on eroja. Lukulaitteiden sovellukset pitäisi siis harmonisoida, joka ei ole halpa asia toteuttaa.
  • Lukulaitteita ei myöskään ole kaikissa tarvittavissa liikennevälineissä, jolloin lukulaitteiden maksu lankeaa lähes varmasti matkustajille.
  • Kyseessä kun ei ole halpa investointi.
  • Tässä taloustilanteessa ei voida realistisesti ajatella, että valtio kustantaisi kaikkiin busseihin, juniin jne. lukulaitteita.

Sirukorttiratkaisu

Ainakin monen kaupungin joukkoliikennekortti on nykyään etäluettava kortti, josta puhuttiin edellä. Toinen vaihtoehto olisi tietenkin ottaa mallia pankkikortista ja luoda järjestelmä sirukortin varaan. Ainakin useimmissa valtakunnallisen matkakorttijärjestelmän alle ajatellussa liikennevälineessä olisi sirukortin lukija valmiina.

Tässä vain nousee esille se fakta, että meillä on jo tällainen sirukortti. Sitä kutsutaan pankkikortiksi. Niin ja myös sirukortin kanssa eteen tulee lukijoiden erilaiset sovellukset. Päivitystä tarvitaan tässäkin ratkaisussa. Rahaa tuskin löytyy valtiolta tai yrityksiltä.

Valtio tukemaan kaikkea matkustamista

Tämä on kohtalaisen kommunistinen ajattelutapa, mutta yksi vaihtoehto muiden joukossa on harmonisoida matkojen hinnat. Harmonisoinnilla tarkoitan sitä, että sovitaan valtakunnallisesti eri liikennevälineiden hinnat samalle tasolle. Unohdetaan kilpailu ja tuetaan liikkumista valtion rahoista.

  • Sovitaan tietyn pituisille matkoille yhteiset hinnat liikennevälineestä riippumatta. Valtio tukee eri liikennevälineiden matkoja, jotta sama hinta on mahdollinen.
  • Matkustajat ostavat eri pituisia matkoja etukäteen netistä ja esimerkiksi tulostavat ne paperille. Koska hinnat ovat samat kaikilla liikennevälineillä.
  • Liikenne välineessä sitten leimataan matka käytetyksi. Liikennöitsijät raportoivat montako matkaa on käytetty.
  • Rahat ohjataan yhteen ja samaan keskusorganisaatioon, josta niitä tilitetään liikennöintiä tarjoaville yhtiöille matkustajamäärien mukaan.

Heitin tämän vaihtoehdon vain niin sanotusti ilmaan. Itse en tällaista suostuisi rahoittamaan verovaroin, mutta tarkoituksenani olikin pohtia vain eri vaihtoehtoja.

Yhdistelmäkortti – rajapinnat, standardit ja suositukset

Loppujen lopuksi lukulaitteiden ja maksujärjestelmien hankinnassa ja käyttöönotossa on kyse järjestelmien yhteensovittamisesta. Kenties ainut tapa toteuttaa valtakunnallinen lippujärjestelmä lienee yhdistelmäkortin luominen. Tämä tarkoittaa sitä, että luodaan kortti, jota voidaan lukea RFID:llä, viivakoodilla ja sirulukijalla.

Luodaan lukemiseen ja tiedäon välittämiseen avoimet standardit ja rajapinnat. Annetaan muutokseen tarpeeksi aikaa ja tehdään standardin mukaisista laitteista tulevaisuudessa välttämättömiä. Näin annetaan eri laitteiden valmistajille mahdollisuus rakentaa ja päivittää laitteensa tukemaan valtakunnallista järjestelmää.

Tällöin kenties pääsisimme tilanteeseen, jossa eri liikennöitsijöiden rahastusjärjestelmät ryhtyvät tukemaan tätä valtakunnallista järjestelmää pidemmän ajan kuluessa. Tämän jälkeen yhtenäisen rahastusjärjestelmän rakentaminen olisi helpompaa ja matkustajan rahastaminen kävisi helposti tilanteesta ja matkustusvälineestä riippumatta.

Kyseessä ei missään tapauksessa ole yhden hallituskauden aikana tehtävä asia. Kuntien ja valtion omistamien liikennöintiyritysten kohdalla tätä yhtenäistä järjestelmää tukevien laitteiden hankinta on vielä helposti tehtävissä. Siitä tehdään vaatimus kilpailutusvaiheessa. Mutta yksityisten yritysten kohdalla tilanne voi olla vaikeampi. Kenties asian voisi hoitaa jonkin (vero)porkkanan kautta. Toki pakottamallakin asian voisi hoitaa, mutta tämä ei olisi kestävä ratkaisu.

Ei kenties vielä

Mitä enemmän pyörittää mielessään asiaan liittyviä puolia ja erikoistapauksia, niin sitä vaikeammaksi valtakunnallisen matkalipun kehittäminen tulee. Ajatus on kuitenkin mielestäni ihan tavoiteltava. On vain löydettävä ratkaisu, joka on halpa, nopea käyttää ja joka jollain tapaa helpottaa maksamista. En itse suostuisi ottamaan käyttöön jotain uutta korttia tai tulostetta, mikäli pienemmälä vaivalla voin maksaa matkani suoraan käteisellä tai pankkikortilla.

Joku voisi jopa ajatella, että onko valtakunnalliselle lipulle edes käyttöä. Pidemmillä matkoilla en ole aivan vakuuttunut, mutta lähikuntien rajat ylittävillä ratkaisuilla on selkeästi tilausta. Toki meistä moni matkustaa jo nyt esimerkiksi junalla ja hyppää sitten paikallisbussiin, jossa joutuu maksamaan eri maksuvälineellä. Tällöin yksi kortti olisi perusteltua.

Itse olisin realistinen ja lähtisin kehittämään ensin valtakunnallista aikataulujärjestelmää. Jo siinä on tarpeeksi tekemistä neljäksi vuodeksi. Todellinen ratkaisu valtakunnalliseen  taitaa kuitenkin löytyä avoimien rajapintojen ja vapaaehtoisten laitepäivitysten kautta.

Tuleeko teille mieleen muita ratkaisuja tai ongelmia valtakunnallisen lippujärjestelmän toteuttamisessa?

How to Synchronize Folders Like My Documents to SkyDrive

Few weeks ago I run in a case where I had to configure folder synchronization with SkyDrive. Requirements and starting point for the case was:

  • Windows version Windows 7 Home Premium
  • Customer wanted to have her files locally inside My Documents library and have them in SkyDrive also.
  • She wanted to have everything synchronized so that she could made changes to files with Office Web Apps also.
  • Files and folders have to be created, deleted and synchronized automatically no mater is the action done on users computer or SkyDrive.

As you probably know there is no OOTB solution for this. Of course there is Windows Live Mesh. But files synced with Mesh will be saved on a special folder in SkyDrive where you are not able to view and edit them with browser and the maximum storage space is 5 GB. This is by the way one thing that I don’t understand why is it so.

When I was thinking an good solution and made some search I found a lot questions but not very good solutions. At least not from one blog or site.

  • Quite many solutions just told that you can map the SkyDrive folder but that is only one part of a solution.
  • Other part is that you have to be able to make the synchronization. In Windows 7 Professional (and above) there is an feature called Offline Files but in Home Premium you don’t have it. I haven’t try but maybe you can use that but I found an good free 3rd party solution for this.

Just as a note there are few interesting CodePlex open source project (link down below) ongoing about this matter.

But let’s get started.

Mapping the My Documents Folder

As a source I used this article from Jessica Cam Wong (@jecw) How to Upload & Sync Files to SkyDrive from Windows Explorer. I won’t go through all the things from that solution. Only those that are relevant.

Retrieve your WebDAV addresses from SkyDrive

  1. Open Office 2010 (Word or Excel)
  2. Create an new document and start to save it. From top menu File > Save & Send > Save to Web.
  3. Login to SkyDrive if necessary.
  4. Select a folder that you want to start using as sync folder. Then press Save As.
  1. I think it’s more practical to use folder inside SkyDrive for this issue.image
  • When the Save As dialog opens, click on the address bar to copy the address.SNAGHTML9f4c536
  • Now when you have the address you can make normal server mapping to that folder. So, open windows explorer and select Map Network drive.
  • Select free drive letter and paste the copied URL to the Folder text field.image
  • Now you have your folders ready to be synchronized.

Configure the Synchronize Service

After many test, try and fail I made an decision to use 3rd party software called GoodSync. There is some other programs for sure that can make this same thing but GoodSync was a) free tool b) easy to use c) was working in all the necessary situation.

  1. Download and install GoodSync (link above).
  2. After installation you have to create one synchronize job for each main folder you want to sync. SNAGHTMLa1c27ef
  3. Next you have to select the folder from your computer that you want to use as file saving place (so called left folder) and then choose the mapped driver made above as right folder.SNAGHTMLa5c790c
  4. It’s a good practice to make one analyze and synchronization manually. Especially if you already have something on the folder in computer. This way you can see that everything is working correctly. So press Analyze button.
  5. When the analyze is finished press Sync to start the synchronization process.
  6. Next you have to configure GoodSync to be started when Windows starts and give the necessary sync options. There are a lot of settings on the program but here are the most basic ones to get everything working.
  1. From the upper menu select Tools > Program Options. From General settings make sure that “Start GoodSync when Windows starts” is enabled and press OK.SNAGHTMLb45afba
  2. Then press the Auto button (button with clock image on it).
  3. From Auto settings you can adjust synchronizing settings as you want to. On this case I preferred to have the following settings:
    • On GoodSync start, delay sec = 0, action=Sync
    • On Folders Connect, action=Sync
    • On File Change, action=Sync
    • On Logoff, action=Sync
    • Every 0 Hours 5 Min, action=Sync
    • Do not Sync if changed files more than 100% (this means that sync always)
    • Automatically resolve conflicts = Newer File Wins
    • Enable Auto Clear the tree after Sync or Analyze with no changesSNAGHTMLba1ac33
  • Press OK and you are done!

Final Words

As I mentioned earlier this solutions sustains on the use of 3rd software. Maybe someone don’t like that idea but in this case getting things done was most important. There is actually an very interesting SkyDrive .Net API Client and SkyDrive Synchronizer project on CodePlex. You could use those also but for example SkyDrive Synchronizer is command line only and is still one way synchronization only. But still it’s worth of stay tuned of these open source tools.

Blog Opening

Jaahas, muutaman vuoden tauon jälkeen polkastaan taas blogi käyntiin. Muutetaan samalla hieman kirjoitusten tyyppiä. Koitan jatkossa keskittyä enemmän IT –alan tapahtumiin, tietoyhteiskunnan kuulumisiin, sekä jakaa tietämystäni ammatillisesta näkökulmasta.

Työskentelen keskisuuressa IT –talossa sovellusarkkitehtina pääasiassa Microsoftin työvälineillä ja SharePoint alustalla. Päätoimena minulla on sovellusten suunnittelu ja jonkin verran myös kehitystä. Toimin tiivisti asiakasrajapinnassa, joten koetan tuoda sovelluskehitykseen kenties näkökulmaan tältä tasolta. Päivittäinen huolenaiheeni on se, miten kuvata, kertoa ja ohjata sovelluskehitystä asiakkaan haluamaan lopputulokseen. Eli jos nyt satun törmäämään johonkin mielenkiintoiseen asiaan tai ratkaisuun, niin pyrin siitä kirjoittaa.

Sitten hieman blogin rakenteesta. Päätin nyt kokeilla asioiden tarkempaa kategorisointia, sekä eri kielillä kirjoittamista. Yleiset esimerkiksi kotimaan tietoyhteiskuntaan liittyvät kirjoitukset tulen kirjoittamaan suomeksi. Ammatilliset ja enemmän tekniset kirjoitukset teen englanniksi, jotta ne olisivat kaikkien saatavilla. En tiedä onko tämä lopulta toimiva ratkaisu, mutta ainakaan aluksi en halua lähteä kahden blogin järjestelmään ihan aikataulusyistä.

And in English,

This is now my first ever blog post where I’m using English. Few years ago I was blogging quite actively but then I just run out of energy. Let’s now try again with a little bit new approach.

I’m working as Software Architect in medium size IT company. Mainly I’m working with Microsoft’s products like C#, .Net and especially SharePoint. On my daily work I’m negotiating with our customers about system requirements and needs and trying to put those in a form that our developers can use during the software development.

On this blog I will use also English when I’m writing something work or technical related issues. So, every time I find something interesting on the fields of SharePoint, Microsoft development or general things from the IT field I will try to write an post. I all ready have some things and tips in my mind so stay tuned.

MatchPoint Framework to SharePoint

As you may have noticed I have every now and then mentioned MatchPoint and SharePoint. Company where I’m working is the first official MatchPoint partner in Finland. I’m also a certified developer of the framework. But what actually is MatchPoint and why should you use it together with your SharePoint solution?

First of all MatchPoint is a framework solution that brings more flexibility and possibilities to solution developers and administrators. Framework is made by company called Colygon from Switzerland. It means that the framework internationality used and maintained. What I can say as developer is that the flexibility is create and the response time from the community (www.matchpointcommunity.com) and support team from Colygon is support is good.

One important thing to notice is that MatchPoint isn’t solution that offers for example readymade web parts or complete functionality. Offered tools are especially target to developers, heavy users and administrators. What the frameworks offers are things like extended metadata and tag management, more flexible template management, easier and faster web part development components and true reusable framework for web parts.

On the images below you can find all the reusable web parts frames included to MatchPoint framework.

image

On this other image you can find all the components from the service layer and API level.

image

Why to Use?

If I should give you 7 reasons why you should use MatchPoint framework they would be:

  1. You are able to extend you solution with features not available OOTB.
  2. Development time is much lower than usually.
  3. You are able to maintain your custom solution from one place.
  4. You can do more things straight from UI than with OOTB SharePoint = no coding.
  5. Even your or your customers power users can easily learn and maintain the system.
  6. The framework is internationally maintained and developed = lower risk in continuation, support and upgrades.
  7. There is active developer community and very low organization from framework developers and customer support to partners and developers.

Of course you have to ask why not to use it? One thing is that using a framework means that you are doing some kind of customization. Some one could thing that is bad but almost in all SharePoint environments there is some customization done. When I have to change OOTB features I rather do it with controlled tools that has been proven earlier in other projects.

From my opinion the tag and provision framework are the best things that MatchPoint can offer. OOTB SharePoint term management is great but MatchPoint offers a lot more like. Tag inheritance and automatic tag creation. Inheritance means that I can tag some site (or library etc.) with tag like Finland and every item or document can then inherit this information from the site level.

Provision framework offers more flexible way to create templates right from the browser. Users can for example create a team site, add new lists and web parts and then save this site as a template. Others can then use this template to create new team sites. Ok this can also be done with OOTB SharePoint but what if you have to add new web part to default page and add n column to the task list? Normally this would mean quite a lot time or even work especially if you are using templates made with Visual Studio. But with MatchPoint you will have one XML file that holds all the necessary elements and settings of the template and you can modify that file with easy to use editor.

Short Example

Here you can find a short video of an example where I’m making a very simple web part that is listing links from link lists from multiple sites. I won’t go this through very deeply, at least not yet. But what this video can show you are how fast and easy you can make web parts and nice functionality compared to traditional development.

The scenario here is that we have a site that has multiple sub sites. On each site there is and Announcement list called Announcements that has an extra column called Highlight. The request is that on the top level site all the announcements marked as Highlight will be shown on a web part.

More information about the framework can be found from the web site www.colygon.com/technical-features. I will also cover these things more deeply on upcoming post. If you have some questions just send me and message or contact people from Colygon. They also have very nice webinars where you can see this MatchPoint in actions.