diff --git a/VIPSWeb/settings.py b/VIPSWeb/settings.py
index ed1ef3c630ee6c39c2a503f68ac70a6a1236b30a..62faca8f5622f39ed1968173cdc0deb42cc0151b 100644
--- a/VIPSWeb/settings.py
+++ b/VIPSWeb/settings.py
@@ -137,6 +137,7 @@ INSTALLED_APPS = (
     'cerealblotchmodels',
     'calculators',
     'roughage',
+    'applefruitmoth',
     'fusarium',
     'security',
     'VIPSWeb'
diff --git a/VIPSWeb/urls.py b/VIPSWeb/urls.py
index 5d4f571e35625867a6481e466d87176e854b7ad1..df85d26b345093e558a613013da5d682592a7212 100644
--- a/VIPSWeb/urls.py
+++ b/VIPSWeb/urls.py
@@ -50,6 +50,7 @@ urlpatterns = patterns('',
     url(r'^roughage/', include('roughage.urls', namespace = "roughage")),
     url(r'^security/', include('security.urls', namespace = "security")),
     url(r'^fusarium/', include('fusarium.urls', namespace = "fusarium")),
+    url(r'^applefruitmoth/', include('applefruitmoth.urls', namespace = "applefruitmoth")),
     # Uncomment the next line to enable the admin:
     url(r'^admin/', include(admin.site.urls)),
     url(r'^tinymce/', include('tinymce.urls')),
diff --git a/applefruitmoth/__init__.py b/applefruitmoth/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/applefruitmoth/admin.py b/applefruitmoth/admin.py
new file mode 100644
index 0000000000000000000000000000000000000000..8c38f3f3dad51e4585f3984282c2a4bec5349c1e
--- /dev/null
+++ b/applefruitmoth/admin.py
@@ -0,0 +1,3 @@
+from django.contrib import admin
+
+# Register your models here.
diff --git a/applefruitmoth/locale/nb/LC_MESSAGES/django.mo b/applefruitmoth/locale/nb/LC_MESSAGES/django.mo
new file mode 100644
index 0000000000000000000000000000000000000000..8059c528026978fb9ef90f9de92b26a52f068b24
Binary files /dev/null and b/applefruitmoth/locale/nb/LC_MESSAGES/django.mo differ
diff --git a/applefruitmoth/locale/nb/LC_MESSAGES/django.po b/applefruitmoth/locale/nb/LC_MESSAGES/django.po
new file mode 100644
index 0000000000000000000000000000000000000000..78fbdcee2ed067df7e7d41796157c36819882ab3
--- /dev/null
+++ b/applefruitmoth/locale/nb/LC_MESSAGES/django.po
@@ -0,0 +1,33 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-04-08 16:28+0200\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: templates/applefruitmoth/index.html:25
+#: templates/applefruitmoth/index.html:27
+msgid "Apple fruit moth forecasting"
+msgstr "Rognebærmøllvarsling"
+
+#: templates/applefruitmoth/index.html:32
+msgid "Description of apple fruit moth forecasting"
+msgstr "Beskrivelse av rognebærmøllvarslingen"
+
+#: templates/applefruitmoth/index.html:33
+msgid "Messages"
+msgstr "Meldinger"
+
diff --git a/applefruitmoth/migrations/__init__.py b/applefruitmoth/migrations/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/applefruitmoth/models.py b/applefruitmoth/models.py
new file mode 100644
index 0000000000000000000000000000000000000000..71a836239075aa6e6e4ecb700e9c42c95c022d91
--- /dev/null
+++ b/applefruitmoth/models.py
@@ -0,0 +1,3 @@
+from django.db import models
+
+# Create your models here.
diff --git a/applefruitmoth/static/applefruitmoth/js/map.js b/applefruitmoth/static/applefruitmoth/js/map.js
new file mode 100644
index 0000000000000000000000000000000000000000..9730a1449c484ddce2754c9e7fa68417c0472533
--- /dev/null
+++ b/applefruitmoth/static/applefruitmoth/js/map.js
@@ -0,0 +1,101 @@
+/*
+ * Copyright (c) 2016 NIBIO <http://www.nibio.no/>. 
+ * 
+ * This file is part of VIPSWeb.
+ * VIPSWeb is free software: you can redistribute it and/or modify
+ * it under the terms of the NIBIO Open Source License as published by 
+ * NIBIO, either version 1 of the License, or (at your option) any
+ * later version.
+ * 
+ * VIPSWeb is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * NIBIO Open Source License for more details.
+ * 
+ * You should have received a copy of the NIBIO Open Source License
+ * along with VIPSWeb.  If not, see <http://www.nibio.no/licenses/>.
+ * 
+ */
+
+var initMap = function(container, mapAttribution)
+{
+	// Creating background layer, Open Street Map is default
+	var backgroundLayer = new ol.layer.Tile({
+   	 	source: new ol.source.OSM({
+   	 					attributions: [
+                           new ol.Attribution({
+                             html: mapAttribution
+                           })
+                         ]
+                   })
+    });
+	
+	forecastLayer = new ol.layer.Vector({
+		source: new ol.source.Vector({
+			url: "http://" + settings.vipslogicServerName + "/rest/applefruitmoth/observationsites/kml/2016",
+			format: new ol.format.KML({"extractAttributes":true}),
+			projection: ol.proj.get('EPSG:3857')
+		})
+	});
+	// Layer for popup
+	var popOverlay = new ol.Overlay({
+	  element: document.getElementById("popover")
+	});
+	
+	// Creating the map
+	map = new ol.Map({
+			target: container,
+			layers: [backgroundLayer, forecastLayer],
+			overlays: [popOverlay],
+			renderer: 'canvas'
+	});
+	
+	// Setting zoom and center for the map (need to do this after creating map. so that we can transform our
+	// center to correct map projection)
+	var view = new ol.View({
+		center: ol.proj.transform([9,61], 'EPSG:4326', map.getView().getProjection().getCode()),
+		zoom: 6
+	});
+	map.setView(view);
+	
+	// Using Bootstrap's popover plugin. See http://getbootstrap.com/javascript/#popovers
+	var poiDetails = $("#popover");
+	
+	// State cariable
+	var currentClickedFeature = false;
+	
+	// Displays popup with forecasts for a given station
+    // (if there is a station where the click event is fired)
+	var displayFeatureDetails = function(pixel, coordinate) {
+	      var feature = map.forEachFeatureAtPixel(pixel, function(feature,layer){
+	    	 return feature; 
+	      });
+	      
+	      if (feature) {
+	    	  // Position the popup, and hiding it
+	    	  // Resetting information from (possible) former popups
+	    	  var geometry = feature.getGeometry();
+		      popOverlay.setPosition(geometry.getCoordinates());
+	    	  poiDetails.popover('destroy');
+	    	  currentClickedFeature = feature;
+	    	  poiDetails.popover({
+	          		animation: true,
+	          		trigger: 'manual',
+	          		html: true,
+	          		placement: "auto top",
+	          		title: feature.get("name"),
+	          		content: feature.get("description")
+	          	});
+	          	
+	          	poiDetails.popover('show');
+	      } else {
+	    	  currentClickedFeature = null;
+	    	  poiDetails.popover('destroy');
+	      }
+	 };
+	// On click, display forecasts in popup
+		map.on('singleclick', function(evt) {
+			var pixel = map.getEventPixel(evt.originalEvent);
+			  displayFeatureDetails(pixel);
+			});
+}
\ No newline at end of file
diff --git a/applefruitmoth/templates/applefruitmoth/index.html b/applefruitmoth/templates/applefruitmoth/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..b1af8b4e99d270619c84cc476a870056b5271127
--- /dev/null
+++ b/applefruitmoth/templates/applefruitmoth/index.html
@@ -0,0 +1,77 @@
+{% extends "base.html" %}
+{% load staticfiles %}
+{% comment %}
+
+#
+# Copyright (c) 2016 NIBIO <http://www.nibio.no/>. 
+# 
+# This file is part of VIPSWeb.
+# VIPSWeb is free software: you can redistribute it and/or modify
+# it under the terms of the NIBIO Open Source License as published by 
+# NIBIO, either version 1 of the License, or (at your option) any
+# later version.
+# 
+# VIPSWeb is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# NIBIO Open Source License for more details.
+#
+# You should have received a copy of the NIBIO Open Source License
+# along with VIPSWeb.  If not, see <http://www.nibio.no/licenses/>.
+# 
+ 
+{% endcomment %}
+{% load i18n %}
+{% block title%}{% trans "Apple fruit moth forecasting" %}{%endblock%}
+{% block content %}
+<h1>{% trans "Apple fruit moth forecasting" %}</h1>
+<div class="singleBlockContainer">
+	
+	<div class="row">
+		<div class="col-md-6">
+			<p>{% trans "Description of apple fruit moth forecasting"%}</p>
+			<h2>{% trans "Messages" %}</h2>
+			{% for message in vips_messages %}
+			<div class="panel-group" id="accordion">
+			  <div class="panel panel-default">
+			    <div class="panel-heading">
+			      <h4 class="panel-title">
+			        <a data-toggle="collapse" data-parent="#accordion" href="#collapse{{message.message_id}}">
+			        {{message.date_pub|date:"Y-m-d"}}: {{message.heading}}</a>
+			      </h4>
+			    </div>
+			    <div id="collapse1" class="panel-collapse collapse{% if forloop.first %} in{% endif %}">
+			      <div class="panel-body">
+			      		<p class="lead">{{message.lead_paragraph}}</p>
+			      		<p>{{message.body}}</p>
+			      	</div>
+			    </div>
+			  </div>
+			</div>
+  			{% endfor %}
+
+		</div> 
+		<div class="col-md-6">
+			<div id="appleFruitMothForecastMap" class="map" style="height: 600px;"><div id="popover"></div></div>
+		</div>
+	</div>
+</div>
+
+
+{% endblock %}
+{% block customCSS %}
+<link rel="stylesheet" href="{% static "css/3rdparty/ol.css" %}" type="text/css">
+{% endblock %}
+{% block customJS %}
+<script type="text/javascript" src="{% static "js/3rdparty/ol-debug.js" %}"></script>
+<script type="text/javascript" src="{% url "views.settings_js" %}"></script>
+<script type="text/javascript" src="{% static "js/util.js" %}"></script>
+<script type="text/javascript" src="{% static "applefruitmoth/js/map.js" %}"></script>
+<script type="text/javascript">
+	$(document).ready(function() {
+		
+		
+		initMap("appleFruitMothForecastMap","{{settings.MAP_ATTRIBUTION|safe}}");
+	});
+</script>
+{% endblock %}
\ No newline at end of file
diff --git a/applefruitmoth/tests.py b/applefruitmoth/tests.py
new file mode 100644
index 0000000000000000000000000000000000000000..7ce503c2dd97ba78597f6ff6e4393132753573f6
--- /dev/null
+++ b/applefruitmoth/tests.py
@@ -0,0 +1,3 @@
+from django.test import TestCase
+
+# Create your tests here.
diff --git a/applefruitmoth/urls.py b/applefruitmoth/urls.py
new file mode 100644
index 0000000000000000000000000000000000000000..a4afed3764a751cf2af5382b124f819f5e271c83
--- /dev/null
+++ b/applefruitmoth/urls.py
@@ -0,0 +1,25 @@
+#
+# Copyright (c) 2016 NIBIO <http://www.nibio.no/>. 
+# 
+# This file is part of VIPSWeb.
+# VIPSWeb is free software: you can redistribute it and/or modify
+# it under the terms of the NIBIO Open Source License as published by 
+# NIBIO, either version 1 of the License, or (at your option) any
+# later version.
+# 
+# VIPSWeb is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# NIBIO Open Source License for more details.
+#
+# You should have received a copy of the NIBIO Open Source License
+# along with VIPSWeb.  If not, see <http://www.nibio.no/licenses/>.
+# 
+
+from django.conf.urls import patterns, url
+
+from applefruitmoth import views
+
+urlpatterns = patterns('',
+    url(r'^$', views.index, name='index'),
+)
\ No newline at end of file
diff --git a/applefruitmoth/views.py b/applefruitmoth/views.py
new file mode 100644
index 0000000000000000000000000000000000000000..2323013643a75e207d2c1e57fb531fe20c0cec46
--- /dev/null
+++ b/applefruitmoth/views.py
@@ -0,0 +1,9 @@
+from django.shortcuts import render
+
+# Create your views here.
+from vips_messages.models import Message, MessageTag
+
+def index(request):
+    vips_messages = Message.get_messages_by_tag(4) # Getting apple fruit moth messages
+    context = {"vips_messages": vips_messages}
+    return render(request, 'applefruitmoth/index.html', context)